This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TransportePaciente\Relatorios;
|
||||
|
||||
use App\Models\Intranet\Municipio;
|
||||
use App\Models\TransportePaciente\Destino\Destino;
|
||||
use App\Models\TransportePaciente\Motivo\Motivo;
|
||||
use App\Models\TransportePaciente\Veiculo\Veiculo;
|
||||
use App\Services\Service;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RelatorioQuantitativoService extends Service
|
||||
{
|
||||
public static function getPrintExportData()
|
||||
{
|
||||
$items = self::getItems();
|
||||
|
||||
return [
|
||||
'inicio' => 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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user