[ 'data_inicial' => null, 'data_final' => null, 'cidade' => null, 'destino' => null ], 'form' => [ 'cidades' => [], 'destinos' => [] ] ]; } public static function list() { return DB::table('transporte_paciente_viagem as viagem') ->leftJoin('transporte_paciente_veiculo as veiculo','viagem.veiculo_id', 'veiculo.id') ->leftJoin('transporte_paciente_condutor as condutor', 'condutor.id', 'viagem.condutor_id') ->leftJoin('cadastro_usuario as usuario', 'condutor.usuario_id', 'usuario.id') ->leftJoin('cadastro_cidadao as cidadao', 'usuario.cidadao_id', 'cidadao.id') ->leftJoin('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id') ->leftJoin('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->leftJoin('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id') ->select( 'viagem.id', 'viagem.data', DB::raw('GROUP_CONCAT(DISTINCT municipio.nome) as cidade'), DB::raw('GROUP_CONCAT(DISTINCT descricao_destino) as destino'), 'viagem.protocolo', 'cidadao.nome as motorista', DB::raw('CONCAT(veiculo.numero_placa," - ",veiculo.descricao_modelo) AS veiculo'), ) ->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d')) ->when(request()->cidade, function($query){ $query->where('municipio.id', request()->cidade); }) ->when(request()->destino, function($query){ $query->where('destino.id', request()->destino); }) ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->groupBy('viagem.id') ->get(); } public static function reopen($id) { $viagem = Viagem::find($id); $viagem->status_id = ViagemStatus::ABERTO; $viagem->save(); $agendamentos = Agendar::where('viagem_id', $viagem->id)->get(); foreach($agendamentos as $agendamento) { $agendamento->status_id = Status::AGENDADO; $agendamento->save(); HistoricoService::create($agendamento, Status::AGENDADO, $agendamento->updated_lotacao_id); Faturamento::where('agendamento_id', $agendamento->id)->delete(); } } public static function getCidades() { return DB::table('transporte_paciente_viagem as viagem') ->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id') ->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->join('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id') ->select('municipio.id', 'municipio.nome') ->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d')) ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->groupBy('municipio.id') ->get(); } public static function getDestinos() { return DB::table('transporte_paciente_viagem as viagem') ->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id') ->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->join('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id') ->select('destino.id', 'destino.descricao_destino as descricao') ->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d')) ->where('municipio.id', request()->cidade) ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->groupBy('destino.id') ->get(); } }