This commit is contained in:
139
api/app/Services/TransportePaciente/ViagemDataService.php
Normal file
139
api/app/Services/TransportePaciente/ViagemDataService.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TransportePaciente;
|
||||
|
||||
use App\Enums\TransportePaciente\Status;
|
||||
use App\Services\Service;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ViagemDataService extends Service
|
||||
{
|
||||
public static function index()
|
||||
{
|
||||
return [
|
||||
'model' => [
|
||||
'periodo' => [
|
||||
'start' => null,
|
||||
'end' => null,
|
||||
],
|
||||
'municipio' => null,
|
||||
'motorista' => null,
|
||||
'destino' => null,
|
||||
'status' => null,
|
||||
],
|
||||
'form' => [
|
||||
'municipios' => null,
|
||||
'motoristas' => null,
|
||||
'destinos' => null,
|
||||
'status' => null,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public static function getMunicipios()
|
||||
{
|
||||
return DB::table('transporte_paciente_agendar_transporte as agendar')
|
||||
->select('agendar.municipio_id as id', 'municipio.nome')
|
||||
->join('intranet.cadastro_municipio as municipio', 'municipio.id', '=', 'agendar.municipio_id')
|
||||
->where('agendar.data', '>=', Carbon::parse(request()->start)->format('Y-m-d'))
|
||||
->where('agendar.data', '<', Carbon::parse(request()->end)->addDay()->format('Y-m-d'))
|
||||
->orderBy('municipio.nome')
|
||||
->groupBy('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('agendar.data', '>=', Carbon::parse(request()->start)->format('Y-m-d'))
|
||||
->where('agendar.data', '<', Carbon::parse(request()->end)->addDay()->format('Y-m-d'))
|
||||
->when(request()->municipio, function ($query) {
|
||||
$query->where('agendar.municipio_id', request()->municipio);
|
||||
})
|
||||
->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('agendar.data', '>=', Carbon::parse(request()->start)->format('Y-m-d'))
|
||||
->where('agendar.data', '<', Carbon::parse(request()->end)->addDay()->format('Y-m-d'))
|
||||
->when(request()->municipio, function ($query) {
|
||||
$query->where('agendar.municipio_id', request()->municipio);
|
||||
})
|
||||
->when(request()->motorista, function ($query) {
|
||||
$query->where('viagem.condutor_id', request()->motorista);
|
||||
})
|
||||
->orderBy('destino.descricao_destino')
|
||||
->groupBy('destino.id')
|
||||
->get();
|
||||
}
|
||||
|
||||
public static function getStatus()
|
||||
{
|
||||
return DB::table('transporte_paciente_status as status')
|
||||
->select('status.id', 'status.descricao')
|
||||
->orderBy('status.descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
public static function list()
|
||||
{
|
||||
$consulta = DB::table('transporte_paciente_agendar_transporte as agendar')
|
||||
->select(
|
||||
'agendar.id',
|
||||
'municipio.nome as municipio',
|
||||
'cidadao.nome as motorista',
|
||||
'destino.descricao_destino as descricao_destino',
|
||||
'status.id as status_id',
|
||||
'status.descricao as descricao_status',
|
||||
DB::raw('DATE_FORMAT(agendar.data, "%d/%m/%Y") as data'),
|
||||
DB::raw('IF(viagem.protocolo IS NOT NULL, viagem.protocolo, "-") AS protocolo')
|
||||
)
|
||||
->join('intranet.cadastro_municipio as municipio', 'municipio.id', '=', 'agendar.municipio_id')
|
||||
->join('transporte_paciente_viagem as viagem', 'viagem.id', 'agendar.viagem_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_destino as destino', 'destino.id', 'agendar.destino_id')
|
||||
->join('transporte_paciente_status as status', 'status.id', 'agendar.status_id')
|
||||
->where('agendar.data', '>=', Carbon::parse(request()->start)->format('Y-m-d'))
|
||||
->where('agendar.data', '<', Carbon::parse(request()->end)->addDay()->format('Y-m-d'))
|
||||
->when(request()->municipio, function ($query) {
|
||||
$query->where('agendar.municipio_id', request()->municipio);
|
||||
})
|
||||
->when(request()->motorista, function ($query) {
|
||||
$query->where('viagem.condutor_id', request()->motorista);
|
||||
})
|
||||
->when(request()->destino, function ($query) {
|
||||
$query->where('destino.id', request()->destino);
|
||||
})
|
||||
->when(request()->status, function ($query) {
|
||||
$query->where('status.id', request()->status);
|
||||
})
|
||||
->orderBy('agendar.data')
|
||||
->get();
|
||||
|
||||
return [
|
||||
'consulta' => $consulta,
|
||||
'totalizadores' => [
|
||||
'agendado' => $consulta->where('status_id', Status::AGENDADO)->count(),
|
||||
'cancelado' => $consulta->where('status_id', Status::CANCELADO)->count(),
|
||||
'faltou' => $consulta->where('status_id', Status::FALTOU)->count(),
|
||||
'transportado' => $consulta->where('status_id', Status::TRANSPORTADO)->count(),
|
||||
'geral' => $consulta->count(),
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user