init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
<?php
namespace App\Services\TransportePaciente\Reabertura;
use App\Enums\TransportePaciente\Status;
use App\Enums\TransportePaciente\ViagemStatus;
use App\Models\TransportePaciente\Agendar\Agendar;
use App\Models\TransportePaciente\Faturamento\Faturamento;
use App\Models\TransportePaciente\Viagem;
use App\Services\Service;
use App\Services\TransportePaciente\Agendar\HistoricoService;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
class ReaberturaViagemService extends Service
{
public static function index()
{
return [
'model' => [
'data_inicial' => null,
'data_final' => null,
'cidade' => null,
'destino' => null
],
'form' => [
'cidades' => [],
'destinos' => []
]
];
}
public static function list()
{
return DB::table('transporte_paciente_viagem as viagem')
->leftJoin('transporte_paciente_veiculo as veiculo','viagem.veiculo_id', 'veiculo.id')
->leftJoin('transporte_paciente_condutor as condutor', 'condutor.id', 'viagem.condutor_id')
->leftJoin('cadastro_usuario as usuario', 'condutor.usuario_id', 'usuario.id')
->leftJoin('cadastro_cidadao as cidadao', 'usuario.cidadao_id', 'cidadao.id')
->leftJoin('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id')
->leftJoin('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id')
->leftJoin('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id')
->select(
'viagem.id',
'viagem.data',
DB::raw('GROUP_CONCAT(DISTINCT municipio.nome) as cidade'),
DB::raw('GROUP_CONCAT(DISTINCT descricao_destino) as destino'),
'viagem.protocolo',
'cidadao.nome as motorista',
DB::raw('CONCAT(veiculo.numero_placa," - ",veiculo.descricao_modelo) AS veiculo'),
)
->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d'))
->when(request()->cidade, function($query){
$query->where('municipio.id', request()->cidade);
})
->when(request()->destino, function($query){
$query->where('destino.id', request()->destino);
})
->where('viagem.status_id', ViagemStatus::FINALIZADO)
->groupBy('viagem.id')
->get();
}
public static function reopen($id)
{
$viagem = Viagem::find($id);
$viagem->status_id = ViagemStatus::ABERTO;
$viagem->save();
$agendamentos = Agendar::where('viagem_id', $viagem->id)->get();
foreach($agendamentos as $agendamento) {
$agendamento->status_id = Status::AGENDADO;
$agendamento->save();
HistoricoService::create($agendamento, Status::AGENDADO, $agendamento->updated_lotacao_id);
Faturamento::where('agendamento_id', $agendamento->id)->delete();
}
}
public static function getCidades()
{
return DB::table('transporte_paciente_viagem as viagem')
->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id')
->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id')
->join('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id')
->select('municipio.id', 'municipio.nome')
->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d'))
->where('viagem.status_id', ViagemStatus::FINALIZADO)
->groupBy('municipio.id')
->get();
}
public static function getDestinos()
{
return DB::table('transporte_paciente_viagem as viagem')
->join('transporte_paciente_agendar_transporte as agendar', 'agendar.viagem_id', 'viagem.id')
->join('transporte_paciente_destino as destino', 'destino.id', 'agendar.destino_id')
->join('intranet.cadastro_municipio as municipio', 'municipio.id', 'destino.municipio_id')
->select('destino.id', 'destino.descricao_destino as descricao')
->where('viagem.data' ,'>=', Carbon::parse(request()->data_inicial)->format('Y-m-d'))
->where('viagem.data', '<=', Carbon::parse(request()->data_final)->format('Y-m-d'))
->where('municipio.id', request()->cidade)
->where('viagem.status_id', ViagemStatus::FINALIZADO)
->groupBy('destino.id')
->get();
}
}