Carbon::parse(request()->data_inicial)->format('d/m/Y'), 'data_final' => Carbon::parse(request()->data_final)->format('d/m/Y'), 'motivo_viagem' => request()->motivo_viagem ? Motivo::find(request()->motivo_viagem)->descricao : 'Todos', '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)->descricao_modelo : 'Todos', 'status' => request()->status ? ViagemStatus::find(request()->status)->descricao : 'Todos', 'colunas' => collect(request()->selectedCols), 'items' => $items, 'total_paciente' => $contador['total_paciente'], 'total_acompanhante' => $contador['total_paciente_acompanhante'] - $contador['total_paciente'], 'total_paciente_acompanhante' => $contador['total_paciente_acompanhante'], ]; } private static function getItems(){ $query = DB::table('transporte_paciente_agendar_transporte AS agendar') ->select( 'agendar.id', 'cidadao.nome AS paciente_nome', 'motivo.descricao AS motivo_viagem', 'municipio.nome AS municipio', 'destino.descricao_destino AS destino', 'ponto.descricao AS ponto_referencia', 'veiculo.descricao_modelo AS veiculo', 'status.descricao AS status', DB::raw("COALESCE(agendar.acompanhante, '-') AS acompanhante"), DB::raw("COALESCE(cidadao2.nome, '-') AS motorista"), DB::raw("TIME_FORMAT(agendar.horario, '%H:%i') AS horario"), DB::raw("DATE_FORMAT(agendar.data, '%d/%m/%Y') AS data"), DB::raw("IF(agendar.horario_saida, TIME_FORMAT(agendar.horario_saida, '%H:%i'),'-' ) AS horario_saida"), DB::raw('IF(transporte.protocolo, transporte.protocolo, "-") as protocolo'), DB::raw("CONCAT(logradouro.nome, ' - ', bairro.nome) AS endereco"), 'cidadao.cns', 'agendar.observacao AS observacao_viagem', 'agendar.consulta_observacao AS observacao_paciente', ) ->leftJoin('cadastro_paciente AS paciente', 'agendar.paciente_id', 'paciente.id') ->leftJoin('cadastro_cidadao AS cidadao', 'paciente.cidadao_id', 'cidadao.id') ->leftJoin('transporte_paciente_motivo_viagem_procedimento as motivo', 'agendar.motivo_id', 'motivo.id') ->leftJoin('intranet.cadastro_municipio as municipio', 'agendar.municipio_id', 'municipio.id') ->leftJoin('transporte_paciente_destino AS destino', 'agendar.destino_id', 'destino.id') ->leftJoin('transporte_paciente_ponto AS ponto', 'agendar.ponto_id', 'ponto.id') ->leftJoin('transporte_paciente_viagem AS transporte', 'agendar.viagem_id', 'transporte.id') ->leftJoin('transporte_paciente_veiculo AS veiculo', 'transporte.veiculo_id', 'veiculo.id') ->leftJoin('transporte_paciente_condutor AS condutor', 'condutor.id', 'transporte.condutor_id') ->leftJoin('cadastro_usuario AS usuario', 'condutor.usuario_id', 'usuario.id') ->leftJoin('cadastro_cidadao AS cidadao2', 'usuario.cidadao_id', 'cidadao2.id') ->leftJoin('transporte_paciente_viagem_status AS status', 'transporte.status_id', 'status.id') ->leftJoin('cadastro_domicilio AS domicilio', 'domicilio.id', 'cidadao.domicilio_id') ->leftJoin('cadastro_endereco AS endereco', 'endereco.id', 'domicilio.endereco_id') ->leftJoin('cadastro_logradouro AS logradouro', 'logradouro.id', 'endereco.logradouro_id') ->leftJoin('cadastro_bairro AS bairro', 'bairro.id', 'logradouro.bairro_id') ->where('agendar.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('agendar.data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function ($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->when(request()->destino, function ($query) { $query->where('agendar.destino_id', request()->destino); }) ->when(request()->veiculo, function ($query) { $query->where('agendar.veiculo_id', request()->veiculo); }) ->when(request()->paciente, function ($query) { $query->where('agendar.paciente_id', request()->paciente); }) ->when(request()->protocolo, function($query) { $query->where('transporte.protocolo', request()->protocolo); }) ->when(request()->status, function($query) { $query->where('transporte.status_id', request()->status); }); if (request()->has('order')) { $orderDir = request()->get('order')['dir']; $query ->orderBy('agendar.data', $orderDir) ->orderBy('agendar.horario', $orderDir); } else { $query ->orderBy('agendar.data', 'desc') ->orderBy('agendar.horario', 'desc'); } return $query->groupBy('agendar.id')->get(); } private static function getContador() { $contagem = DB::table('transporte_paciente_agendar_transporte AS agendar') ->leftjoin('transporte_paciente_viagem AS viagem', 'viagem.id', 'agendar.viagem_id') ->select( DB::raw('SUM(IFNULL(agendar.acompanhante, 0) + 1) AS quantidade_paciente_acompanhante'), DB::raw('COUNT(agendar.id) AS quantidade_paciente'), ) ->where('agendar.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d')) ->where('agendar.data', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d')) ->when(request()->motivo, function($query) { $query->where('agendar.motivo_id', request()->motivo); }) ->when(request()->municipio, function ($query) { $query->where('agendar.municipio_id', request()->municipio); }) ->when(request()->destino, function ($query) { $query->where('agendar.destino_id', request()->destino); }) ->when(request()->veiculo, function ($query) { $query->where('agendar.veiculo_id', request()->veiculo); }) ->when(request()->paciente, function($query) { $query->where('agendar.paciente_id', request()->paciente); }) ->when(request()->protocolo, function($query) { $query->where('viagem.protocolo', request()->protocolo); }) ->when(request()->status, function($query) { $query->where('viagem.status_id', request()->status); }) ->get(); $totalizadores = [ 'total_paciente' => $contagem->sum('quantidade_paciente'), 'total_paciente_acompanhante' => $contagem->sum('quantidade_paciente_acompanhante'), ]; return $totalizadores; } }