ADD: Se actualizó la lógica de cancelación de constancias y se mejoró la validación de tags en CancellationController e InscriptionController. Se modificó la validación de tag_number en TagsController para permitir valores nulos.
This commit is contained in:
parent
8e2db75ad2
commit
b5779e5bdb
@ -45,9 +45,6 @@ public function cancelarConstancia(CancelConstanciaRequest $request)
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Avisar que tiene error
|
|
||||||
$hadPreviousError = $record->error_id !== null;
|
|
||||||
|
|
||||||
// Guardar información del tag anterior ANTES de cancelarlo
|
// Guardar información del tag anterior ANTES de cancelarlo
|
||||||
$oldTagNumber = $tag->tag_number;
|
$oldTagNumber = $tag->tag_number;
|
||||||
$oldFolio = $tag->folio;
|
$oldFolio = $tag->folio;
|
||||||
@ -69,10 +66,10 @@ public function cancelarConstancia(CancelConstanciaRequest $request)
|
|||||||
|
|
||||||
$newTag = null;
|
$newTag = null;
|
||||||
$substitutionLog = null;
|
$substitutionLog = null;
|
||||||
$isSubstitution = $request->filled('new_tag_number');
|
$isSubstitution = $request->filled('new_folio') && $request->filled('new_tag_number');
|
||||||
|
|
||||||
if ($isSubstitution) {
|
if ($isSubstitution) {
|
||||||
$newTag = Tag::where('tag_number', $request->new_tag_number)->first();
|
$newTag = Tag::where('folio', $request->new_folio)->first();
|
||||||
|
|
||||||
if(!$newTag){
|
if(!$newTag){
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
@ -91,6 +88,31 @@ public function cancelarConstancia(CancelConstanciaRequest $request)
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!$newTag->tag_number){
|
||||||
|
$existingTag = Tag::where('tag_number', $request->new_tag_number)->first();
|
||||||
|
if($existingTag && $existingTag->id !== $newTag->id){
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El nuevo tag_number ya está asignado a otro folio.',
|
||||||
|
'new_tag_number' => $request->new_tag_number,
|
||||||
|
'folio_existente' => $existingTag->folio,
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
$newTag->tag_number = $request->new_tag_number;
|
||||||
|
$newTag->save();
|
||||||
|
|
||||||
|
}elseif($newTag->tag_number !== $request->new_tag_number){
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El nuevo tag ya tiene un tag_number diferente asignado.',
|
||||||
|
'assigned_tag_number' => $newTag->tag_number,
|
||||||
|
'provided_tag_number' => $request->new_tag_number,
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Usar el folio del request
|
// Usar el folio del request
|
||||||
$newTag->markAsAssigned($vehicle->id, $request->folio);
|
$newTag->markAsAssigned($vehicle->id, $request->folio);
|
||||||
|
|
||||||
@ -160,14 +182,22 @@ public function cancelarTagNoAsignado(Request $request)
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'tag_number' => 'required|string|exists:tags,tag_number',
|
'folio' => 'required|string|exists:tags,folio',
|
||||||
'cancellation_reason_id' => 'required|exists:catalog_cancellation_reasons,id',
|
'cancellation_reason_id' => 'required|exists:catalog_cancellation_reasons,id',
|
||||||
'cancellation_observations' => 'nullable|string',
|
'cancellation_observations' => 'nullable|string',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
|
|
||||||
$tag = Tag::where('tag_number', $request->tag_number)->first();
|
$tag = Tag::where('folio', $request->folio)->first();
|
||||||
|
|
||||||
|
if (!$tag) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::NOT_FOUND->response([
|
||||||
|
'message' => 'No se encontró el tag con el folio proporcionado.',
|
||||||
|
'folio' => $request->folio,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
// Validar que el tag NO esté asignado
|
// Validar que el tag NO esté asignado
|
||||||
if ($tag->isAssigned()) {
|
if ($tag->isAssigned()) {
|
||||||
|
|||||||
@ -45,7 +45,7 @@ public function vehicleInscription(VehicleStoreRequest $request)
|
|||||||
$telefono = $request->input('telefono');
|
$telefono = $request->input('telefono');
|
||||||
|
|
||||||
// Buscar Tag y validar que NO tenga vehículo asignado
|
// Buscar Tag y validar que NO tenga vehículo asignado
|
||||||
$tag = Tag::where('folio', $folio)->where('tag_number', $tagNumber)->first();
|
$tag = Tag::where('folio', $folio)->first();
|
||||||
|
|
||||||
if (!$tag) {
|
if (!$tag) {
|
||||||
return ApiResponse::NOT_FOUND->response([
|
return ApiResponse::NOT_FOUND->response([
|
||||||
@ -65,6 +65,30 @@ public function vehicleInscription(VehicleStoreRequest $request)
|
|||||||
// Iniciar transacción
|
// Iniciar transacción
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
|
|
||||||
|
if (!$tag->tag_number) {
|
||||||
|
$existingTag = Tag::where('tag_number', $tagNumber)->first();
|
||||||
|
if ($existingTag && $existingTag->id !== $tag->id) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El tag_number ya está asignado a otro folio.',
|
||||||
|
'tag_number' => $tagNumber,
|
||||||
|
'folio_existente' => $existingTag->folio,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
// Guardar tag_number
|
||||||
|
$tag->tag_number = $tagNumber;
|
||||||
|
$tag->save();
|
||||||
|
} elseif ($tag->tag_number !== $tagNumber) {
|
||||||
|
// Si el tag ya tiene un tag_number diferente, validar
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El folio ya tiene un tag_number diferente asignado.',
|
||||||
|
'folio' => $folio,
|
||||||
|
'tag_number_actual' => $tag->tag_number,
|
||||||
|
'tag_number_enviado' => $tagNumber,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
$datosCompletosRaw = $this->padronEstatalService->getVehiculoByPlaca($placa);
|
$datosCompletosRaw = $this->padronEstatalService->getVehiculoByPlaca($placa);
|
||||||
|
|
||||||
// Obtener datos de API Estatal por placa
|
// Obtener datos de API Estatal por placa
|
||||||
|
|||||||
@ -106,7 +106,7 @@ public function tagStore(Request $request)
|
|||||||
'box_id' => 'required|integer|exists:boxes,id',
|
'box_id' => 'required|integer|exists:boxes,id',
|
||||||
'tags' => 'required|array',
|
'tags' => 'required|array',
|
||||||
'tags.*.folio' => 'required|string|max:8',
|
'tags.*.folio' => 'required|string|max:8',
|
||||||
'tags.*.tag_number' => 'required|string|max:32',
|
'tags.*.tag_number' => 'nullable|string|max:32',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
DB::beginTransaction();
|
DB::beginTransaction();
|
||||||
@ -126,7 +126,7 @@ public function tagStore(Request $request)
|
|||||||
try {
|
try {
|
||||||
$tag = Tag::create([
|
$tag = Tag::create([
|
||||||
'folio' => $tagData['folio'],
|
'folio' => $tagData['folio'],
|
||||||
'tag_number' => $tagData['tag_number'],
|
'tag_number' => $tagData['tag_number'] ?? null,
|
||||||
'box_id' => $request->box_id,
|
'box_id' => $request->box_id,
|
||||||
'status_id' => $statusAvailable->id,
|
'status_id' => $statusAvailable->id,
|
||||||
'vehicle_id' => null,
|
'vehicle_id' => null,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user