Example #1
0
 public function calcControlValue($id)
 {
     //obtenemos la última evaluación de cada una de las pruebas (independientes de si están abiertas o cerradas)
     //primero obtenemos la fecha
     $last_diseno_updated = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 0)->max('updated_at');
     if (isset($last_diseno_updated) && !empty($last_diseno_updated)) {
         //ahora obtenemos la evaluación en esa fecha
         $last_diseno = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 0)->where('updated_at', '=', $last_diseno_updated)->select('results', 'status')->first();
     } else {
         $last_diseno = NULL;
     }
     //hacemos lo mismo con cada una de las pruebas
     $last_efectividad_updated = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 1)->max('updated_at');
     if (isset($last_efectividad_updated) && !empty($last_efectividad_updated)) {
         //ahora obtenemos la evaluación en esa fecha
         $last_efectividad = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 1)->where('updated_at', '=', $last_efectividad_updated)->select('results', 'status')->first();
     } else {
         $last_efectividad = NULL;
     }
     $last_sustantiva_updated = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 2)->max('updated_at');
     if (isset($last_sustantiva_updated) && !empty($last_sustantiva_updated)) {
         //ahora obtenemos la evaluación en esa fecha
         $last_sustantiva = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 2)->where('updated_at', '=', $last_sustantiva_updated)->select('results', 'status')->first();
     } else {
         $last_sustantiva = NULL;
     }
     $last_cumplimiento_updated = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 3)->max('updated_at');
     if (isset($last_cumplimiento_updated) && !empty($last_cumplimiento_updated)) {
         //ahora obtenemos la evaluación en esa fecha
         $last_cumplimiento = DB::table('control_evaluation')->where('control_id', '=', $id)->where('kind', '=', 3)->where('updated_at', '=', $last_diseno_updated)->select('results', 'status')->first();
     } else {
         $last_cumplimiento = NULL;
     }
     //Actualización 05-12-16: Se debe ver también la última prueba de auditoría que se encuentre cerrada y que corresponda a dicho control
     //primero obtenemos la última prueba
     $max_date = \Ermtool\Audit_test::getMaxDate($id);
     //ahora obtenemos la prueba
     $test = \Ermtool\Audit_test::getTestFromDate($max_date, $id);
     //vemos cada una de las pruebas (que estén cerradas, y sumamos en variable de efectivo en el caso de que lo sean; además guardamos el total de pruebas)
     $efectivas = 0;
     $total = 0;
     if ($last_diseno != NULL && isset($last_diseno->status) && $last_diseno->status == 2) {
         $total += 1;
         if ($last_diseno->results == 1) {
             $efectivas += 1;
         }
     }
     if ($last_efectividad != NULL && isset($last_efectividad->status) && $last_efectividad->status == 2) {
         $total += 1;
         if ($last_efectividad->results == 1) {
             $efectivas += 1;
         }
     }
     if ($last_sustantiva != NULL && isset($last_sustantiva->status) && $last_sustantiva->status == 2) {
         $total += 1;
         if ($last_sustantiva->results == 1) {
             $efectivas += 1;
         }
     }
     if ($last_cumplimiento != NULL && isset($last_cumplimiento->status) && $last_cumplimiento->status == 2) {
         $total += 1;
         if ($last_cumplimiento->results == 1) {
             $efectivas += 1;
         }
     }
     if ($test != NULL) {
         $total += 1;
         if ($test->results == 1) {
             $efectivas += 1;
         }
     }
     //ahora vemos si el total de pruebas realizadas y cerradas es igual a la cantidad de pruebas efectivas
     if ($total == $efectivas) {
         //guardamos en control_eval_risk_temp como control efectivo
         DB::table('control_eval_risk_temp')->insert(['result' => 1, 'control_id' => $id, 'created_at' => date('Y-m-d H:i:s')]);
     } else {
         //guardamos como inefectivo
         DB::table('control_eval_risk_temp')->insert(['result' => 2, 'control_id' => $id, 'created_at' => date('Y-m-d H:i:s')]);
     }
     return 0;
 }