public function getResults() { $input = Request::createFromGlobals(); // Traer reclamos $reclamos = Reclamo::with(['reclamo_nc', 'clase', 'region']); $reclamos = $this->applyFilters($reclamos); $reclamos = $reclamos->get(); foreach ($reclamos as &$reclamo) { $reclamo->duracion_dias = $input->duration == 'calendar' ? $reclamo->duracion_calendario / 24 : $reclamo->duracion_laborable / 8; } // Reorder data $regiones = Region::all(); $returnData = []; foreach ($regiones as $region) { $regionArray = ['name' => $region->nombre, 'data' => [], 'total' => 0]; $reclamos_region = $reclamos->filter(function ($reclamo) use($region) { return $reclamo->reclamo_region == $region->id; }); if (count($reclamos_region) > 0) { $total_nc = 0; $total_nd = 0; foreach ($reclamos_region as $reclamo) { foreach ($reclamo->reclamo_nc as $nota_credito) { $regionArray['data'][] = ['reclamo' => $reclamo->id, 'cliente' => $reclamo->cliente_codigo . ' - ' . $reclamo->cliente_nombre, 'clase' => $reclamo->clase->nombre, 'analisis' => $reclamo->analisis_descripcion, 'decision' => $reclamo->reclamo_decision->nombre, 'nc_tipo' => $nota_credito->tipo_label, 'nc_fecha' => $nota_credito->fecha, 'nc_numero' => $nota_credito->numero, 'nc_monto' => $nota_credito->monto]; if ($nota_credito->tipo == 'nc') { $total_nc += $nota_credito->monto; } else { $total_nd += $nota_credito->monto; } } } if (count($reclamo->reclamo_nc) > 0) { $regionArray['total_nc'] = $total_nc; $regionArray['total_nd'] = $total_nd; $returnData[] = $regionArray; } } } // Get the records return $returnData; }
public function getResults() { $input = Request::createFromGlobals(); // Tomar clases $clases = Reclamo::orderBy('reclamo_clase')->lists('reclamo_clase'); $clases = $clases->unique(); // Tomar regiones $regiones = Region::all(); // Get unfiltered requests $reclamos = Reclamo::where('id', '>', 0); // Apply filters $reclamos = $this->applyFilters($reclamos); $reclamos = $reclamos->get(); $records = []; foreach ($clases as $clase) { $obj_clase = Clase::find($clase); foreach ($regiones as $region) { $cliente_reclamos = $reclamos->filter(function ($reclamo) use($clase, $region) { return $reclamo->reclamo_clase == $clase && $reclamo->reclamo_region == $region->id; }); $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) { $records[] = ['nombre' => $obj_clase->nombre . ' - ' . $region->nombre, 'num_abiertos' => $numAbiertos, 'monto_abiertos' => $montoAbiertos, 'duracion_abiertos' => $duracionAbiertos, 'num_cerrados' => $numCerrados, 'monto_cerrados' => $montoCerrados, 'duracion_cerrados' => $duracionCerrados, 'total' => $numAbiertos + $numCerrados]; } } } // Get the records return $records; }
protected function getGraphClaseRegion() { $input = Request::createFromGlobals(); // Get graph/table data $graphArray = []; $tableArray = []; $graphArray['chart']['type'] = 'column'; $graphArray['title']['text'] = 'Reclamos por clase / región'; if ($input->filters['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->filters['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']); })->analysis(); if ($input->filters['tipo_analisis'] == 'cantidad') { $num_reclamos = $query->count(); } else { $num_reclamos = $query->sum('nc_monto'); } if ($num_reclamos) { $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']); })->analysis(); if ($input->filters['tipo_analisis'] == 'cantidad') { $num_reclamos = $query->count(); } else { $num_reclamos = $query->sum('nc_monto'); } if ($num_reclamos) { $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 = []; $reclamos = 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']); })->analysis()->get(); if ($reclamos) { foreach ($reclamos as $reclamo) { if ($input->filters['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 ['graph' => $graphArray, 'table' => $tableArray]; }
/** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { $record = Region::find($id)->delete(); return new AjaxResponse('success', ''); }
public function getAdditionalData() { return ['predefined_filters' => $this->getPredefinedFilters(), 'regiones' => Region::all(), 'clases' => Clase::all()]; }
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]; }