Example #1
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index()
 {
     return Clase::all();
 }
 public function getAdditionalData()
 {
     return ['predefined_filters' => $this->getPredefinedFilters(), 'regiones' => Region::all(), 'clases' => Clase::all()];
 }
 public function getGraph()
 {
     $input = Request::createFromGlobals();
     // Get graph data
     $graphArray = [];
     $graphArray['chart']['type'] = 'column';
     $graphArray['title']['text'] = 'Reclamos por clase / región';
     if ($input->tipo_analisis == 'cantidad') {
         $graphArray['title']['text'] .= ' (cantidad)';
     } else {
         $graphArray['title']['text'] .= ' (valor)';
     }
     $graphArray['subtitle']['text'] = 'Haga click en una barra para ver información detallada';
     $graphArray['xAxis']['type'] = 'category';
     $graphArray['xAxis']['min'] = 0;
     if ($input->tipo_analisis == 'cantidad') {
         $graphArray['yAxis']['title']['text'] = 'Número de reclamos';
     } else {
         $graphArray['yAxis']['title']['text'] = 'Valor';
     }
     // Drill up button styling
     $graphArray['drilldown']['drillUpButton'] = ['relativeTo' => 'spacingBox', 'position' => ['x' => -30, 'y' => 0], 'theme' => ['fill' => 'white', 'stroke-width' => 1, 'stroke' => 'silver', 'style' => ['font-size' => '10px'], 'states' => ['hover' => ['fill' => '#bada55'], 'select' => ['fill' => '#bada55', 'stroke' => '#039']]]];
     // Estructurar datos
     $estados = [['id' => 'open', 'name' => 'Abiertos'], ['id' => 'closed', 'name' => 'Cerrados']];
     $clases = Clase::all();
     $regiones = Region::all();
     // Nivel 1: Clases (Abiertas / Cerradas)
     foreach ($estados as $estado) {
         $clasesData = [];
         foreach ($clases as $clase) {
             $query = Reclamo::whereReclamoClase($clase->id)->whereHas('ef_request', function ($query) use($estado) {
                 if ($estado['id'] == 'open') {
                     $estado['id'] = '';
                 }
                 return $query->whereRequestStatus($estado['id']);
             });
             $query = $this->applyFilters($query);
             if ($input->tipo_analisis == 'cantidad') {
                 $num_reclamos = $query->count();
             } else {
                 $reclamos = $query->get();
                 $num_reclamos = 0;
                 foreach ($reclamos as $reclamo) {
                     $num_reclamos += $reclamo->nc_monto;
                 }
             }
             $clasesData[] = ['name' => $clase->nombre, 'y' => $num_reclamos, 'drilldown' => $estado['id'] . '-' . $clase->id];
         }
         $graphArray["series"][] = ['name' => $estado['name'], 'data' => $clasesData];
     }
     // Nivel 2: Región
     foreach ($estados as $estado) {
         foreach ($clases as $clase) {
             $regionesData = [];
             foreach ($regiones as $region) {
                 $query = Reclamo::whereReclamoClase($clase->id)->whereReclamoRegion($region->id)->whereHas('ef_request', function ($query) use($estado) {
                     if ($estado['id'] == 'open') {
                         $estado['id'] = '';
                     }
                     return $query->whereRequestStatus($estado['id']);
                 });
                 $query = $this->applyFilters($query);
                 if ($input->tipo_analisis == 'cantidad') {
                     $num_reclamos = $query->count();
                 } else {
                     $reclamos = $query->get();
                     $num_reclamos = 0;
                     foreach ($reclamos as $reclamo) {
                         $num_reclamos += $reclamo->nc_monto;
                     }
                 }
                 $regionesData[] = ['name' => $region->nombre, 'y' => $num_reclamos, 'drilldown' => $estado['id'] . '-' . $clase->id . '-' . $region->id];
             }
             $graphArray['drilldown']['series'][] = ['name' => $estado['name'], 'id' => $estado['id'] . '-' . $clase->id, 'data' => $regionesData];
         }
     }
     // Nivel 3: Reclamos
     foreach ($estados as $estado) {
         foreach ($clases as $clase) {
             foreach ($regiones as $region) {
                 $reclamosData = [];
                 $query = Reclamo::whereReclamoClase($clase->id)->whereReclamoRegion($region->id)->whereHas('ef_request', function ($query) use($estado) {
                     if ($estado['id'] == 'open') {
                         $estado['id'] = '';
                     }
                     return $query->whereRequestStatus($estado['id']);
                 });
                 $query = $this->applyFilters($query);
                 $reclamos = $query->get();
                 foreach ($reclamos as $reclamo) {
                     if ($input->tipo_analisis == 'cantidad') {
                         $reclamosData[] = [(string) $reclamo->id, 1];
                     } else {
                         $reclamosData[] = [(string) $reclamo->id, $reclamo->nc_monto];
                     }
                 }
                 $graphArray['drilldown']['series'][] = ['name' => $estado['name'], 'id' => $estado['id'] . '-' . $clase->id . '-' . $region->id, 'data' => $reclamosData];
             }
         }
     }
     return $graphArray;
 }
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];
 }