veiculo); $identificacaoVeiculo = request()->veiculo ? $veiculo->numero_placa . ' - ' . $veiculo->descricao_modelo : 'Todos'; return [ 'data_inicial' => Carbon::parse(request()->data_inicial)->format('d/m/Y'), 'data_final' => Carbon::parse(request()->data_final)->format('d/m/Y'), 'veiculo' => $identificacaoVeiculo, 'motorista' => request()->motorista ? Condutor::find(request()->motorista)->usuario->cidadao->nome : 'Todos', 'destino' => request()->destino ? Destino::find(request()->destino)->descricao_destino : 'Todos', 'colunas' => collect(request()->selectedCols), 'items' => $items, 'total_diaria' => $items->sum('diaria'), 'total_km_percorrido' => $items->sum('km_percorrido'), 'total_refeicao' => $items->sum('refeicao'), 'total_pernoite' => $items->sum('pernoite'), 'total_pedagio' => $items->sum('pedagio'), 'total_combustivel' => $items->sum('combustivel'), 'total_outras_despesas' => $items->sum('outras_despesas'), 'total_despesa' => $items->sum('total_despesa'), ]; } private static function getItems() { return 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(); } }