[ 'data_inicial' => null, 'data_final' => null, 'motorista' => null, 'destino' => null, 'veiculo' => null, ], 'form' => [ 'veiculos' => null, 'motoristas' => null, 'destinos' => null, ] ]; } public static function getVeiculos() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('transporte_paciente_veiculo as veiculo', 'veiculo.id', 'agendar.veiculo_id') ->select( 'veiculo.id', DB::raw('CONCAT(veiculo.numero_placa, " - ", veiculo.descricao_modelo) as identificacao_veiculo'), ) ->join('transporte_paciente_viagem as viagem','viagem.id', 'agendar.viagem_id') ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data_chegada', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->where('veiculo.bloqueado', false) ->orderBy('identificacao_veiculo') ->groupBy('veiculo.id') ->get(); } public static function getMotoristas() { return DB::table('transporte_paciente_condutor as condutor') ->select('condutor.id', 'cidadao.nome') ->join('cadastro_usuario as usuario', 'usuario.id', 'condutor.usuario_id') ->join('cadastro_cidadao as cidadao', 'cidadao.id', 'usuario.cidadao_id') ->join('transporte_paciente_viagem as viagem', 'condutor.id', 'viagem.condutor_id') ->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id') ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data_chegada', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->veiculo, function($query) { $query->where('viagem.veiculo_id', request()->veiculo); }) ->orderBy('cidadao.nome') ->groupBy('condutor.id') ->get(); } public static function getDestinos() { return DB::table('transporte_paciente_agendar_transporte as agendar') ->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->join('transporte_paciente_viagem as viagem', 'viagem.id', 'agendar.viagem_id') ->select('destino.id', 'destino.descricao_destino as descricao') ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data_chegada', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->veiculo, function($query) { $query->where('viagem.veiculo_id', request()->veiculo); }) ->when(request()->motorista, function($query) { $query->where('viagem.condutor_id', request()->motorista); }) ->groupBy('destino.id') ->get(); } public static function list() { $consulta = DB::table('transporte_paciente_viagem as viagem') ->select( 'viagem.id', 'viagem.km_saida', 'viagem.km_chegada', DB::raw('viagem.km_chegada - viagem.km_saida as km_percorrido'), 'diaria', 'refeicao', 'pernoite', 'pedagio', 'combustivel', 'outras_despesas', 'descricao_outras_despesas', 'cidadao.id', 'cidadao.nome as motorista', 'viagem.total_despesa', 'agendar.destino_id', 'destino.descricao_destino as destino', 'condutor.id as id_condutor', 'viagem.id as id_viagem', 'veiculo.id', DB::raw('CONCAT(veiculo.numero_placa, " - ", veiculo.descricao_modelo) as identificacao_veiculo'), DB::raw('CONCAT( COALESCE(DATE_FORMAT(viagem.data, "%d/%m/%Y"), "-"), " ", COALESCE(DATE_FORMAT(viagem.horario_saida_real, "%H:%i"), "") ) AS data_horario_partida'), DB::raw('CONCAT( COALESCE(DATE_FORMAT(viagem.data_chegada, "%d/%m/%Y"), "-"), " ", COALESCE(DATE_FORMAT(viagem.horario_chegada, "%H:%i"), "") ) AS data_horario_chegada') ) ->join('transporte_paciente_veiculo as veiculo', 'veiculo.id', 'viagem.veiculo_id') ->join('transporte_paciente_condutor as condutor', 'condutor.id', 'viagem.condutor_id') ->join('cadastro_usuario as usuario', 'usuario.id', 'condutor.usuario_id') ->join('cadastro_cidadao as cidadao', 'cidadao.id', 'usuario.cidadao_id') ->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id') ->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id') ->where('viagem.status_id', ViagemStatus::FINALIZADO) ->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('viagem.data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->veiculo, function($query) { $query->where('viagem.veiculo_id', request()->veiculo); }) ->when(request()->motorista, function($query) { $query->where('viagem.condutor_id', request()->motorista); }) ->when(request()->destino, function($query) { $query->where('destino.id', request()->destino); }) ->orderByDesc('viagem.data') ->groupBy('viagem.id') ->get(); $totalizadores = [ 'total_diaria' => $consulta->sum('diaria'), 'total_refeicao' => $consulta->sum('refeicao'), 'total_pernoite' => $consulta->sum('pernoite'), 'total_pedagio' => $consulta->sum('pedagio'), 'total_combustivel' => $consulta->sum('combustivel'), 'total_outras_despesas' => $consulta->sum('outras_despesas'), 'total_despesa' => $consulta->sum('total_despesa'), 'total_km_percorrido' => $consulta->sum('km_percorrido'), ]; return ['consulta' => $consulta, 'totalizadores' => $totalizadores]; } }