Carga inicial
This commit is contained in:
130
app/Http/Controllers/Operador/EncuestasController.php
Normal file
130
app/Http/Controllers/Operador/EncuestasController.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Operador;
|
||||
|
||||
use App\Models\ServicioProgreso;
|
||||
use const App\Http\Controllers\DOMESTICO;
|
||||
use App\Models\RespuestaDomestico;
|
||||
use App\Models\RespuestaEmpresarial;
|
||||
use App\Models\ServicioDet;
|
||||
use App\Models\ServicioEncuestaDomestico;
|
||||
use App\Models\ServicioEncuestaEmpresarial;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use DB;
|
||||
use Log;
|
||||
|
||||
class EncuestasController extends Controller
|
||||
{
|
||||
|
||||
public function store(Request $request, $servicio_id)
|
||||
{
|
||||
$now = Carbon::now()->format('Y-m-d');
|
||||
$servicio_det = ServicioDet::where('id', $servicio_id)->firstOrFail();
|
||||
|
||||
list($fecha) = explode(" ", $servicio_det->fecha_solicitud);
|
||||
|
||||
//Validar fecha de solicitud
|
||||
if($now != $fecha){
|
||||
//return response()->unprocessable('Parametros inválidos',['No se puede realizar la encuesta ya que corresponde a otra fecha.']);
|
||||
}
|
||||
|
||||
$data = $request->all();
|
||||
|
||||
if($servicio_det->tipo_servicio_id == DOMESTICO) {
|
||||
$validator = Validator::make($data, [
|
||||
'*.pregunta_id' => 'numeric|exists:preguntas_domestico,id',
|
||||
'*.respuesta_id' => 'numeric|exists:respuestas_domestico,id',
|
||||
'*.respuesta' => 'string|max:255'
|
||||
]);
|
||||
|
||||
if(ServicioEncuestaDomestico::where('servicio_det_id', $servicio_id)->first()){
|
||||
//return response()->unprocessable('Parametros inválidos',['La encuesta para este servicio ya se realizó.']);
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
foreach ($data as $d){
|
||||
if(isset($d['respuesta_id'])){
|
||||
$respuesta = RespuestaDomestico::where('pregunta_id', $d['pregunta_id'])
|
||||
->where('id', $d['respuesta_id'])
|
||||
->first();
|
||||
|
||||
if(!$respuesta){
|
||||
return response()->unprocessable('Parametros inválidos',['La respuesta no corresponde a la pregunta.']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
$validator = Validator::make($data, [
|
||||
'*.pregunta_id' => 'numeric|exists:preguntas_empresarial,id',
|
||||
'*.respuesta_id' => 'numeric|exists:respuestas_empresarial,id',
|
||||
'*.respuesta' => 'string|max:255'
|
||||
]);
|
||||
|
||||
if(ServicioEncuestaEmpresarial::where('servicio_det_id', $servicio_id)->first()){
|
||||
//return response()->unprocessable('Parametros inválidos',['La encuesta para este servicio ya se realizó.']);
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
foreach ($data as $d){
|
||||
if(isset($d['respuesta_id'])){
|
||||
$respuesta = RespuestaEmpresarial::where('pregunta_id', $d['pregunta_id'])
|
||||
->where('id', $d['respuesta_id'])
|
||||
->first();
|
||||
|
||||
if(!$respuesta){
|
||||
return response()->unprocessable('Parametros inválidos',['La respuesta no corresponde a la pregunta.']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($validator->fails()){
|
||||
return response()->unprocessable('Parametros inválidos',$validator->errors()->all());
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
if($servicio_det->tipo_servicio_id == DOMESTICO) {
|
||||
foreach ($data as $d){
|
||||
|
||||
$data_domestico = [
|
||||
'servicio_det_id' => $servicio_id,
|
||||
'pregunta_id' => $d['pregunta_id'],
|
||||
'respuesta_id' => (isset($d['respuesta_id']))? $d['respuesta_id'] : null,
|
||||
'respuesta' => (isset($d['respuesta']))? $d['respuesta'] : null
|
||||
];
|
||||
ServicioEncuestaDomestico::create($data_domestico);
|
||||
}
|
||||
|
||||
}else{
|
||||
foreach ($data as $d){
|
||||
$data_empresarial = [
|
||||
'servicio_det_id' => $servicio_id,
|
||||
'pregunta_id' => $d['pregunta_id'],
|
||||
'respuesta_id' => (isset($d['respuesta_id']))? $d['respuesta_id'] : null,
|
||||
'respuesta' => (isset($d['respuesta']))? $d['respuesta'] : null
|
||||
];
|
||||
ServicioEncuestaEmpresarial::create($data_empresarial);
|
||||
}
|
||||
}
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $servicio_det->servicio_enc_id)
|
||||
->where('servicio_det_id', $servicio_det->id)
|
||||
->first();
|
||||
|
||||
if($servicio_progreso){
|
||||
$servicio_progreso->update(['encuesta_contestada' => 1]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->unprocessable('Error', ['Error al realizar la encuesta.']);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user