This commit is contained in:
154
api/app/Services/TransportePaciente/PrestacaoContaService.php
Normal file
154
api/app/Services/TransportePaciente/PrestacaoContaService.php
Normal file
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TransportePaciente;
|
||||
|
||||
use App\Enums\TransportePaciente\ViagemStatus;
|
||||
use App\Services\Service;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class PrestacaoContaService extends Service
|
||||
{
|
||||
public static function index()
|
||||
{
|
||||
return [
|
||||
'model' => [
|
||||
'data_inicial' => null,
|
||||
'data_final' => null,
|
||||
'motorista' => null,
|
||||
'destino' => null,
|
||||
'veiculo' => null,
|
||||
],
|
||||
'form' => [
|
||||
'veiculos' => null,
|
||||
'motoristas' => null,
|
||||
'destinos' => null,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public static function getVeiculos()
|
||||
{
|
||||
return DB::table('transporte_paciente_agendar_transporte as agendar')
|
||||
->join('transporte_paciente_veiculo as veiculo', 'veiculo.id', 'agendar.veiculo_id')
|
||||
->select(
|
||||
'veiculo.id',
|
||||
DB::raw('CONCAT(veiculo.numero_placa, " - ", veiculo.descricao_modelo) as identificacao_veiculo'),
|
||||
)
|
||||
->join('transporte_paciente_viagem as viagem','viagem.id', 'agendar.viagem_id')
|
||||
->where('viagem.status_id', ViagemStatus::FINALIZADO)
|
||||
->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
|
||||
->where('viagem.data_chegada', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d'))
|
||||
->where('veiculo.bloqueado', false)
|
||||
->orderBy('identificacao_veiculo')
|
||||
->groupBy('veiculo.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('viagem.status_id', ViagemStatus::FINALIZADO)
|
||||
->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
|
||||
->where('viagem.data_chegada', '<', Carbon::parse(request()->data_final)->addDay()->format('Y-m-d'))
|
||||
->when(request()->veiculo, function($query) {
|
||||
$query->where('viagem.veiculo_id', request()->veiculo);
|
||||
})
|
||||
->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('viagem.status_id', ViagemStatus::FINALIZADO)
|
||||
->where('viagem.data', '>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
|
||||
->where('viagem.data_chegada', '<', 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);
|
||||
})
|
||||
->groupBy('destino.id')
|
||||
->get();
|
||||
}
|
||||
|
||||
public static function list()
|
||||
{
|
||||
$consulta = 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();
|
||||
|
||||
$totalizadores = [
|
||||
'total_diaria' => $consulta->sum('diaria'),
|
||||
'total_refeicao' => $consulta->sum('refeicao'),
|
||||
'total_pernoite' => $consulta->sum('pernoite'),
|
||||
'total_pedagio' => $consulta->sum('pedagio'),
|
||||
'total_combustivel' => $consulta->sum('combustivel'),
|
||||
'total_outras_despesas' => $consulta->sum('outras_despesas'),
|
||||
'total_despesa' => $consulta->sum('total_despesa'),
|
||||
'total_km_percorrido' => $consulta->sum('km_percorrido'),
|
||||
];
|
||||
|
||||
return ['consulta' => $consulta, 'totalizadores' => $totalizadores];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user