Carga inicial

This commit is contained in:
IvanAS94
2025-12-26 17:21:11 -08:00
parent 45d9afc951
commit 51880798ca
359 changed files with 42159 additions and 1 deletions

View 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'));
}
}

File diff suppressed because it is too large Load Diff