Example #1
0
 public function indexGraficos($value)
 {
     if (Auth::guest()) {
         return view('login');
     } else {
         //datos para gráfico de hallazgos
         $issues_om = array();
         $issues_def = array();
         $issues_deb = array();
         $op_mejora = 0;
         $deficiencia = 0;
         $deb_significativa = 0;
         $issues_all = \Ermtool\Issue::all(['id', 'name', 'description', 'recommendations', 'classification', 'updated_at']);
         $i = 0;
         foreach ($issues_all as $issue) {
             //debemos obtener datos de plan de acción y responsable de plan de acción (si es que hay)
             $action_plan = NULL;
             $action_plan = DB::table('action_plans')->where('issue_id', '=', $issue->id)->first(['id', 'description', 'final_date', 'status', 'stakeholder_id', 'updated_at']);
             if ($action_plan != NULL) {
                 if ($action_plan->stakeholder_id == NULL) {
                     $user->name = "No definido";
                     $user->surnames = "";
                 } else {
                     //obtenemos nombre de responsable
                     $user = DB::table('stakeholders')->where('id', '=', $action_plan->stakeholder_id)->first(['name', 'surnames']);
                 }
                 if (Session::get('languaje') == 'en') {
                     //seteamos status
                     if ($action_plan->status == 0) {
                         $status = "In progress";
                     } else {
                         if ($action_plan->status == 1) {
                             $status = "Closed";
                         }
                     }
                     if ($action_plan->final_date == '0000-00-00') {
                         $final_date = "Error storing plan deadline";
                     } else {
                         //seteamos fecha final
                         $final_date_tmp = new DateTime($action_plan->final_date);
                         $final_date = date_format($final_date_tmp, 'd-m-Y');
                     }
                 } else {
                     //seteamos status
                     if ($action_plan->status == 0) {
                         $status = "En progreso";
                     } else {
                         if ($action_plan->status == 1) {
                             $status = "Cerrado";
                         }
                     }
                     if ($action_plan->final_date == '0000-00-00') {
                         $final_date = "Error al registrar fecha final";
                     } else {
                         //seteamos fecha final
                         $final_date_tmp = new DateTime($action_plan->final_date);
                         $final_date = date_format($final_date_tmp, 'd-m-Y');
                     }
                 }
                 $updated_at_tmp = new DateTime($action_plan->updated_at);
                 $updated_at = date_format($updated_at_tmp, 'd-m-Y');
                 $act_plan = ['id' => $action_plan->id, 'description' => $action_plan->description, 'final_date' => $final_date, 'stakeholder' => $user->name . ' ' . $user->surnames, 'status' => $status];
             } else {
                 $act_plan = NULL;
             }
             if (Session::get('languaje') == 'en') {
                 if ($issue->description == "") {
                     $issue->description = "Without description";
                 }
                 if ($issue->recommendations == "") {
                     $issue->recommendations = "Without recommendations";
                 }
             } else {
                 if ($issue->description == "") {
                     $issue->description = "Sin descripción";
                 }
                 if ($issue->recommendations == "") {
                     $issue->recommendations = "Sin recomendaciones";
                 }
             }
             //determinamos clasificación
             if ($issue->classification == 0) {
                 $op_mejora += 1;
                 $issues_om[$i] = ['id' => $issue->id, 'name' => $issue->name, 'description' => $issue->description, 'recommendations' => $issue->recommendations, 'classification' => $issue->classification, 'updated_at' => $updated_at, 'action_plan' => $act_plan];
             } else {
                 if ($issue->classification == 1) {
                     $deficiencia += 1;
                     $issues_def[$i] = ['id' => $issue->id, 'name' => $issue->name, 'description' => $issue->description, 'recommendations' => $issue->recommendations, 'classification' => $issue->classification, 'updated_at' => $updated_at, 'action_plan' => $act_plan];
                 } else {
                     if ($issue->classification == 2) {
                         $deb_significativa += 1;
                         $issues_deb[$i] = ['id' => $issue->id, 'name' => $issue->name, 'description' => $issue->description, 'recommendations' => $issue->recommendations, 'classification' => $issue->classification, 'updated_at' => $updated_at, 'action_plan' => $act_plan];
                     }
                 }
             }
             $i += 1;
         }
         $planes_ejec = 0;
         //planes en ejecución
         $planes_cerrados = 0;
         //plan sin pruebas abiertas ni en ejecución, pero si cerradas
         //para un gráfico separaremos 3 tipos de planes de acción: planes en planes de auditoria, planes en eval. de controles, y otros: cuando se agreguen genericamente (quizas)
         $action_plans_ctrl = array();
         $action_plans_audit = array();
         $action_plans_others = array();
         $action_plans_closed = array();
         //planes de acción cerrados
         $action_plans_warning = array();
         //planes de acción próximos a cerrar
         $action_plans_danger = array();
         //planes de acción pasados en fecha y aun abiertos
         $action_plans_open = array();
         //planes de acción en los que la fecha de cierre es mayor a 2 meses
         $cont_open = 0;
         $cont_danger = 0;
         $cont_warning = 0;
         $cont_closed = 0;
         $cont_ctrl = 0;
         $cont_audit = 0;
         $others = 0;
         //primero los controlados
         $action_plans = DB::table('action_plans')->join('issues', 'issues.id', '=', 'action_plans.issue_id')->join('control_evaluation', 'control_evaluation.issue_id', '=', 'issues.id')->join('controls', 'controls.id', '=', 'control_evaluation.control_id')->join('stakeholders', 'stakeholders.id', '=', 'action_plans.stakeholder_id')->whereNotNull('control_evaluation.issue_id')->select('action_plans.id', 'action_plans.description', 'action_plans.status', 'action_plans.final_date', 'action_plans.updated_at', 'controls.name as control', 'stakeholders.name as user_name', 'stakeholders.surnames as user_surnames', 'issues.description as issue', 'issues.recommendations')->get();
         $i = 0;
         foreach ($action_plans as $plan) {
             $cont_ctrl += 1;
             if (Session::get('languaje') == 'en') {
                 if ($plan->status == 0) {
                     $status = "In progress";
                 } else {
                     if ($plan->status == 1) {
                         $status = "Closed plan";
                     }
                 }
                 if ($plan->final_date == '0000-00-00') {
                     $final_date = "Error storing plan deadline";
                 } else {
                     //seteamos fecha final
                     $final_date_tmp = new DateTime($plan->final_date);
                     $final_date = date_format($final_date_tmp, 'd-m-Y');
                 }
             } else {
                 if ($plan->status == 0) {
                     $status = "En progreso";
                 } else {
                     if ($plan->status == 1) {
                         $status = "Plan cerrado";
                     }
                 }
                 if ($plan->final_date == '0000-00-00') {
                     $final_date = "Error al registrar fecha final";
                 } else {
                     //seteamos fecha final
                     $final_date_tmp = new DateTime($plan->final_date);
                     $final_date = date_format($final_date_tmp, 'd-m-Y');
                 }
             }
             $updated_at_tmp = new DateTime($plan->updated_at);
             $updated_at = date_format($updated_at_tmp, 'd-m-Y');
             if (Session::get('languaje') == 'en') {
                 if ($plan->description == "") {
                     $plan->description = "Without description";
                 }
                 if ($plan->recommendations == "") {
                     $plan->recommendations = "Without recommendations";
                 }
             } else {
                 if ($plan->description == "") {
                     $plan->description = "Sin descripción";
                 }
                 if ($plan->recommendations == "") {
                     $plan->recommendations = "Sin recomendaciones";
                 }
             }
             $action_plans_ctrl[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'control' => $plan->control, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
             //verificamos para tercer gráfico el tipo de control (abierto, proximo a cerrar, cerrado, falta mucho para que cierre...)
             if ($plan->final_date != NULL) {
                 $fecha_temp = explode('-', $plan->final_date);
                 //obtenemos solo mes y año
                 $fecha_ano = (int) $fecha_temp[0] - (int) date('Y');
                 //obtenemos solo año
                 $fecha = (int) $fecha_temp[1] - (int) date('m');
                 //solo mes
                 $fecha_dia = (int) $fecha_temp[2] - (int) date('d');
                 //solo día
             } else {
                 $fecha_ano = 9999 - (int) date('Y');
                 //año
                 $fecha = 12 - (int) date('m');
                 //mes
                 $fecha_dia = 31 - (int) date('d');
                 //día
             }
             if ($fecha_ano > 0) {
                 if ($plan->status == 1) {
                     $cont_closed += 1;
                     $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                 } else {
                     $cont_open += 1;
                     $action_plans_open[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                 }
             } else {
                 if ($fecha_ano == 0) {
                     if ($fecha >= 2 && $plan->status == 0) {
                         $cont_open += 1;
                         $action_plans_open[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                     } else {
                         if ($fecha < 2 && $fecha >= 0 && $plan->status == 0) {
                             //verificamos día
                             if ($fecha_dia <= 0) {
                                 $cont_danger += 1;
                                 $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                             } else {
                                 $cont_warning += 1;
                                 $action_plans_warning[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                             }
                         } else {
                             if ($fecha < 0 && $plan->status == 0) {
                                 $cont_danger += 1;
                                 $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                             } else {
                                 if ($plan->status == 1) {
                                     $cont_closed += 1;
                                     $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                                 }
                             }
                         }
                     }
                 } else {
                     if ($plan->status == 1) {
                         $cont_closed += 1;
                         $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                     } else {
                         $cont_danger += 1;
                         $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue, 'recommendations' => $plan->recommendations];
                     }
                 }
             }
             $i += 1;
         }
         //ahora para action plans de auditoría
         $action_plans = $this->getActionPlanAudit(NULL);
         $i = 0;
         foreach ($action_plans as $plan) {
             $cont_audit += 1;
             if (Session::get('languaje') == 'en') {
                 if ($plan->status == 0) {
                     $status = "In progress";
                 } else {
                     if ($plan->status == 1) {
                         $status = "Closed plan";
                     }
                 }
                 if ($plan->final_date == '0000-00-00') {
                     $final_date = "Error storing plan deadline";
                 } else {
                     //seteamos fecha final
                     $final_date_tmp = new DateTime($plan->final_date);
                     $final_date = date_format($final_date_tmp, 'd-m-Y');
                 }
                 if ($plan->description == "") {
                     $plan->description = "Without description";
                 }
                 if ($plan->recommendations == "") {
                     $plan->recommendations = "Without recommendations";
                 }
             } else {
                 if ($plan->status == 0) {
                     $status = "En progreso";
                 } else {
                     if ($plan->status == 1) {
                         $status = "Plan cerrado";
                     }
                 }
                 if ($plan->final_date == '0000-00-00') {
                     $final_date = "Error al registrar fecha final";
                 } else {
                     //seteamos fecha final
                     $final_date_tmp = new DateTime($plan->final_date);
                     $final_date = date_format($final_date_tmp, 'd-m-Y');
                 }
                 if ($plan->description == "") {
                     $plan->description = "Sin descripción";
                 }
                 if ($plan->recommendations == "") {
                     $plan->recommendations = "Sin recomendaciones";
                 }
             }
             $updated_at_tmp = new DateTime($plan->updated_at);
             $updated_at = date_format($updated_at_tmp, 'd-m-Y');
             $action_plans_audit[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'audit_plan' => $plan->audit_plan_name, 'audit' => $plan->audit_name, 'program' => $plan->program_name, 'test' => $plan->test_name, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
             //verificamos para tercer gráfico el tipo de control (abierto, proximo a cerrar, cerrado, falta mucho para que cierre...)
             $fecha_temp = explode('-', $plan->final_date);
             //obtenemos solo mes y año
             $fecha_ano = (int) $fecha_temp[0] - (int) date('Y');
             //obtenemos solo año
             $fecha = (int) $fecha_temp[1] - (int) date('m');
             //solo mes
             $fecha_dia = (int) $fecha_temp[2] - (int) date('d');
             //solo día
             if ($fecha_ano > 0) {
                 if ($plan->status == 1) {
                     $cont_closed += 1;
                     $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                 } else {
                     $cont_open += 1;
                     $action_plans_open[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                 }
             } else {
                 if ($fecha_ano == 0) {
                     if ($fecha >= 2 && $plan->status == 0) {
                         $cont_open += 1;
                         $action_plans_open[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                     } else {
                         if ($fecha < 2 && $fecha >= 0 && $plan->status == 0) {
                             //verificamos día
                             if ($fecha_dia <= 0) {
                                 $cont_danger += 1;
                                 $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                             } else {
                                 $cont_warning += 1;
                                 $action_plans_warning[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                             }
                         } else {
                             if ($fecha < 0 && $plan->status == 0) {
                                 $cont_danger += 1;
                                 $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                             } else {
                                 if ($plan->status == 1) {
                                     $cont_closed += 1;
                                     $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                                 }
                             }
                         }
                     }
                 } else {
                     if ($plan->status == 1) {
                         $cont_closed += 1;
                         $action_plans_closed[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                     } else {
                         $cont_danger += 1;
                         $action_plans_danger[$i] = ['id' => $plan->id, 'description' => $plan->description, 'status' => $status, 'final_date' => $final_date, 'updated_at' => $updated_at, 'stakeholder' => $plan->user_name . ' ' . $plan->user_surnames, 'issue' => $plan->issue_name, 'recommendations' => $plan->recommendations];
                     }
                 }
             }
             $i += 1;
         }
         if (Session::get('languaje') == 'en') {
             if (strstr($_SERVER["REQUEST_URI"], 'genexcelgraficos')) {
                 if ($value == 8) {
                     //damos formato en español y orden
                     $i = 0;
                     $plans = array();
                     foreach ($action_plans_ctrl as $plan) {
                         $plans[$i] = ['Control' => $plan['control'], 'Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action Plan' => $plan['description'], 'Status' => $plan['status'], 'Final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                         $i += 1;
                     }
                     return $plans;
                 } else {
                     if ($value == 9) {
                         $i = 0;
                         $plans = array();
                         foreach ($action_plans_audit as $plan) {
                             $plans[$i] = ['Audit plan' => $plan['audit_plan'], 'Audit' => $plan['audit'], 'Program' => $plan['program'], 'Test' => $plan['test'], 'Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action plan' => $plan['description'], 'Status' => $plan['status'], 'Final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                             $i += 1;
                         }
                         return $plans;
                     } else {
                         if ($value == 10) {
                             $i = 0;
                             $plans = array();
                             foreach ($issues_om as $plan) {
                                 $plans[$i] = ['Issue' => $plan['name'], 'Description' => $plan['description'], 'Recommendations' => $plan['recommendations'], 'Classification' => $plan['classification'], 'Last updated' => $plan['updated_at'], 'Action plan' => $plan['action_plan']['description'], 'Plan final date' => $plan['action_plan']['final_date'], 'Plan status' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                 $i += 1;
                             }
                             return $plans;
                         } else {
                             if ($value == 11) {
                                 $i = 0;
                                 $plans = array();
                                 foreach ($issues_def as $plan) {
                                     $plans[$i] = ['Issue' => $plan['name'], 'Description' => $plan['description'], 'Recommendations' => $plan['recommendations'], 'Classification' => $plan['classification'], 'Last updated' => $plan['updated_at'], 'Action plan' => $plan['action_plan']['description'], 'Plan final date' => $plan['action_plan']['final_date'], 'Plan status' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                     $i += 1;
                                 }
                                 return $plans;
                             } else {
                                 if ($value == 12) {
                                     $i = 0;
                                     $plans = array();
                                     foreach ($issues_deb as $plan) {
                                         $plans[$i] = ['Issue' => $plan['name'], 'Description' => $plan['description'], 'Recommendations' => $plan['recommendations'], 'Classification' => $plan['classification'], 'Last updated' => $plan['updated_at'], 'Action plan' => $plan['action_plan']['description'], 'Plan final date' => $plan['action_plan']['final_date'], 'Plan status' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                         $i += 1;
                                     }
                                     return $plans;
                                 } else {
                                     if ($value == 13) {
                                         $i = 0;
                                         $plans = array();
                                         foreach ($action_plans_open as $plan) {
                                             $plans[$i] = ['Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action plan' => $plan['description'], 'Status' => $plan['status'], 'Last updated' => $plan['updated_at'], 'Plan final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                             $i += 1;
                                         }
                                         return $plans;
                                     } else {
                                         if ($value == 14) {
                                             $i = 0;
                                             $plans = array();
                                             foreach ($action_plans_warning as $plan) {
                                                 $plans[$i] = ['Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action plan' => $plan['description'], 'Status' => $plan['status'], 'Last updated' => $plan['updated_at'], 'Plan final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                 $i += 1;
                                             }
                                             return $plans;
                                         } else {
                                             if ($value == 15) {
                                                 $i = 0;
                                                 $plans = array();
                                                 foreach ($action_plans_danger as $plan) {
                                                     $plans[$i] = ['Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action plan' => $plan['description'], 'Status' => $plan['status'], 'Last updated' => $plan['updated_at'], 'Plan final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                     $i += 1;
                                                 }
                                                 return $plans;
                                             } else {
                                                 if ($value == 16) {
                                                     $i = 0;
                                                     $plans = array();
                                                     foreach ($action_plans_closed as $plan) {
                                                         $plans[$i] = ['Issue' => $plan['issue'], 'Recommendations' => $plan['recommendations'], 'Action plan' => $plan['description'], 'Status' => $plan['status'], 'Last updated' => $plan['updated_at'], 'Plan final date' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                         $i += 1;
                                                     }
                                                     return $plans;
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             } else {
                 return view('en.reportes.planes_accion_graficos', ['issues_om' => $issues_om, 'issues_def' => $issues_def, 'issues_deb' => $issues_deb, 'op_mejora' => $op_mejora, 'deficiencia' => $deficiencia, 'deb_significativa' => $deb_significativa, 'cont_ctrl' => $cont_ctrl, 'cont_audit' => $cont_audit, 'others' => $others, 'action_plans_ctrl' => $action_plans_ctrl, 'action_plans_audit' => $action_plans_audit, 'action_plans_open' => $action_plans_open, 'action_plans_warning' => $action_plans_warning, 'action_plans_danger' => $action_plans_danger, 'action_plans_closed' => $action_plans_closed, 'cont_open' => $cont_open, 'cont_warning' => $cont_warning, 'cont_danger' => $cont_danger, 'cont_closed' => $cont_closed]);
             }
         } else {
             if (strstr($_SERVER["REQUEST_URI"], 'genexcelgraficos')) {
                 if ($value == 8) {
                     //damos formato en español y orden
                     $i = 0;
                     $plans = array();
                     foreach ($action_plans_ctrl as $plan) {
                         $plans[$i] = ['Control' => $plan['control'], 'Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha final' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                         $i += 1;
                     }
                     return $plans;
                 } else {
                     if ($value == 9) {
                         $i = 0;
                         $plans = array();
                         foreach ($action_plans_audit as $plan) {
                             $plans[$i] = ['Plan de auditoría' => $plan['audit_plan'], 'Auditoría' => $plan['audit'], 'Programa' => $plan['program'], 'Prueba' => $plan['test'], 'Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha final' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                             $i += 1;
                         }
                         return $plans;
                     } else {
                         if ($value == 10) {
                             $i = 0;
                             $plans = array();
                             foreach ($issues_om as $plan) {
                                 $plans[$i] = ['Hallazgo' => $plan['name'], 'Descripción' => $plan['description'], 'Recomendaciones' => $plan['recommendations'], 'Clasificación' => $plan['classification'], 'Última actualización' => $plan['updated_at'], 'Plan de acción' => $plan['action_plan']['description'], 'Fecha final plan' => $plan['action_plan']['final_date'], 'Estado del plan' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                 $i += 1;
                             }
                             return $plans;
                         } else {
                             if ($value == 11) {
                                 $i = 0;
                                 $plans = array();
                                 foreach ($issues_def as $plan) {
                                     $plans[$i] = ['Hallazgo' => $plan['name'], 'Descripción' => $plan['description'], 'Recomendaciones' => $plan['recommendations'], 'Clasificación' => $plan['classification'], 'Última actualización' => $plan['updated_at'], 'Plan de acción' => $plan['action_plan']['description'], 'Fecha final plan' => $plan['action_plan']['final_date'], 'Estado del plan' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                     $i += 1;
                                 }
                                 return $plans;
                             } else {
                                 if ($value == 12) {
                                     $i = 0;
                                     $plans = array();
                                     foreach ($issues_deb as $plan) {
                                         $plans[$i] = ['Hallazgo' => $plan['name'], 'Descripción' => $plan['description'], 'Recomendaciones' => $plan['recommendations'], 'Clasificación' => $plan['classification'], 'Última actualización' => $plan['updated_at'], 'Plan de acción' => $plan['action_plan']['description'], 'Fecha final plan' => $plan['action_plan']['final_date'], 'Estado del plan' => $plan['action_plan']['status'], 'Responsable' => $plan['action_plan']['stakeholder']];
                                         $i += 1;
                                     }
                                     return $plans;
                                 } else {
                                     if ($value == 13) {
                                         $i = 0;
                                         $plans = array();
                                         foreach ($action_plans_open as $plan) {
                                             $plans[$i] = ['Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha actualizado' => $plan['updated_at'], 'Fecha final plan' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                             $i += 1;
                                         }
                                         return $plans;
                                     } else {
                                         if ($value == 14) {
                                             $i = 0;
                                             $plans = array();
                                             foreach ($action_plans_warning as $plan) {
                                                 $plans[$i] = ['Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha actualizado' => $plan['updated_at'], 'Fecha final plan' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                 $i += 1;
                                             }
                                             return $plans;
                                         } else {
                                             if ($value == 15) {
                                                 $i = 0;
                                                 $plans = array();
                                                 foreach ($action_plans_danger as $plan) {
                                                     $plans[$i] = ['Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha actualizado' => $plan['updated_at'], 'Fecha final plan' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                     $i += 1;
                                                 }
                                                 return $plans;
                                             } else {
                                                 if ($value == 16) {
                                                     $i = 0;
                                                     $plans = array();
                                                     foreach ($action_plans_closed as $plan) {
                                                         $plans[$i] = ['Hallazgo' => $plan['issue'], 'Recomendaciones' => $plan['recommendations'], 'Plan de acción' => $plan['description'], 'Estado' => $plan['status'], 'Fecha actualizado' => $plan['updated_at'], 'Fecha final plan' => $plan['final_date'], 'Responsable' => $plan['stakeholder']];
                                                         $i += 1;
                                                     }
                                                     return $plans;
                                                 }
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
             return view('reportes.planes_accion_graficos', ['issues_om' => $issues_om, 'issues_def' => $issues_def, 'issues_deb' => $issues_deb, 'op_mejora' => $op_mejora, 'deficiencia' => $deficiencia, 'deb_significativa' => $deb_significativa, 'cont_ctrl' => $cont_ctrl, 'cont_audit' => $cont_audit, 'others' => $others, 'action_plans_ctrl' => $action_plans_ctrl, 'action_plans_audit' => $action_plans_audit, 'action_plans_open' => $action_plans_open, 'action_plans_warning' => $action_plans_warning, 'action_plans_danger' => $action_plans_danger, 'action_plans_closed' => $action_plans_closed, 'cont_open' => $cont_open, 'cont_warning' => $cont_warning, 'cont_danger' => $cont_danger, 'cont_closed' => $cont_closed]);
         }
     }
 }
Example #2
0
 public function hallazgos($id)
 {
     if (Auth::guest()) {
         return view('login');
     } else {
         //datos de evaluación de control
         $evaluation = \Ermtool\Control_evaluation::find($id);
         $issues = array();
         $issues1 = \Ermtool\Issue::getIssueByControlEvaluation($id);
         $control_name = \Ermtool\Control::name($evaluation->control_id);
         $iss = new IssuesController();
         //print_r($_POST);
         $i = 0;
         foreach ($issues1 as $issue) {
             if ($issue['plan_description'] != NULL) {
                 $temp = $iss->formatearIssue($issue['id'], $issue['name'], $issue['classification'], $issue['recommendations'], $issue['plan_description'], $issue['plan_status'], $issue['plan_final_date']);
             } else {
                 $temp = $iss->formatearIssue($issue['id'], $issue['name'], $issue['classification'], $issue['recommendations'], NULL, NULL, NULL);
             }
             $issues[$i] = ['id' => $temp['id'], 'name' => $temp['name'], 'classification' => $temp['classification'], 'recommendations' => $temp['recommendations'], 'plan' => $temp['plan'], 'status' => $temp['status'], 'status_origin' => $temp['status_origin'], 'final_date' => $temp['final_date'], 'evidence' => $issue['evidences']];
             $i += 1;
         }
         $org_id = \Ermtool\Organization::getOrganizationIdFromControl($evaluation->control_id);
         if (Session::get('languaje') == 'en') {
             switch ($evaluation->kind) {
                 case 0:
                     $kind = 'Design test';
                     break;
                 case 1:
                     $kind = 'Operational effectiveness test';
                     break;
                 case 2:
                     $kind = 'Sustantive test';
                     break;
                 case 3:
                     $kind = 'Compliance test';
                     break;
                 default:
                     # code...
                     break;
             }
             return view('en.hallazgos.index3', ['issues' => $issues, 'evaluation' => $evaluation, 'org_id' => $org_id, 'kind' => $kind]);
         } else {
             switch ($evaluation->kind) {
                 case 0:
                     $kind = 'Prueba de diseño';
                     break;
                 case 1:
                     $kind = 'Prueba de efectividad operativa';
                     break;
                 case 2:
                     $kind = 'Prueba sustantiva';
                     break;
                 case 3:
                     $kind = 'Prueba de cumplimiento';
                     break;
                 default:
                     # code...
                     break;
             }
             return view('hallazgos.index3', ['issues' => $issues, 'evaluation' => $evaluation, 'control_name' => $control_name, 'org_id' => $org_id, 'kind' => $kind]);
         }
     }
 }
Example #3
0
 /**
  * Show the form for editing the specified resource.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function edit()
 {
     if (Auth::guest()) {
         return view('login');
     } else {
         if (isset($_GET['test_id'])) {
             $test_id = $_GET['test_id'];
             $eval_id = NULL;
         } else {
             if (isset($_GET['evaluation'])) {
                 $eval_id = $_GET['evaluation'];
                 $test_id = NULL;
             } else {
                 $test_id = NULL;
                 $eval_id = NULL;
             }
         }
         $org = \Ermtool\Organization::where('id', $_GET['org'])->value('name');
         $org_id = \Ermtool\Organization::where('id', $_GET['org'])->value('id');
         //obtenemos stakeholders de la misma organización
         $stakes = DB::table('stakeholders')->join('organization_stakeholder', 'organization_stakeholder.stakeholder_id', '=', 'stakeholders.id')->where('organization_stakeholder.organization_id', '=', $_GET['org'])->select('stakeholders.id', DB::raw('CONCAT(name, " ", surnames) AS full_name'))->orderBy('name')->lists('full_name', 'id');
         $issue = \Ermtool\Issue::find($_GET['id']);
         //vemos si es que tiene plan de accion
         $action_plan = NULL;
         $action_plan = DB::table('action_plans')->where('issue_id', '=', $_GET['id'])->select('id', 'stakeholder_id', 'description', 'final_date', 'status')->first();
         //vemos si es hallazgo de proceso, organización, u otro
         if ($issue['process_id'] != NULL) {
             $processes = \Ermtool\Process::where('processes.status', 0)->join('subprocesses', 'subprocesses.process_id', '=', 'processes.id')->join('organization_subprocess', 'organization_subprocess.subprocess_id', '=', 'subprocesses.id')->where('organization_subprocess.organization_id', '=', $_GET['org'])->lists('processes.name', 'processes.id');
             $process_selected = $issue->process_id;
             if (Session::get('languaje') == 'en') {
                 return view('en.hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'processes' => $processes, 'process_selected' => $process_selected, 'action_plan' => $action_plan, 'test_id' => $test_id, 'kind' => $_GET['kind']]);
             } else {
                 return view('hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'processes' => $processes, 'process_selected' => $process_selected, 'action_plan' => $action_plan, 'test_id' => $test_id, 'kind' => $_GET['kind']]);
             }
         } else {
             if ($issue['organization_id'] != NULL) {
                 if (Session::get('languaje') == 'en') {
                     return view('en.hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'org_id' => $_GET['org'], 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => $_GET['kind']]);
                 } else {
                     return view('hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'org_id' => $_GET['org'], 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => $_GET['kind']]);
                 }
             } else {
                 if (!isset($_GET['kind'])) {
                     if (Session::get('languaje') == 'en') {
                         return view('en.hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => NULL]);
                     } else {
                         return view('hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => NULL]);
                     }
                 }
                 if (Session::get('languaje') == 'en') {
                     return view('en.hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => $_GET['kind']]);
                 } else {
                     return view('hallazgos.edit', ['org' => $org, 'org_id' => $org_id, 'issue' => $issue, 'stakeholders' => $stakes, 'action_plan' => $action_plan, 'test_id' => $test_id, 'eval_id' => $eval_id, 'kind' => $_GET['kind']]);
                 }
             }
         }
     }
 }
Example #4
0
 /**
  * Display the specified resource.
  *
  * @param  int  $id
  * @return \Illuminate\Http\Response
  */
 public function show($id)
 {
     //print_r($_GET);
     switch ($_GET['kind']) {
         case 1:
             //archivos de controles
             if ($_GET['control_type'] == 0) {
                 $controls = \Ermtool\Control::getProcessesControls($_GET['organization_id']);
             } else {
                 if ($_GET['control_type'] == 1) {
                     $controls = \Ermtool\Control::getBussinessControls($_GET['organization_id']);
                 }
             }
             $i = 0;
             $org_name = \Ermtool\Organization::name($_GET['organization_id']);
             //recorremos los controles para ver cuales tienen archivos
             $controls2 = array();
             foreach ($controls as $control) {
                 $files = Storage::files('controles/' . $control->id);
                 //vemos si existe la carpeta (si existe es porque tiene archivos)
                 if ($files != NULL) {
                     //obtenemos los riesgos asociados a este control
                     $risks = \Ermtool\Risk::getRisksFromControl($control->id, $_GET['control_type']);
                     $controls2[$i] = ['name' => $control->name, 'description' => $control->description, 'risks' => $risks, 'files' => $files];
                     $i += 1;
                 }
             }
             if (Session::get('languaje') == 'en') {
                 return view('en.documentos.show', ['elements' => $controls2, 'kind' => $_GET['kind'], 'control_type' => $_GET['control_type'], 'org_name' => $org_name]);
             } else {
                 return view('documentos.show', ['elements' => $controls2, 'kind' => $_GET['kind'], 'control_type' => $_GET['control_type'], 'org_name' => $org_name]);
             }
             break;
         case 2:
             //hallazgos
             //$files = Storage::files('evidencias_hallazgos');
             //obtenemos id de los issues que son del tipo "kind_issue"
             switch ($_GET['kind_issue']) {
                 case 0:
                     //obtenemos issues de proceso
                     $processes = \Ermtool\Process::getProcessFromIssues($_GET['organization_id']);
                     $process_issues = array();
                     //se guardaran los procesos que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($processes as $process) {
                         //obtenemos issues del proceso
                         $issues = \Ermtool\Issue::getProcessIssues($process->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                             //else
                             //{
                             //    echo 'el issue ' . $issue->id . ' no tiene evidencia<br>';
                             //}
                         }
                         //ahora guardamos solo aquellos procesos que tienen documentos asociados
                         if (!empty($issues2)) {
                             $process_issues[$i] = ['name' => $process->name, 'description' => $process->description, 'issues' => $issues2];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $process_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $process_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 1:
                     //issues de subprocesos
                     $subprocesses = \Ermtool\Subprocess::getSubprocessFromIssues($_GET['organization_id']);
                     $subprocess_issues = array();
                     //se guardaran los subprocesos que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($subprocesses as $subprocess) {
                         //obtenemos issues del proceso
                         $issues = \Ermtool\Issue::getSubprocessIssuesBySubprocess($subprocess->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                         }
                         //ahora guardamos solo aquellos subprocesos que tienen documentos asociados
                         if (!empty($issues2)) {
                             $subprocess_issues[$i] = ['name' => $subprocess->name, 'description' => $subprocess->description, 'issues' => $issues2, 'process' => $subprocess->process_name];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $subprocess_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $subprocess_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 2:
                     //issues de organización
                     $issues = \Ermtool\Organization::find($_GET['organization_id'])->issues;
                     $org_name = \Ermtool\Organization::name($_GET['organization_id']);
                     $org_description = \Ermtool\Organization::description($_GET['organization_id']);
                     $issues2 = array();
                     //array donde se guardaran los issues que tienen documentos
                     //recorremos los issues para ver por cada uno si posee archivos
                     $j = 0;
                     foreach ($issues as $issue) {
                         $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                         //vemos si existe la carpeta (si existe es porque tiene archivos)
                         if ($files != NULL) {
                             $issues2[$j] = ['name' => $issue['name'], 'description' => $issue['description'], 'classification' => $issue['classification'], 'recommendations' => $issue['recommendations'], 'files' => $files];
                             $j += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['issues' => $issues2, 'org_name' => $org_name, 'org_description' => $org_description, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['issues' => $issues2, 'org_name' => $org_name, 'org_description' => $org_description, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 3:
                     //issues de control de proceso
                     $controls = \Ermtool\Control::getProcessesControlsFromIssues($_GET['organization_id']);
                     $controls_issues = array();
                     //se guardaran los controles que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($controls as $control) {
                         //obtenemos issues del control
                         $issues = \Ermtool\Issue::getControlIssues($control->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                         }
                         //ahora guardamos solo aquellos controles que tienen documentos asociados
                         if (!empty($issues2)) {
                             $control_issues[$i] = ['name' => $control->name, 'description' => $control->description, 'issues' => $issues2];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $control_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $control_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 4:
                     //issues de control de entidad
                     $controls = \Ermtool\Control::getObjectivesControlsFromIssues($_GET['organization_id']);
                     $control_issues = array();
                     //se guardaran los controles que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($controls as $control) {
                         //obtenemos issues del control
                         $issues = \Ermtool\Issue::getControlIssues($control->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                         }
                         //ahora guardamos solo aquellos controles que tienen documentos asociados
                         if (!empty($issues2)) {
                             $control_issues[$i] = ['name' => $control->name, 'description' => $control->description, 'issues' => $issues2];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $control_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $control_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 5:
                     //issues de programas de auditoría
                     //(audit_audit_plan_audit_program)
                     $audit_programs = \Ermtool\Audit_program::getProgramsFromIssues($_GET['organization_id']);
                     $audit_program_issues = array();
                     //se guardaran los programas que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($audit_programs as $audit_program) {
                         //obtenemos issues del programa
                         $issues = \Ermtool\Issue::getAuditProgramIssues($audit_program->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                         }
                         //ahora guardamos solo aquellos controles que tienen documentos asociados
                         if (!empty($issues2)) {
                             $audit_program_issues[$i] = ['name' => $audit_program->name, 'description' => $audit_program->description, 'issues' => $issues2];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $audit_program_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $audit_program_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 case 6:
                     //issues de auditoría
                     //(audit_audit_plan)
                     $audits = \Ermtool\Audit::getAuditsFromIssues($_GET['organization_id']);
                     $audit_issues = array();
                     //se guardaran las auditorías que tienen issues que además tienen documentos
                     $i = 0;
                     foreach ($audits as $audit) {
                         //obtenemos issues de la auditoría
                         $issues = \Ermtool\Issue::getAuditIssues($audit->id);
                         $issues2 = array();
                         //array donde se guardaran los issues que tienen documentos
                         //recorremos los issues para ver por cada uno si posee archivos
                         $j = 0;
                         foreach ($issues as $issue) {
                             $files = Storage::files('evidencias_hallazgos/' . $issue->id);
                             //vemos si existe la carpeta (si existe es porque tiene archivos)
                             if ($files != NULL) {
                                 $issues2[$j] = ['name' => $issue->name, 'description' => $issue->description, 'classification' => $issue->classification, 'recommendations' => $issue->recommendations, 'files' => $files];
                                 $j += 1;
                             }
                         }
                         //ahora guardamos solo aquellos controles que tienen documentos asociados
                         if (!empty($issues2)) {
                             $audit_issues[$i] = ['audit_plan' => $audit->audit_plan, 'name' => $audit->name, 'description' => $audit->description, 'issues' => $issues2];
                             $i += 1;
                         }
                     }
                     if (Session::get('languaje') == 'en') {
                         return view('en.documentos.show', ['elements' => $audit_issues, 'kind2' => $_GET['kind_issue']]);
                     } else {
                         return view('documentos.show', ['elements' => $audit_issues, 'kind2' => $_GET['kind_issue']]);
                     }
                     break;
                 default:
                     # code...
                     break;
             }
             break;
         case 3:
             //notas
             $notes = \Ermtool\Note::getNotes($_GET['organization_id'], $_GET['audit_plan_id']);
             $i = 0;
             //recorremos las notas para ver cuales tienen archivos
             $notes2 = array();
             foreach ($notes as $note) {
                 //obtenemos posibles respuestas
                 $answers = \Ermtool\Note::find($note->id)->notes_answers;
                 $j = 0;
                 $answers2 = array();
                 foreach ($answers as $ans) {
                     $files1 = Storage::files('evidencias_resp_notas/' . $ans->id);
                     if ($files1 != NULL) {
                         //seteamos fecha
                         $created_at = date_format($ans['created_at'], 'd-m-Y');
                         $answers2[$j] = ['answer' => $ans['answer'], 'created_at' => $created_at, 'files' => $files1];
                         $j += 1;
                     }
                 }
                 $files = Storage::files('evidencias_notas/' . $note->id);
                 //vemos si existe la carpeta (si existe es porque tiene archivos)
                 if ($files != NULL) {
                     $notes2[$j] = ['name' => $note->name, 'description' => $note->description, 'files' => $files, 'answers' => $answers2];
                     $i += 1;
                 }
                 //puede ser que la respuesta tenga archivos
             }
             if (Session::get('languaje') == 'en') {
                 return view('en.documentos.show', ['elements' => $notes2, 'kind' => $_GET['kind']]);
             } else {
                 return view('documentos.show', ['elements' => $notes2, 'kind' => $_GET['kind']]);
             }
             break;
         case 4:
             //programas
             $programs = \Ermtool\Audit_program::getPrograms($_GET['organization_id'], $_GET['audit_plan_id']);
             $plan = \Ermtool\Audit_plan::name($_GET['audit_plan_id']);
             $i = 0;
             //recorremos los programas para ver cuales tienen archivos
             $programs2 = array();
             foreach ($programs as $program) {
                 $files = Storage::files('programas_auditoria/' . $program->id);
                 //vemos si existe la carpeta (si existe es porque tiene archivos)
                 if ($files != NULL) {
                     $programs2[$i] = ['audit' => $program->audit, 'name' => $program->name, 'description' => $program->description, 'files' => $files];
                     $i += 1;
                 }
             }
             if (Session::get('languaje') == 'en') {
                 return view('en.documentos.show', ['elements' => $programs2, 'kind' => $_GET['kind'], 'audit_plan' => $plan]);
             } else {
                 return view('documentos.show', ['elements' => $programs2, 'kind' => $_GET['kind'], 'audit_plan' => $plan]);
             }
             break;
         case 5:
             //pruebas
             $tests = \Ermtool\Audit_test::getTests($_GET['organization_id'], $_GET['audit_plan_id']);
             $plan = \Ermtool\Audit_plan::name($_GET['audit_plan_id']);
             $i = 0;
             //recorremos los programas para ver cuales tienen archivos
             $tests2 = array();
             foreach ($tests as $test) {
                 $files = Storage::files('pruebas_auditoria/' . $test->id);
                 //vemos si existe la carpeta (si existe es porque tiene archivos)
                 if ($files != NULL) {
                     $tests2[$i] = ['audit' => $test->audit, 'program' => $test->program, 'name' => $test->name, 'description' => $test->description, 'files' => $files];
                     $i += 1;
                 }
             }
             if (Session::get('languaje') == 'en') {
                 return view('en.documentos.show', ['elements' => $tests2, 'kind' => $_GET['kind'], 'audit_plan' => $plan]);
             } else {
                 return view('documentos.show', ['elements' => $tests2, 'kind' => $_GET['kind'], 'audit_plan' => $plan]);
             }
             break;
         default:
             break;
     }
 }
 public function getIssue($eval_id)
 {
     $issue = NULL;
     $eval = DB::table('control_evaluation')->where('id', '=', $eval_id)->where('status', '=', 1)->select('issue_id')->first();
     $evidence = getEvidences(3, $eval_id);
     if ($eval) {
         $issue = \Ermtool\Issue::find($eval->issue_id);
         $issue = ['issue' => $issue, 'evidence' => $evidence];
     }
     return json_encode($issue);
 }