Carbon::createFromFormat('Y-m-d', request()->periodo['start'])->format('d/m/Y'), 'fim' => Carbon::createFromFormat('Y-m-d', request()->periodo['end'])->format('d/m/Y'), 'municipio' => request()->municipio ? Municipio::find(request()->municipio)->nome : 'Todos', 'destino' => request()->destino ? Destino::find(request()->destino)->descricao_destino : 'Todos', 'veiculo' => request()->veiculo ? Veiculo::find(request()->veiculo)->numero_placa : 'Todos', 'motivo' => request()->motivo ? Motivo::find(request()->motivo)->descricao : 'Todos', 'colunas' => collect(request()->selectedCols), 'items' => $items, 'total_paciente' => $items->sum('total_paciente'), 'total_acompanhantes' => $items->sum('quantidade_acompanhantes'), 'total_paciente_acompanhante' => $items->sum('quantidade_paciente_acompanhante'), ]; } private static function getItems() { $now = Carbon::now(); $currentDate = $now->format('Y-m-d'); $consulta = DB::table('transporte_paciente_agendar_transporte as agendar') ->select( 'agendar.acompanhante', 'agendar.veiculo_id', 'municipio.nome as municipio', 'destino.descricao_destino as destino', 'motivo.descricao as motivo_descricao', DB::raw("CONCAT(DATE_FORMAT(agendar.data, '%d/%m/%Y'), ' - ', DATE_FORMAT(agendar.horario, '%H:%i')) as hora_agendamento"), DB::raw("CONCAT(veiculo.numero_placa, ' - ', veiculo.descricao_modelo) AS descricao_veiculo"), DB::raw('COUNT(*) as total_paciente'), DB::raw('SUM(IFNULL(agendar.acompanhante, 0)) AS quantidade_acompanhantes'), DB::raw('SUM(IFNULL(agendar.acompanhante, 0) + 1) AS quantidade_paciente_acompanhante'), DB::raw('IF(viagem.protocolo IS NOT NULL, viagem.protocolo, "-") AS protocolo') ) ->leftJoin('transporte_paciente_veiculo as veiculo', 'agendar.veiculo_id', 'veiculo.id') ->leftJoin('transporte_paciente_veiculo_marca as marca', 'marca.id', 'veiculo.marca_id') ->leftJoin('transporte_paciente_viagem as viagem', 'viagem.id', 'agendar.viagem_id') ->join('intranet.cadastro_municipio as municipio', 'agendar.municipio_id', 'municipio.id') ->join('transporte_paciente_destino as destino', 'agendar.destino_id', 'destino.id') ->join('transporte_paciente_motivo_viagem_procedimento as motivo', 'motivo.id', 'agendar.motivo_id') ->groupBy( 'agendar.veiculo_id', 'municipio.nome', 'destino.descricao_destino', 'motivo.descricao', DB::raw("CONCAT(DATE_FORMAT(agendar.data, '%d/%m/%Y'), ' - ', DATE_FORMAT(agendar.horario, '%H:%i'))") ) ->orderBy('hora_agendamento'); if (request()->periodo) { $consulta->where('agendar.data', '>=', request()->periodo['start']); $consulta->where('agendar.data', '<=', request()->periodo['end']); } else { $consulta->where('agendar.data', $currentDate); } if (request()->veiculo) { $consulta->where('agendar.veiculo_id', request()->veiculo); } if (request()->municipio) { $consulta->where('agendar.municipio_id', request()->municipio); } if (request()->destino) { $consulta->where('agendar.destino_id', request()->destino); } if (request()->motivo) { $consulta->where('agendar.motivo_id', request()->motivo); } if(request()->protocolo) { $consulta->where('viagem.protocolo', request()->protocolo); } $consulta = $consulta->get(); return $consulta; } }