Ejemplo n.º 1
0
 public function generarDatosPlanilla($viaje)
 {
     $consulta = Planilla::select('*')->where('viaje_id', $viaje)->first()->load('viaje');
     $consulta['giros'] = \DB::table('giros')->join('viaje_giros', 'giros.id', '=', 'viaje_giros.giro_id')->join('viajes', 'viaje_giros.viaje_id', '=', 'viajes.id')->where('viajes.id', $viaje)->select('*')->get();
     $consulta['pasajeros'] = \DB::table('pasajeros')->join('viaje_pasajeros', 'pasajeros.id', '=', 'viaje_pasajeros.pasajero_id')->where('viajes.id', $viaje)->join('viajes', 'viaje_pasajeros.viaje_id', '=', 'viajes.id')->select('*')->get();
     $consulta['paquetes'] = \DB::table('paquetes')->join('viaje_paquetes', 'paquetes.id', '=', 'viaje_paquetes.paquete_id')->where('viajes.id', $viaje)->join('viajes', 'viaje_paquetes.viaje_id', '=', 'viajes.id')->select('*')->get();
     $consulta['conductor'] = Viaje::find($viaje)->conductor;
     return $consulta;
 }
 public function finalizarViaje(Request $request)
 {
     $noty = new NotificacionController();
     $conductor = DB::table('viajes')->where('conductor_id', $request['id'])->where('estado', 'En ruta')->first();
     if ($conductor) {
         $viaje = Viaje::find($conductor->id);
         if ($viaje) {
             if ($viaje->update(['estado' => 'Finalizado'])) {
                 foreach ($viaje->pasajeros as $pasajero) {
                     $pasajero->estado = 'Finalizado';
                     if ($pasajero->save()) {
                         $viaje['datos'] = DB::table('datos_solicitudes_pasajeros')->where('identificacion', $pasajero->identificacion)->join('solicitudes_cliente', 'datos_solicitudes_pasajeros.solicitud_id', '=', 'solicitudes_cliente.id')->select('solicitudes_cliente.estado', 'solicitudes_cliente.id', 'solicitudes_cliente.cliente_id')->where('solicitudes_cliente.estado', '<>', 'f')->get();
                         foreach ($viaje['datos'] as $dato) {
                             DB::table('solicitudes_cliente')->where('id', $dato->id)->update(['estado' => 'f']);
                             $noty->enviarNotificacionClientes('Finalizo su solicitud, gracias por haber echo uso de nuestro servicio', $dato->cliente_id, 'Finalizado');
                         }
                     }
                 }
                 foreach ($viaje->giros as $giro) {
                     $giro->estado = 'Finalizado';
                     if ($giro->save()) {
                         $viaje['datos'] = DB::table('datos_solicitudes_girospaquetes')->join('solicitudes_cliente', 'datos_solicitudes_girospaquetes.solicitud_id', '=', 'solicitudes_cliente.id')->join('clientes', 'solicitudes_cliente.cliente_id', '=', 'clientes.id')->join('giros', 'datos_solicitudes_girospaquetes.destinatario', '=', 'giros.nombre_receptor')->select('solicitudes_cliente.id', 'solicitudes_cliente.estado', 'solicitudes_cliente.cliente_id', 'clientes.identificacion')->where('clientes.identificacion', $giro->ide_remitente)->where('solicitudes_cliente.tipo', 'giro')->where('solicitudes_cliente.estado', '<>', 'f')->get();
                         foreach ($viaje['datos'] as $dato) {
                             DB::table('solicitudes_cliente')->where('id', $dato->id)->update(['estado' => 'f']);
                             $noty->enviarNotificacionClientes('Finalizo su solicitud, gracias por haber echo uso de nuestro servicio', $dato->cliente_id, 'Finalizado');
                         }
                     }
                 }
                 foreach ($viaje->paquetes as $paquete) {
                     $paquete->estado = 'Finalizado';
                     if ($paquete->save()) {
                         $viaje['datos'] = DB::table('datos_solicitudes_girospaquetes')->join('solicitudes_cliente', 'datos_solicitudes_girospaquetes.solicitud_id', '=', 'solicitudes_cliente.id')->join('clientes', 'solicitudes_cliente.cliente_id', '=', 'clientes.id')->join('paquetes', 'datos_solicitudes_girospaquetes.destinatario', '=', 'paquetes.nombre_receptor')->select('solicitudes_cliente.id', 'solicitudes_cliente.estado', 'solicitudes_cliente.cliente_id', 'clientes.identificacion')->where('clientes.identificacion', $paquete->ide_remitente)->where('solicitudes_cliente.tipo', 'paquete')->where('solicitudes_cliente.estado', '<>', 'f')->get();
                         foreach ($viaje['datos'] as $dato) {
                             DB::table('solicitudes_cliente')->where('id', $dato->id)->update(['estado' => 'f']);
                             $noty->enviarNotificacionClientes('Finalizo su solicitud, gracias por haber echo uso de nuestro servicio', $dato->cliente_id, 'Finalizado');
                         }
                     }
                 }
             }
         } else {
             return JsonResponse::create('No existe un viaje para esta id');
         }
     } else {
         return JsonResponse::create('No se encontro el viaje asociado al conductor');
     }
     return JsonResponse::create($viaje);
 }