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