last_login)->isToday()){ return response()->json(['error'=>'Es necesario iniciar sesión el día de hoy'],420); } $ayer = Carbon::yesterday()->format('Y-m-d 23:00:00'); $hoy = Carbon::now()->format('Y-m-d 23:59:59'); $campos = $this->camposSolicitudesServiciosOperador(); $s = ServicioDet::select($campos) ->joinDetalleServicioDet() ->joinDetalleServicioDetMovil() ->leftJoin('servicios_progreso', function($join) { $join->on('servicios_enc.id', '=', 'servicios_progreso.servicio_enc_id'); $join->on('servicios_det.id', '=', 'servicios_progreso.servicio_det_id'); }) ->whereNull('servicios_progreso.id') ->whereIn('servicios_det.estatus_servicio_id', [PENDIENTE, REPROGRAMADO, VISITA, PAGADO]) ->where('servicios_det.operador_id', $user->id) ->where('servicios_enc.sucursal_id', $user->sucursal_id) ->whereBetween('servicios_det.fecha_solicitud', [$ayer, $hoy]) ->get(); $servicios_progresos = ServicioProgreso::select('servicio_det_id')->get(); if(count($servicios_progresos) != 0){ $servicios = collect($s)->whereNotIn('id',$servicios_progresos->pluck('servicio_det_id'))->all(); }else{ $servicios = $s; } $tiempo_anclaje = Parametro::where('llave',LLAVE_ANCLAJE_SERVICIO_HORAS)->first(); $tiempo_anclaje = ($tiempo_anclaje)? $tiempo_anclaje->valor : ANCLAJE_SERVICIO_HORAS; $tiempo_anclaje = (1 + $tiempo_anclaje) * 60; $data = []; $hoy = Carbon::now(); $hoy_dia = $hoy->format('Y-m-d'); foreach ($servicios as $s){ if(Carbon::parse($s->fecha_solicitud)->format('Y-m-d') == $hoy_dia){ array_push($data, $s); }else{ if(Carbon::parse($s->fecha_solicitud)->diffInMinutes($hoy) <= $tiempo_anclaje){ array_push($data, $s); } } } //Comentado por rechazo del cliente /*$fecha_actual = Carbon::now()->format('Y-m-d'); $salida = []; foreach ($servicios as $s){ $fecha_asignacion = Carbon::createFromTimeString($s->fecha_agenda)->format('Y-m-d'); if($fecha_asignacion == $fecha_actual && $s->aceptado){ $salida[] = $s; }elseif ($fecha_asignacion != $fecha_actual){ $salida[] = $s; } }*/ return response()->success($data); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { $user = Auth::user(); $campos = $this->camposSolicitudesServiciosOperador(); $servicios = ServicioDet::select($campos) ->joinDetalleServicioDet() ->joinDetalleServicioDetMovil() ->where('servicios_det.id', $id) ->whereIn('servicios_det.estatus_servicio_id', [PENDIENTE, REPROGRAMADO, VISITA, PAGADO]) ->where('servicios_det.operador_id', $user->id) ->where('servicios_enc.sucursal_id', $user->sucursal_id) ->whereDate('servicios_det.fecha_solicitud', Carbon::now()->format('Y-m-d')) ->first(); return response()->success($servicios); } public function aceptarSolicitud($id){ DB::beginTransaction(); try { $ambiente = strtolower(config('ambiente')['ambiente']); $url = config('ambiente')[$ambiente]; $servicio_det = ServicioDet::where('id',$id)->first(); if(!$servicio_det){ DB::rollBack(); return response()->unprocessable('Error', ['El servicio no se encontró en nuestros registros.']); } $servicio_det->update(['aceptado' => 1]); $servicio_enc = ServicioEnc::where('id',$servicio_det->servicio_enc_id)->first(); $usuario = User::where('id', $servicio_enc->usuario_agenda_id)->first(); if($usuario->token_firebase) { $authorization = config('firebase')['authorization']; $project_id = config('firebase')['project_id']; $endpoint = config('firebase')['endpoint']; $headers = [ 'Authorization' => 'key=' . $authorization, 'project_id' => $project_id, 'content-type' => 'application/json' ]; $cat_servicio = CatServicio::where('id', $servicio_det->servicio_id)->first(); $datos = ['registration_ids' => array($usuario->token_firebase), 'data' => ['url' => $url, 'solicitud_id' => $servicio_det->servicio_enc_id,'servicio_id' => $id, 'title' => 'Servicio Aceptado', 'body' => $cat_servicio->nombre, 'observacion' => '']]; $client = new Client(); $client->post($endpoint, [ 'headers' => $headers, 'json' => $datos, ]); } DB::commit(); return response()->success(['result' => 'ok']); } catch (\Exception $e) { DB::rollBack(); return response()->unprocessable('Error', ['Error al aceptar solicitud.']); } } public function rechazarSolicitud(RechazarSolicitudRequest $request, $id){ $data = $request->all(); DB::beginTransaction(); try { $ambiente = strtolower(config('ambiente')['ambiente']); $url = config('ambiente')[$ambiente]; $servicio_det = ServicioDet::where('id',$id)->first(); if(!$servicio_det){ DB::rollBack(); return response()->unprocessable('Error', ['El servicio no se encontró en nuestros registros.']); } $servicio_det->update(['aceptado' => 0, 'operador_id' => null, 'vehiculo_id' => null, 'auxiliar_1' => null, 'auxiliar_2' => null, 'observacion' => $data['observacion']]); $servicio_enc = ServicioEnc::where('id',$servicio_det->servicio_enc_id)->first(); $usuario = User::where('id', $servicio_enc->usuario_agenda_id)->first(); if($usuario->token_firebase) { $authorization = config('firebase')['authorization']; $project_id = config('firebase')['project_id']; $endpoint = config('firebase')['endpoint']; $headers = [ 'Authorization' => 'key=' . $authorization, 'project_id' => $project_id, 'content-type' => 'application/json' ]; $cat_servicio = CatServicio::where('id', $servicio_det->servicio_id)->first(); $datos = ['registration_ids' => array($usuario->token_firebase), 'data' => ['url' => $url, 'solicitud_id' => $servicio_det->servicio_enc_id, 'servicio_id' => $id, 'title' => 'Servicio Rechazado', 'body' => $cat_servicio->nombre, 'observacion' => $data['observacion']]]; $client = new Client(); $client->post($endpoint, [ 'headers' => $headers, 'json' => $datos, ]); } DB::commit(); return response()->success(['result' => 'ok']); } catch (\Exception $e) { DB::rollBack(); return response()->unprocessable('Error', ['Error al rechazar solicitud.']); } } public function ServiciosDiaSiguiente() { $user = Auth::user(); $campos = $this->camposSolicitudesServiciosOperador(); $s = ServicioDet::select($campos) ->joinDetalleServicioDet() ->joinDetalleServicioDetMovil() ->whereIn('servicios_det.estatus_servicio_id', [PENDIENTE, REPROGRAMADO, VISITA, PAGADO]) ->where('servicios_det.operador_id', $user->id) ->where('servicios_enc.sucursal_id', $user->sucursal_id) ->whereDate('servicios_det.fecha_solicitud', Carbon::tomorrow()->format('Y-m-d')) ->get(); $servicios_progresos = ServicioProgreso::select('servicio_det_id')->get(); if(count($servicios_progresos) != 0){ $servicios = collect($s)->whereNotIn('id',$servicios_progresos->pluck('servicio_det_id'))->all(); }else{ $servicios = $s; } return response()->success($servicios); } }