This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user