コード例 #1
0
ファイル: CounterController.php プロジェクト: kmyl0/filas
 public function llamar()
 {
     $idSucursal = Auth::user()->caja->sucursal->idSucursal;
     $idTicket = Session::get('ticket');
     if (!is_null($idTicket)) {
         $ticket = \Filas\Models\Tickets::find($idTicket);
         //si existe un ticket atendido sin finalizar
         //obtener el codigo de ese ticket
         $stado = $ticket->estado;
         if ($stado == '2') {
             $llamado = $ticket->codigo . "-" . $ticket->turno . ":" . $ticket->caja->nombre;
             $pantalla = \Filas\Models\Pantalla::find($idSucursal);
             if ($pantalla->c1 != $llamado) {
                 $pantalla->c4 = $pantalla->c3;
                 $pantalla->c3 = $pantalla->c2;
                 $pantalla->c2 = $pantalla->c1;
                 $pantalla->c1 = $llamado;
                 $pantalla->save();
             }
             //    Event::fire(new \Filas\Events\TicketEvent($ticket));
             return view('counter.turnos.llamar', ['codigo' => $ticket->codigo, 'turno' => $ticket->turno]);
         } else {
             return view('counter.turnos.atender', ['codigo' => $ticket->codigo, 'turno' => $ticket->turno]);
         }
     } else {
         //aqqui todos los tickets estan finalizados y se hace una nueva llamada
         //obtener el codigo de ticket de la tabla atencion que se debe atender
         //segun el servicio del ticket y el del counter
         $caja = \Filas\Models\Cajas::where('Usuarios_idUsuario', '=', Auth::user()->idUsuario)->first();
         //el orden de atencion debe ser diferente por sucursales por sucursales
         $cantidad = \Filas\Models\Atencionsucursal::where('Sucursales_idSucursal', '=', $idSucursal)->where('estado', '=', '1')->count();
         if ($cantidad == 0) {
             \Filas\Models\Atencionsucursal::where('Sucursales_idSucursal', '=', $idSucursal)->update(['estado' => 1]);
         }
         $atencionsuc = \Filas\Models\Atencionsucursal::where('Sucursales_idSucursal', '=', $idSucursal)->where('estado', '=', '1')->orderBy('Atencion_idAtencion', 'ASC')->first();
         $prioridad = \Filas\Models\Atencion::find($atencionsuc->Atencion_idAtencion);
         //     echo $prioridad->prioridad.'<br />';
         //    $ticket = \Filas\Models\Tickets::where('estado','=','1')->has('sucsercli.cliente','=',$prioridad->prioridad)->orderBy('fecha_emision','ASC')->first();
         $atender = \Filas\Models\Sucsercli::join('tickets', 'tickets.Sucsercli_idSucsercli', '=', 'sucsercli.idSucsercli')->join('clientes', 'clientes.idCliente', '=', 'sucsercli.Clientes_idCliente')->where('sucsercli.Servicios_idServicio', '=', $caja->Servicios_idServicio)->where('clientes.prioridad', '=', $prioridad->prioridad)->where('tickets.estado', '=', '1')->orderBy('tickets.fecha_emision', 'ASC')->select('tickets.idTicket')->first();
         //     $sql= \Filas\Models\Sucsercli::join('Tickets','Tickets.Sucsercli_idSucsercli','=','Sucsercli.idSucsercli')->join('Clientes','Clientes.idCliente','=','Sucsercli.Clientes_idCliente')->where('Clientes.prioridad','=',$prioridad->prioridad)->where('Tickets.estado','=','1')->orderBy('Tickets.fecha_emision','ASC')->select('Tickets.idTicket')->toSql();
         //echo $sql;
         //      $atender = \Filas\Models\Atencion::join('Tickets','Atencion.idTicket','=','Tickets.idTicket')->join('Sucsercli','Tickets.Sucsercli_idSucsercli','=','Sucsercli.idSucsercli')->where('Tickets.estado','=','1')->where('Sucsercli.Servicios_idServicio','=',$caja->Servicios_idServicio)->orderBy('Atencion.orden','ASC')->select('Atencion.idTicket')->first();
         //probar q el orderBy este funcionando correctamente
         //print_r( $atender->idTicket);
         if (!is_null($atender)) {
             $ticket = \Filas\Models\Tickets::find($atender->idTicket);
             $ticket->estado = 2;
             $ticket->Cajas_idCaja = $caja->idCaja;
             $ticket->hora_llamada = date('H:i:s');
             $ticket->save();
             Session::put('ticket', $ticket->idTicket);
             //guardar en sesion que el idTicket que se esta atendiendo
             //hacer algo para que la pantalla muestre la llamada que se esta haciendo
             $atencionsuc->estado = 2;
             $atencionsuc->save();
             $llamado = $ticket->codigo . "-" . $ticket->turno . ":" . $ticket->caja->nombre;
             $pantalla = \Filas\Models\Pantalla::find($idSucursal);
             if ($pantalla->c1 != $llamado) {
                 $pantalla->c4 = $pantalla->c3;
                 $pantalla->c3 = $pantalla->c2;
                 $pantalla->c2 = $pantalla->c1;
                 $pantalla->c1 = $llamado;
                 $pantalla->save();
             }
             // Event::fire(new \Filas\Events\TicketEvent($ticket));
             return view('counter.turnos.llamar', ['codigo' => $ticket->codigo, 'turno' => $ticket->turno]);
         } else {
             $cantidadTickets = \Filas\Models\Tickets::where('estado', '=', '1')->whereHas('sucsercli', function ($q) {
                 $caja = \Filas\Models\Cajas::where('Usuarios_idUsuario', '=', Auth::user()->idUsuario)->first();
                 $q->where('Sucursales_idSucursal', '=', Auth::user()->caja->sucursal->idSucursal)->where('Servicios_idServicio', '=', $caja->Servicios_idServicio);
             })->count();
             //   echo $cantidadTickets;
             if ($cantidadTickets > 0) {
                 $atencionsuc->estado = 2;
                 $atencionsuc->save();
                 //    return 'realizar la busqueda con el siguiente de la fila';
                 return Redirect::to('/llamar');
             } else {
                 return view('counter.turnos.vacio');
             }
         }
     }
 }