Example #1
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int  $id
  * @return Response
  */
 public function destroy($id)
 {
     if (count(Causa::where('problema_id', $id)->get()) > 0) {
         return new AjaxResponse('error', 'Existen causas raíz asociadas a este problema. No se puede eliminar');
     }
     $record = Problema::find($id)->delete();
     return new AjaxResponse('success', '');
 }
Example #2
0
 public function getProblemasByClase($id)
 {
     return Problema::where('clase_id', $id)->get();
 }
 public function getResults()
 {
     $input = Request::createFromGlobals();
     // Tomar clases
     $clases = Reclamo::orderBy('reclamo_clase')->lists('reclamo_clase');
     $clases = $clases->unique();
     // Get unfiltered requests
     $reclamos = Reclamo::where('id', '>', 0);
     // Apply filters
     $reclamos = $this->applyFilters($reclamos);
     $reclamos = $reclamos->with('reclamo_causas')->get();
     $records = [];
     foreach ($clases as $clase) {
         $finalData = [];
         $obj_clase = Clase::find($clase);
         $problemas = Problema::where('clase_id', $obj_clase->id)->get();
         foreach ($problemas as $problema) {
             $causas = Causa::where('problema_id', $problema->id)->get();
             foreach ($causas as $causa) {
                 $cliente_reclamos = $reclamos->filter(function ($reclamo) use($clase) {
                     return $reclamo->reclamo_clase == $clase;
                 })->filter(function ($reclamo) use($causa) {
                     $retval = false;
                     foreach ($reclamo->reclamo_causas as $reclamo_causa) {
                         if ($reclamo_causa->causa_id == $causa->id && !$retval) {
                             $retval = true;
                         }
                     }
                     return $retval;
                 });
                 $numAbiertos = 0;
                 $montoAbiertos = 0;
                 $totalTimeArrayAbiertos = ['work' => 0, 'non-work' => 0, 'total' => 0];
                 $numCerrados = 0;
                 $montoCerrados = 0;
                 $totalTimeArrayCerrados = ['work' => 0, 'non-work' => 0, 'total' => 0];
                 foreach ($cliente_reclamos as $reclamo) {
                     if ($reclamo->reclamo_fecha_fin != null && $reclamo->reclamo_fecha_fin != '' && $reclamo->reclamo_fecha_fin != '0000-00-00 00:00:00') {
                         // Set end date
                         $date_end = $reclamo->reclamo_fecha_fin;
                         // Get times
                         $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                         $totalTimeArrayCerrados['work'] += $timeArray['work'];
                         $totalTimeArrayCerrados['non-work'] += $timeArray['non-work'];
                         $totalTimeArrayCerrados['total'] += $timeArray['total'];
                         $numCerrados++;
                         $montoCerrados += $reclamo->nc_monto;
                     } else {
                         // Set end date
                         $date_end = date('Y-m-d H:i:s');
                         // Get times
                         $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                         $totalTimeArrayAbiertos['work'] += $timeArray['work'];
                         $totalTimeArrayAbiertos['non-work'] += $timeArray['non-work'];
                         $totalTimeArrayAbiertos['total'] += $timeArray['total'];
                         $numAbiertos++;
                         $montoAbiertos += $reclamo->nc_monto;
                     }
                     // Set end date
                     $date_end = $reclamo->reclamo_fecha_fin ? $reclamo->reclamo_fecha_fin : date('Y-m-d H:i:s');
                     // Get times
                     $timeArray = TimeController::getHours($reclamo->reclamo_fecha_inicio, $date_end);
                 }
                 $duracionAbiertos = 0;
                 $duracionCerrados = 0;
                 if ($input->duration == 'calendar') {
                     if ($numAbiertos > 0) {
                         $duracionAbiertos = $totalTimeArrayAbiertos['total'] / $numAbiertos / 24;
                     }
                     if ($numCerrados > 0) {
                         $duracionCerrados = $totalTimeArrayCerrados['total'] / $numCerrados / 24;
                     }
                 } else {
                     if ($numAbiertos > 0) {
                         $duracionAbiertos = $totalTimeArrayAbiertos['work'] / $numAbiertos / 8;
                     }
                     if ($numCerrados > 0) {
                         $duracionCerrados = $totalTimeArrayCerrados['work'] / $numCerrados / 8;
                     }
                 }
                 if ($numAbiertos + $numCerrados > 0) {
                     $finalData[] = ['nombre' => $problema->nombre . ' - ' . $causa->nombre, 'num_abiertos' => $numAbiertos, 'monto_abiertos' => $montoAbiertos, 'duracion_abiertos' => $duracionAbiertos, 'num_cerrados' => $numCerrados, 'monto_cerrados' => $montoCerrados, 'duracion_cerrados' => $duracionCerrados, 'total' => $numAbiertos + $numCerrados];
                 }
             }
         }
         if (count($finalData) > 0) {
             $records[] = ['name' => $obj_clase->nombre, 'data' => $finalData];
         }
     }
     // Get the records
     return $records;
 }
Example #4
0
 public function getFormData()
 {
     $input = Request::createFromGlobals();
     $reclamo = Reclamo::find($input->id);
     $clases = Clase::all();
     $regiones = Region::all();
     $problemas = Problema::all();
     if (count($problemas) > 0) {
         $causas = $this->getCausas($problemas->first()->id);
     } else {
         $causas = [];
     }
     $acciones = Accion::all();
     $decisiones = Solucion::all();
     $usuarios = User::noAdmin()->get();
     return ['clases' => $clases, 'regiones' => $regiones, 'problemas' => $problemas, 'causas' => $causas, 'acciones' => $acciones, 'decisiones' => $decisiones, 'usuarios' => $usuarios];
 }