/** * 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 calcControlledRisk($control_id) { //primero que todo, obtenemos todos los riesgos a los que apunta este control (vemos si apunta a riesgos de proceso o de entidad) $risks = \Ermtool\Risk::getRiskSubprocessFromControl($control_id); $kind = 1; //para facilitar la manipulación posterior del riesgo if (empty($risks)) { $kind = 2; //para facilitar la manipulación posterior del riesgo $risks = \Ermtool\Risk::getObjectiveRiskFromControl($control_id); } //ahora recorremos cada uno de esos riesgos, y obtenemos los controles que tiene asociado y cuáles de estos controles posee una evaluación en la tabla control_eval_risk_temp foreach ($risks as $risk) { //obtenemos todos los controles de este riesgo if ($kind == 1) { $controls = \Ermtool\Control::getControlsFromRiskSubprocess($risk->id); } else { $controls = \Ermtool\Control::getControlsFromObjectiveRisk($risk->id); } //ahora para cada uno de estos controles, verificamos su ÚLTIMO resultado en la tabla control_eval_risk_temp $efectivos = 0; $inefectivos = 0; foreach ($controls as $control) { //obtenemos ÚLTIMA fecha de creación $max_date = DB::table('control_eval_risk_temp')->where('control_id', '=', $control->id)->max('created_at'); //obtenemos resultado del control $eval = DB::table('control_eval_risk_temp')->where('control_id', '=', $control->id)->where('created_at', '=', $max_date)->select('result')->first(); if (isset($eval) && $eval != NULL) { if ($eval->result == 1) { $efectivos += 1; } else { $inefectivos += 1; } } } //ahora hacemos una división de todos los efectivos con la suma de efectivos más inefectivos, y si esta división es mayor o igual a 0.5, entonces el riesgo es guardado como efectivo, sino será guardado como inefectivo $res = $efectivos / ($efectivos + $inefectivos); if ($res >= 0.5) { //el riesgo es efectivo if ($kind == 1) { \Ermtool\Control_evaluation::insertControlledRisk($risk->id, 1, 1); } else { \Ermtool\Control_evaluation::insertControlledRisk($risk->id, 1, 2); } } else { if ($kind == 1) { \Ermtool\Control_evaluation::insertControlledRisk($risk->id, 2, 1); } else { \Ermtool\Control_evaluation::insertControlledRisk($risk->id, 2, 2); } } } return 0; }
public function generarHeatmap(Request $request) { if (Auth::guest()) { return view('login'); } else { //print_r($_POST); //Nombre y descripción de la encuesta u organización $nombre = ""; $descripcion = ""; //inherente $prom_proba_in = array(); $prom_criticidad_in = array(); //controlado $prom_proba_ctrl = array(); $prom_criticidad_ctrl = array(); $riesgo_temp = array(); $riesgos = array(); $i = 0; $ano = $_GET['ano']; if ($_GET['mes'] == NULL) { $mes = "12"; } else { $mes = $_GET['mes']; } //obtenemos nombre y descripción de organización $datos = DB::table('organizations')->where('id', $_GET['organization_id'])->select('name', 'description')->get(); foreach ($datos as $datos) { $nombre = $datos->name; $descripcion = $datos->description; } if ($_GET['kind'] == 0) { //---- consulta multiples join para obtener los subprocesos evaluados relacionados a la organización ----// //para riesgos inherente $evaluations = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->join('risk_subprocess', 'risk_subprocess.id', '=', 'evaluation_risk.risk_subprocess_id')->join('organization_subprocess', 'organization_subprocess.subprocess_id', '=', 'risk_subprocess.subprocess_id')->join('risks', 'risks.id', '=', 'risk_subprocess.risk_id')->whereNotNull('evaluation_risk.risk_subprocess_id')->where('organization_subprocess.organization_id', '=', $_GET['organization_id'])->where('evaluations.updated_at', '<=', date($ano . '-' . $mes) . '-31 23:59:59')->where('evaluations.consolidation', '=', 1)->select('evaluation_risk.risk_subprocess_id as risk_id', 'risks.id as risk')->groupBy('risks.id')->get(); foreach ($evaluations as $evaluation) { //obtenemos promedio de probabilidad e impacto (INHERENTE Y CONTROLADO) $updated_at_in = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->where('evaluation_risk.risk_subprocess_id', $evaluation->risk_id)->where('evaluations.consolidation', '=', 1)->where('evaluations.type', '=', 1)->where('evaluations.updated_at', '<=', date($ano . '-' . $mes . '-31 23:59:59'))->max('evaluations.updated_at'); if ($_GET['kind2'] == 1) { //ACTUALIZACIÓN 22-11-16: Obtendremos los riesgos controlados a través de la tabla controlled_risk sólo para la organización y el tipo seleccionado $updated_at_ctrl = DB::table('controlled_risk')->join('risk_subprocess', 'risk_subprocess.id', '=', 'controlled_risk.risk_subprocess_id')->join('organization_subprocess', 'organization_subprocess.subprocess_id', '=', 'risk_subprocess.subprocess_id')->where('organization_subprocess.organization_id', '=', $_GET['organization_id'])->where('controlled_risk.risk_subprocess_id', '=', $evaluation->risk_id)->where('controlled_risk.created_at', '<=', date($ano . '-' . $mes . '-31 23:59:59'))->max('controlled_risk.created_at'); } $proba_impacto_in = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->where('evaluations.updated_at', '=', $updated_at_in)->where('evaluation_risk.risk_subprocess_id', '=', $evaluation->risk_id)->select('evaluation_risk.avg_probability', 'evaluation_risk.avg_impact')->first(); //proba controlado (si es que hay) if (isset($updated_at_ctrl) && $updated_at_ctrl != NULL) { //ACTUALIZACIÓN 01-12: Obtenemos valor de riesgo controlado de controlled_risk_criteria, según la evaluación de controlled_risk $eval = DB::table('controlled_risk')->where('controlled_risk.risk_subprocess_id', '=', $evaluation->risk_id)->where('controlled_risk.created_at', '=', $updated_at_ctrl)->select('results')->first(); //obtenemos valor de evaluación controlada, para este resultado y con los valores del riesgo inherente $proba_ctrl = DB::table('controlled_risk_criteria')->where('dim_eval', '=', 1)->where('eval_in_risk', '=', $proba_impacto_in->avg_probability)->where('control_evaluation', '=', $eval->results)->select('eval_ctrl_risk as eval')->first(); $impacto_ctrl = DB::table('controlled_risk_criteria')->where('dim_eval', '=', 2)->where('eval_in_risk', '=', $proba_impacto_in->avg_impact)->where('control_evaluation', '=', $eval->results)->select('eval_ctrl_risk as eval')->first(); } //guardamos proba en $prom_proba_in para inherente $prom_proba_in[$i] = $proba_impacto_in->avg_probability; $prom_criticidad_in[$i] = $proba_impacto_in->avg_impact; //prom_proba_ctrl para controlado (si es que hay) if (isset($proba_impacto_ctrl)) { $prom_proba_ctrl[$i] = $proba_ctrl->eval; $prom_criticidad_ctrl[$i] = $impacto_ctrl->eval; } else { $prom_proba_ctrl[$i] = NULL; $prom_criticidad_ctrl[$i] = NULL; } //unseteamos variable de proba_impacto_ctrl para que no se repita unset($proba_impacto_ctrl); //obtenemos nombre del riesgo y lo guardamos en array de riesgo junto al nombre de organización //ACTUALIZACIÓN 25-07: OBTENEMOS DATOS DEL RIESGO Y LOS POSIBLES SUBPROCESOS ASOCIADOS $riesgo_temp = \Ermtool\Risk::find($evaluation->risk); //$subprocesses = $riesgo_temp->subprocesses; ---> NO SIRVE MUESTRA SUBPR. DE OTRAS ORGS. $subprocesses = DB::table('subprocesses')->join('organization_subprocess', 'organization_subprocess.subprocess_id', '=', 'subprocesses.id')->join('risk_subprocess', 'risk_subprocess.subprocess_id', '=', 'subprocesses.id')->where('risk_subprocess.risk_id', '=', $riesgo_temp->id)->where('organization_subprocess.organization_id', '=', $_GET['organization_id'])->select('subprocesses.name')->get(); //foreach ($riesgo_temp as $temp) //el riesgo recién obtenido es almacenado en riesgos //{ //probamos eliminar espacios en descripcion $description = preg_replace('(\\n)', ' ', $riesgo_temp->description); $description = preg_replace('(\\r)', ' ', $description); $riesgos[$i] = array('name' => $riesgo_temp->name, 'subobj' => $subprocesses, 'description' => $description); //} $i += 1; } } else { if ($_GET['kind'] == 1) { //---- consulta multiples join para obtener los objective_risk evaluados relacionados a la organización ----// $evaluations = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->join('objective_risk', 'objective_risk.id', '=', 'evaluation_risk.objective_risk_id')->join('risks', 'risks.id', '=', 'objective_risk.risk_id')->join('objectives', 'objectives.id', '=', 'objective_risk.objective_id')->where('objectives.organization_id', '=', $_GET['organization_id'])->where('evaluations.consolidation', '=', 1)->where('evaluations.updated_at', '<=', date($ano . '-' . $mes) . '-31 23:59:59')->select('evaluation_risk.objective_risk_id as risk_id', 'risks.id as risk')->groupBy('risks.id')->get(); foreach ($evaluations as $evaluation) { $updated_at_in = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->where('evaluation_risk.objective_risk_id', '=', $evaluation->risk_id)->where('evaluations.consolidation', '=', 1)->where('evaluations.type', '=', 1)->where('evaluations.updated_at', '<=', date($ano . '-' . $mes . '-31 23:59:59'))->max('evaluations.updated_at'); if ($_GET['kind2'] == 1) { //ACTUALIZACIÓN 22-11-16: Obtendremos los riesgos controlados a través de la tabla controlled_risk sólo para la organización y el tipo seleccionado $updated_at_ctrl = DB::table('controlled_risk')->join('objective_risk', 'objective_risk.id', '=', 'controlled_risk.objective_risk_id')->join('objectives', 'objectives.id', '=', 'objective_risk.objective_id')->where('objectives.organization_id', '=', $_GET['organization_id'])->where('controlled_risk.objective_risk_id', '=', $evaluation->risk_id)->where('controlled_risk.created_at', '<=', date($ano . '-' . $mes . '-31 23:59:59'))->max('controlled_risk.created_at'); } //obtenemos promedio de probabilidad e impacto $proba_impacto_in = DB::table('evaluation_risk')->join('evaluations', 'evaluations.id', '=', 'evaluation_risk.evaluation_id')->where('evaluations.updated_at', '=', $updated_at_in)->where('evaluation_risk.objective_risk_id', '=', $evaluation->risk_id)->select('evaluation_risk.avg_probability', 'evaluation_risk.avg_impact')->first(); //proba controlado (si es que hay) if (isset($updated_at_ctrl) && $updated_at_ctrl != NULL) { //ACTUALIZACIÓN 01-12: Obtenemos valor de riesgo controlado de controlled_risk_criteria, según la evaluación de controlled_risk $eval = DB::table('controlled_risk')->where('controlled_risk.objective_risk_id', '=', $evaluation->risk_id)->where('controlled_risk.created_at', '=', $updated_at_ctrl)->select('results')->first(); //obtenemos valor de evaluación controlada, para este resultado y con los valores del riesgo inherente $proba_ctrl = DB::table('controlled_risk_criteria')->where('dim_eval', '=', 1)->where('eval_in_risk', '=', $proba_impacto_in->avg_probability)->where('control_evaluation', '=', $eval->results)->select('eval_ctrl_risk as eval')->first(); $impacto_ctrl = DB::table('controlled_risk_criteria')->where('dim_eval', '=', 2)->where('eval_in_risk', '=', $proba_impacto_in->avg_impact)->where('control_evaluation', '=', $eval->results)->select('eval_ctrl_risk as eval')->first(); } //guardamos proba en $prom_proba $prom_proba_in[$i] = $proba_impacto_in->avg_probability; $prom_criticidad_in[$i] = $proba_impacto_in->avg_impact; //prom_proba_ctrl para controlado (si es que hay) if (isset($proba_ctrl) && isset($impacto_ctrl)) { $prom_proba_ctrl[$i] = $proba_ctrl->eval; $prom_criticidad_ctrl[$i] = $impacto_ctrl->eval; } else { $prom_proba_ctrl[$i] = NULL; $prom_criticidad_ctrl[$i] = NULL; } //unseteamos variable de proba_impacto_ctrl para que no se repita unset($proba_ctrl); unset($impacto_ctrl); //ACTUALIZACIÓN 25-07: OBTENEMOS DATOS DEL RIESGO Y LOS POSIBLES RIESGOS ASOCIADOS $riesgo_temp = \Ermtool\Risk::find($evaluation->risk); //$objectives = $riesgo_temp->objectives ----> NO SIRVE MUESTRA OBJ. DE OTRAS ORGANIZACIONES $objectives = DB::table('objectives')->join('objective_risk', 'objective_risk.objective_id', '=', 'objectives.id')->where('objective_risk.risk_id', '=', $riesgo_temp->id)->where('objectives.organization_id', '=', $_GET['organization_id'])->select('objectives.name')->get(); //eliminamos posibles espacios que puedan llevar a error en descripción $description = preg_replace('(\\n)', ' ', $riesgo_temp->description); $description = preg_replace('(\\r)', ' ', $description); $riesgos[$i] = array('name' => $riesgo_temp->name, 'subobj' => $objectives, 'description' => $description); $i += 1; } } } if ($_GET['kind2'] == 1) { if (Session::get('languaje') == 'en') { //retornamos la misma vista con datos (inglés) return view('en.reportes.heatmap', ['nombre' => $nombre, 'descripcion' => $descripcion, 'riesgos' => $riesgos, 'prom_proba_in' => $prom_proba_in, 'prom_criticidad_in' => $prom_criticidad_in, 'prom_proba_ctrl' => $prom_proba_ctrl, 'prom_criticidad_ctrl' => $prom_criticidad_ctrl, 'kind' => $_GET['kind'], 'kind2' => $_GET['kind2']]); } else { return view('reportes.heatmap', ['nombre' => $nombre, 'descripcion' => $descripcion, 'riesgos' => $riesgos, 'prom_proba_in' => $prom_proba_in, 'prom_criticidad_in' => $prom_criticidad_in, 'prom_proba_ctrl' => $prom_proba_ctrl, 'prom_criticidad_ctrl' => $prom_criticidad_ctrl, 'kind' => $_GET['kind'], 'kind2' => $_GET['kind2']]); } } else { if (Session::get('languaje') == 'en') { //retornamos la misma vista con datos pero solo de riesgos inherentes (inglés) return view('en.reportes.heatmap', ['nombre' => $nombre, 'descripcion' => $descripcion, 'riesgos' => $riesgos, 'prom_proba_in' => $prom_proba_in, 'prom_criticidad_in' => $prom_criticidad_in, 'kind' => $_GET['kind'], 'kind2' => $_GET['kind2']]); } else { return view('reportes.heatmap', ['nombre' => $nombre, 'descripcion' => $descripcion, 'riesgos' => $riesgos, 'prom_proba_in' => $prom_proba_in, 'prom_criticidad_in' => $prom_criticidad_in, 'kind' => $_GET['kind'], 'kind2' => $_GET['kind2']]); } } } }
public function getTests($kind, $id) { $i = 0; //contador de pruebas $audit_plan = \Ermtool\Audit_plan::where('id', $id)->value('name'); $pruebas_ejec = 0; //pruebas en ejecución $pruebas_abiertas = 0; //pruebas abiertas $pruebas_cerradas = 0; //pruebas cerradas $type = NULL; //identifica si es una prueba asociada a un riesgo, subproceso o control (1=Riesgo, 2=Subproceso, 3=Control) $audit_tests = array(); $tests = DB::table('audit_tests')->join('audit_audit_plan_audit_program', 'audit_audit_plan_audit_program.id', '=', 'audit_tests.audit_audit_plan_audit_program_id')->join('audit_programs', 'audit_programs.id', '=', 'audit_audit_plan_audit_program.audit_program_id')->join('audit_audit_plan', 'audit_audit_plan.id', '=', 'audit_audit_plan_audit_program.audit_audit_plan_id')->join('audits', 'audits.id', '=', 'audit_audit_plan.audit_id')->join('audit_plans', 'audit_plans.id', '=', 'audit_audit_plan.audit_plan_id')->where('audit_plans.id', '=', $id)->select('audit_plans.name AS audit_plan_name', 'audits.name AS audit_name', 'audit_programs.name as audit_program_name', 'audit_tests.description AS description', 'audit_tests.name AS name', 'audit_tests.type', 'audit_tests.status', 'audit_tests.results', 'audit_tests.hh', 'audit_tests.control_id', 'audit_tests.subprocess_id', 'audit_tests.risk_id', 'audit_tests.stakeholder_id')->get(); foreach ($tests as $test) { //sumamos a prueba ejec abierta o cerrada según el estado que posea if ($test->status == 0) { $pruebas_abiertas += 1; } else { if ($test->status == 1) { $pruebas_ejec += 1; } else { if ($test->status == 2) { $pruebas_cerradas += 1; } } } //obtenemos nombre de stakeholder $resp = \Ermtool\Stakeholder::find($test->stakeholder_id); $resp = $resp['name'] . ' ' . $resp['surnames']; //obtenemos nombre de riesgo, control o subproceso según corresponda if ($test->risk_id != NULL) { $relacionado = \Ermtool\Risk::where('id', $test->risk_id)->value('name'); $type = 1; } else { if ($test->subprocess_id != NULL) { $relacionado = \Ermtool\Subprocess::where('id', $test->subprocess_id)->value('name'); $type = 2; } else { if ($test->control_id != NULL) { $relacionado = \Ermtool\Control::where('id', $test->control_id)->value('name'); $type = 3; } } } if (strstr($_SERVER["REQUEST_URI"], 'genexcelgraficosdinamicos')) { if (Session::get('languaje') == 'en') { if ($kind == 1 && $test->status == 0) { //tipo if ($test->type == 0) { $test_type = 'Design test'; } else { if ($test->type == 1) { $test_type = 'Operationa effectiveness test'; } else { if ($test->type == 2) { $test_type = 'Compliance test'; } else { if ($test->type == 3) { $test_type = 'Sustantive tests'; } else { $test_type = 'Not defined'; } } } } //resultado if ($test->results == 0) { $results = 'Ineffective'; } else { if ($test->results == 1) { $results = 'Effective'; } else { if ($test->results == 2) { $results = 'In process'; } } } if ($type == 1) { $related = 'Risk: ' . $relacionado; } else { if ($type == 2) { $related = 'Subprocess: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Audit plan' => $audit_plan, 'Audit' => $test->audit_name, 'Program' => $test->audit_program_name, 'Test' => $test->name, 'Description' => $test->description, 'Kind' => $test_type, 'Results' => $results, 'Hours-man' => $test->hh, 'Responsable' => $resp, 'Related object' => $related]; } else { if ($kind == 2 && $test->status == 1) { //tipo if ($test->type == 0) { $test_type = 'Design test'; } else { if ($test->type == 1) { $test_type = 'Operationa effectiveness test'; } else { if ($test->type == 2) { $test_type = 'Compliance test'; } else { if ($test->type == 3) { $test_type = 'Sustantive tests'; } else { $test_type = 'Not defined'; } } } } //resultado if ($test->results == 0) { $results = 'Ineffective'; } else { if ($test->results == 1) { $results = 'Effective'; } else { if ($test->results == 2) { $results = 'In process'; } } } if ($type == 1) { $related = 'Risk: ' . $relacionado; } else { if ($type == 2) { $related = 'Subprocess: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Audit plan' => $audit_plan, 'Audit' => $test->audit_name, 'Program' => $test->audit_program_name, 'Test' => $test->name, 'Description' => $test->description, 'Kind' => $test_type, 'Results' => $results, 'Hours-man' => $test->hh, 'Responsable' => $resp, 'Related object' => $related]; } else { if ($kind == 3 && $test->status == 2) { //tipo if ($test->type == 0) { $test_type = 'Design test'; } else { if ($test->type == 1) { $test_type = 'Operationa effectiveness test'; } else { if ($test->type == 2) { $test_type = 'Compliance test'; } else { if ($test->type == 3) { $test_type = 'Sustantive tests'; } else { $test_type = 'Not defined'; } } } } //resultado if ($test->results == 0) { $results = 'Ineffective'; } else { if ($test->results == 1) { $results = 'Effective'; } else { if ($test->results == 2) { $results = 'In process'; } } } if ($type == 1) { $related = 'Risk: ' . $relacionado; } else { if ($type == 2) { $related = 'Subprocess: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Audit plan' => $audit_plan, 'Audit' => $test->audit_name, 'Program' => $test->audit_program_name, 'Test' => $test->name, 'Description' => $test->description, 'Kind' => $test_type, 'Results' => $results, 'Hours-man' => $test->hh, 'Responsable' => $resp, 'Related object' => $related]; } } } } else { if ($kind == 1 && $test->status == 0) { //tipo if ($test->type == 0) { $test_type = 'Prueba de diseño'; } else { if ($test->type == 1) { $test_type = 'Prueba de efectividad operativa'; } else { if ($test->type == 2) { $test_type = 'Prueba de cumplimiento'; } else { if ($test->type == 3) { $test_type = 'Prueba sustantiva'; } else { $test_type = 'No definido'; } } } } //resultado if ($test->results == 0) { $results = 'Inefectiva'; } else { if ($test->results == 1) { $results = 'Efectiva'; } else { if ($test->results == 2) { $results = 'En proceso'; } } } if ($type == 1) { $related = 'Riesgo: ' . $relacionado; } else { if ($type == 2) { $related = 'Subproceso: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Plan de auditoría' => $audit_plan, 'Auditoría' => $test->audit_name, 'Programa' => $test->audit_program_name, 'Prueba' => $test->name, 'Descripción' => $test->description, 'Tipo' => $test_type, 'Resultado' => $results, 'Horas-hombre' => $test->hh, 'Responsable' => $resp, 'Objeto relacionado' => $related]; } else { if ($kind == 2 && $test->status == 1) { //tipo if ($test->type == 0) { $test_type = 'Prueba de diseño'; } else { if ($test->type == 1) { $test_type = 'Prueba de efectividad operativa'; } else { if ($test->type == 2) { $test_type = 'Prueba de cumplimiento'; } else { if ($test->type == 3) { $test_type = 'Prueba sustantiva'; } else { $test_type = 'No definido'; } } } } //resultado if ($test->results == 0) { $results = 'Inefectiva'; } else { if ($test->results == 1) { $results = 'Efectiva'; } else { if ($test->results == 2) { $results = 'En proceso'; } } } if ($type == 1) { $related = 'Riesgo: ' . $relacionado; } else { if ($type == 2) { $related = 'Subproceso: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Plan de auditoría' => $audit_plan, 'Auditoría' => $test->audit_name, 'Programa' => $test->audit_program_name, 'Prueba' => $test->name, 'Descripción' => $test->description, 'Tipo' => $test_type, 'Resultado' => $results, 'Horas-hombre' => $test->hh, 'Responsable' => $resp, 'Objeto relacionado' => $related]; } else { if ($kind == 3 && $test->status == 2) { //tipo if ($test->type == 0) { $test_type = 'Prueba de diseño'; } else { if ($test->type == 1) { $test_type = 'Prueba de efectividad operativa'; } else { if ($test->type == 2) { $test_type = 'Prueba de cumplimiento'; } else { if ($test->type == 3) { $test_type = 'Prueba sustantiva'; } else { $test_type = 'No definido'; } } } } //resultado if ($test->results == 0) { $results = 'Inefectiva'; } else { if ($test->results == 1) { $results = 'Efectiva'; } else { if ($test->results == 2) { $results = 'En proceso'; } } } if ($type == 1) { $related = 'Riesgo: ' . $relacionado; } else { if ($type == 2) { $related = 'Subproceso: ' . $relacionado; } else { if ($type == 3) { $related = 'Control: ' . $relacionado; } } } $audit_tests[$i] = ['Plan de auditoría' => $audit_plan, 'Auditoría' => $test->audit_name, 'Programa' => $test->audit_program_name, 'Prueba' => $test->name, 'Descripción' => $test->description, 'Tipo' => $test_type, 'Resultado' => $results, 'Horas-hombre' => $test->hh, 'Responsable' => $resp, 'Objeto relacionado' => $related]; } } } } } else { $audit_tests[$i] = ['audit_name' => $test->audit_name, 'audit_program_name' => $test->audit_program_name, 'name' => $test->name, 'description' => $test->description, 'type' => $test->type, 'status' => $test->status, 'results' => $test->results, 'hh' => $test->hh, 'stakeholder' => $resp, 'related' => $relacionado, 'related_type' => $type]; } $i += 1; } if (strstr($_SERVER["REQUEST_URI"], 'genexcelgraficos')) { return $audit_tests; } else { return json_encode(['audit_plan' => $audit_plan, 'audit_tests' => $audit_tests, 'pruebas_abiertas' => $pruebas_abiertas, 'pruebas_ejec' => $pruebas_ejec, 'pruebas_cerradas' => $pruebas_cerradas]); } }
public function indexEvaluacion2() { //print_r($_GET); if (Auth::guest()) { return view('login'); } else { //obtenemos datos del control $control = \Ermtool\Control::find($_GET['control_id']); if ($control->stakeholder_id == NULL) { $stakeholder = NULL; } else { $stakeholder = \Ermtool\Stakeholder::getName($control->stakeholder_id); } //buscamos datos de cada una de las últimas pruebas (independiente de si se está editando o creando una nueva) $last_diseno = \Ermtool\control_evaluation::getLastEvaluation($_GET['control_id'], 0); $last_efectividad = \Ermtool\control_evaluation::getLastEvaluation($_GET['control_id'], 1); $last_sustantiva = \Ermtool\control_evaluation::getLastEvaluation($_GET['control_id'], 2); $last_cumplimiento = \Ermtool\control_evaluation::getLastEvaluation($_GET['control_id'], 3); $risks = \Ermtool\Risk::getRisksFromControl($_GET['control_id']); //if ($_GET['control_kind'] == 1) //control de negocio //{ if (Session::get('languaje') == 'en') { return view('en.controles.evaluar2', ['control' => $control, 'risks' => $risks, 'stakeholder' => $stakeholder, 'last_diseno' => $last_diseno, 'last_efectividad' => $last_efectividad, 'last_sustantiva' => $last_sustantiva, 'last_cumplimiento' => $last_cumplimiento]); } else { return view('controles.evaluar2', ['control' => $control, 'risks' => $risks, 'stakeholder' => $stakeholder, 'last_diseno' => $last_diseno, 'last_efectividad' => $last_efectividad, 'last_sustantiva' => $last_sustantiva, 'last_cumplimiento' => $last_cumplimiento]); } //} /*else if ($_GET['control_kind'] == 2) //control de proceso { //$process = \Ermtool\Process::find($_GET['process_id']); //$subprocess = \Ermtool\Subprocess::find($_GET['subprocess_id']); if (Session::get('languaje') == 'en') { return view('en.controles.evaluar2',['control' => $control, 'risks' => $risks,'stakeholder' => $stakeholder,'last_diseno' => $last_diseno,'last_efectividad' => $last_efectividad,'last_sustantiva' => $last_sustantiva,'last_cumplimiento' => $last_cumplimiento,'kind' => $_GET['control_kind']]); } else { return view('controles.evaluar2',['control' => $control, 'risks' => $risks,'stakeholder' => $stakeholder,'last_diseno' => $last_diseno,'last_efectividad' => $last_efectividad,'last_sustantiva' => $last_sustantiva,'last_cumplimiento' => $last_cumplimiento,'kind' => $_GET['control_kind']]); } }*/ } }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { if (Auth::guest()) { return view('login'); } else { global $id1; $id1 = $id; //creamos una transacción para cumplir con atomicidad DB::transaction(function () { $riesgo = \Ermtool\Risk::find($GLOBALS['id1']); //vemos si se agrego alguna causa nueva if (isset($_POST['causa_nueva'])) { $new_causa = \Ermtool\Cause::create(['name' => $_POST['causa']]); //guardamos en cause_risk DB::table('cause_risk')->insert(['risk_id' => $riesgo->id, 'cause_id' => $new_causa->id]); } else { if (isset($_POST['cause_id'])) { foreach ($_POST['cause_id'] as $cause_id) { //primero buscamos si es que existe previamente $cause = DB::table('cause_risk')->where('cause_id', '=', $cause_id)->where('risk_id', '=', $riesgo->id)->first(); if (!$cause) { DB::table('cause_risk')->insert(['risk_id' => $riesgo->id, 'cause_id' => $cause_id]); } } } } //vemos si se agrego algún efecto nuevo if (isset($_POST['efecto_nuevo'])) { $new_effect = \Ermtool\Effect::create(['name' => $_POST['efecto']]); //guardamos en cause_risk DB::table('effect_risk')->insert(['risk_id' => $riesgo->id, 'effect_id' => $new_effect->id]); } else { if (isset($_POST['effect_id'])) { foreach ($_POST['effect_id'] as $effect_id) { //primero buscamos si es que existe previamente $effect = DB::table('effect_risk')->where('effect_id', '=', $effect_id)->where('risk_id', '=', $riesgo->id)->first(); if (!$effect) { //insertamos cada causa en cause_risk DB::table('effect_risk')->insert(['risk_id' => $riesgo->id, 'effect_id' => $effect_id]); } } } } //ahora recorreremos todas las causas y efectos de este riesgo, para saber si es que no se borró alguna $causas = DB::table('cause_risk')->where('risk_id', '=', $riesgo->id)->select('cause_id')->get(); foreach ($causas as $cause) { $cont = 0; //si se mantiene en cero, nunca habrán sido iguales, por lo que significa que se habria borrado //ahora recorremos todas las causas que se agregaron para comparar foreach ($_POST['cause_id'] as $cause_add) { if ($cause_add == $cause->cause_id) { $cont += 1; } } if ($cont == 0) { DB::table('cause_risk')->where('risk_id', '=', $riesgo->id)->where('cause_id', '=', $cause->cause_id)->delete(); } } //lo mismo ahora para efectos $efectos = DB::table('effect_risk')->where('risk_id', '=', $riesgo->id)->select('effect_id')->get(); foreach ($efectos as $effect) { $cont = 0; //si se mantiene en cero, nunca habrán sido iguales, por lo que significa que se habria borrado //ahora recorremos todas las causas que se agregaron para comparar foreach ($_POST['effect_id'] as $effect_add) { if ($effect_add == $effect->effect_id) { $cont += 1; } } if ($cont == 0) { DB::table('effect_risk')->where('risk_id', '=', $riesgo->id)->where('effect_id', '=', $effect->effect_id)->delete(); } } if (!isset($_POST['stakeholder_id']) || $_POST['stakeholder_id'] == "") { $stake = NULL; } else { $stake = $_POST['stakeholder_id']; } if ($riesgo->type == 0) { //primero eliminamos relaciones previas DB::table('risk_subprocess')->where('risk_id', '=', $riesgo->id)->delete(); //agregamos en tabla risk_subprocess foreach ($_POST['subprocess_id'] as $subprocess_id) { $subprocess = \Ermtool\Subprocess::find($subprocess_id); $subprocess->risks()->attach($riesgo); } } else { if ($riesgo->type == 1) { //primero eliminamos relaciones previas DB::table('objective_risk')->where('risk_id', '=', $riesgo->id)->delete(); //agregamos en tabla objective_risk foreach ($_POST['objective_id'] as $objective_id) { $objective = \Ermtool\Objective::find($objective_id); $objective->risks()->attach($riesgo); } } } //eliminamos salto de linea del final de cada una de las textarea (en este caso solo descripción) $riesgo->name = $_POST['name']; $riesgo->description = $_POST['description']; $riesgo->expiration_date = $_POST['expiration_date']; $riesgo->type2 = 1; $riesgo->risk_category_id = $_POST['risk_category_id']; $riesgo->expected_loss = $_POST['expected_loss']; $riesgo->stakeholder_id = $stake; $riesgo->save(); if (Session::get('languaje') == 'en') { Session::flash('message', 'Risk successfully updated'); } else { Session::flash('message', 'Riesgo actualizado correctamente'); } }); return Redirect::to('riesgos.index2?organization_id=' . $_POST['org_id']); } }
public function desbloquear($id) { if (Auth::guest()) { return view('login'); } else { global $id1; $id1 = $id; DB::transaction(function () { $riesgo = \Ermtool\Risk::find($GLOBALS['id1']); $riesgo->status = 0; $riesgo->save(); if (Session::get('languaje') == 'en') { Session::flash('message', 'Template risk successfully updated'); } else { Session::flash('message', 'Riesgo tipo desbloqueado correctamente'); } }); return Redirect::to('/riskstype'); } }