Carga inicial
This commit is contained in:
110
app/Http/Controllers/AtencionClientes/EncuestasController.php
Normal file
110
app/Http/Controllers/AtencionClientes/EncuestasController.php
Normal file
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\AtencionClientes;
|
||||
|
||||
use const App\Http\Controllers\DOMESTICO;
|
||||
use App\Models\PreguntaDomestico;
|
||||
use App\Models\PreguntaEmpresarial;
|
||||
use App\Models\RespuestaDomestico;
|
||||
use App\Models\RespuestaEmpresarial;
|
||||
use App\Models\ServicioDet;
|
||||
use App\Models\ServicioEnc;
|
||||
use App\Models\ServicioEncuestaDomestico;
|
||||
use App\Models\ServicioEncuestaEmpresarial;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use DB;
|
||||
use Log;
|
||||
|
||||
class EncuestasController extends Controller
|
||||
{
|
||||
public function resultados($servicio_id){
|
||||
|
||||
$puntuacion = 0;
|
||||
|
||||
$servicio_det = ServicioDet::select('servicios_det.*', 'cat_servicios.nombre as servicio_evaluado', 'servicios_progreso.firma')
|
||||
->join('cat_servicios', 'servicios_det.servicio_id', '=', 'cat_servicios.id')
|
||||
->leftJoin('servicios_progreso', 'servicios_det.id','=','servicios_progreso.servicio_det_id')
|
||||
->where('servicios_det.id', $servicio_id)
|
||||
->firstOrFail();
|
||||
|
||||
$servicio = ServicioEnc::select('clientes.denominacion', 'clientes_domicilios.nombre_responsable_sucursal as contacto')
|
||||
->join('clientes', 'servicios_enc.cliente_id', '=', 'clientes.id')
|
||||
->join('clientes_domicilios', 'servicios_enc.cliente_domicilio_id', '=', 'clientes_domicilios.id')
|
||||
->where('servicios_enc.id', $servicio_det->servicio_enc_id)
|
||||
->first();
|
||||
|
||||
if($servicio_det->tipo_servicio_id == DOMESTICO){
|
||||
$encuesta = ServicioEncuestaDomestico::select('servicios_encuestas_domestico.*', 'respuestas_domestico.puntuacion', 'respuestas_domestico.tipo_campo')
|
||||
->leftJoin('respuestas_domestico','servicios_encuestas_domestico.respuesta_id', '=', 'respuestas_domestico.id')
|
||||
->where('servicios_encuestas_domestico.servicio_det_id', $servicio_id)
|
||||
->get();
|
||||
|
||||
$nombre_cliente = $servicio->denominacion;
|
||||
$servicio_evaluado = $servicio_det->servicio_evaluado;
|
||||
$fecha = $servicio_det->fecha_solicitud;
|
||||
$firma = $servicio_det->firma;
|
||||
}else{
|
||||
$encuesta = ServicioEncuestaEmpresarial::select('servicios_encuestas_empresarial.*', 'respuestas_empresarial.puntuacion', 'respuestas_empresarial.tipo_campo')
|
||||
->leftJoin('respuestas_empresarial', 'servicios_encuestas_empresarial.respuesta_id', '=', 'respuestas_empresarial.id')
|
||||
->where('servicios_encuestas_empresarial.servicio_det_id', $servicio_id)
|
||||
->get();
|
||||
|
||||
$empresa = $servicio->denominacion;
|
||||
$contacto = $servicio->contacto;
|
||||
$servicio_evaluado = $servicio_det->servicio_evaluado;
|
||||
$fecha = $servicio_det->fecha_solicitud;
|
||||
$firma = $servicio_det->firma;
|
||||
}
|
||||
$preguntas = [];
|
||||
if($servicio_det->requiere_encuesta && count($encuesta) > 0) {
|
||||
|
||||
$result_collect = collect($encuesta)->where('tipo_campo', '=', 'Checkbox');
|
||||
$count = $result_collect->count();
|
||||
$sum = $result_collect->sum('puntuacion');
|
||||
$puntuacion = $sum / $count;
|
||||
|
||||
$preguntas_id = collect($encuesta)->pluck('pregunta_id');
|
||||
|
||||
$orden = 1;
|
||||
|
||||
if ($servicio_det->tipo_servicio_id == DOMESTICO) {
|
||||
$preguntas = PreguntaDomestico::withTrashed()->whereIn('id',$preguntas_id)->orderBy('orden', 'asc')->get();
|
||||
|
||||
foreach ($preguntas as $eD){
|
||||
$eD->respuestas = RespuestaDomestico::withTrashed()->where('pregunta_id', $eD->id)
|
||||
->get();
|
||||
|
||||
$eD->orden = $orden++;
|
||||
}
|
||||
}else{
|
||||
$preguntas = PreguntaEmpresarial::withTrashed()->whereIn('id',$preguntas_id)->orderBy('orden', 'asc')->get();
|
||||
|
||||
foreach ($preguntas as $eE){
|
||||
$eE->respuestas = RespuestaEmpresarial::withTrashed()->where('pregunta_id', $eE->id)
|
||||
->get();
|
||||
$eE->orden = $orden++;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($preguntas as $p){
|
||||
foreach ($p->respuestas as $r){
|
||||
foreach ($encuesta as $e){
|
||||
if($r->pregunta_id == $e->pregunta_id){
|
||||
if($r->id == $e->respuesta_id && $r->tipo_campo == 'Checkbox'){
|
||||
$r->seleccionado = 1;
|
||||
}else{
|
||||
$r->seleccionado = ($r->tipo_campo == 'Checkbox')? 0 : null;
|
||||
}
|
||||
$r->respuesta = ($e->respuesta)? $e->respuesta : null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$puntuacion = round($puntuacion, 2);
|
||||
|
||||
return response()->success(compact('empresa', 'contacto', 'nombre_cliente', 'servicio_evaluado', 'fecha', 'firma', 'preguntas', 'puntuacion'));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user