fix: editar tag_number
This commit is contained in:
parent
88ef9d272c
commit
3bde46589b
@ -856,6 +856,68 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ACTUALIZAR TAG_NUMBER
|
||||||
|
$hasTagChanges = false;
|
||||||
|
$oldTagNumber = null;
|
||||||
|
$newTagNumber = null;
|
||||||
|
|
||||||
|
if ($request->has('tag.tag_number')) {
|
||||||
|
$requestedTagNumber = $request->input('tag.tag_number');
|
||||||
|
|
||||||
|
// Validar que el tag exista
|
||||||
|
if (!$tag) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El vehículo no tiene un TAG asignado',
|
||||||
|
'vehicle_id' => $vehicle->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validar que el tag esté en estado asignado
|
||||||
|
if (!$tag->isAssigned()) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'No se puede actualizar el tag_number porque el TAG no está asignado',
|
||||||
|
'tag_folio' => $tag->folio,
|
||||||
|
'tag_status' => $tag->status->name,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Validar que no esté vacío
|
||||||
|
if (empty(trim($requestedTagNumber))) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El tag_number no puede estar vacío',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Solo actualizar si es diferente
|
||||||
|
if ($requestedTagNumber !== $tag->tag_number) {
|
||||||
|
// Verificar que el nuevo tag_number no esté duplicado
|
||||||
|
$existingTag = Tag::where('tag_number', $requestedTagNumber)
|
||||||
|
->where('id', '!=', $tag->id)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if ($existingTag) {
|
||||||
|
DB::rollBack();
|
||||||
|
return ApiResponse::BAD_REQUEST->response([
|
||||||
|
'message' => 'El tag_number ya está asignado a otro TAG',
|
||||||
|
'tag_number' => $requestedTagNumber,
|
||||||
|
'existing_tag_folio' => $existingTag->folio,
|
||||||
|
'existing_tag_id' => $existingTag->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Guardar el valor antiguo
|
||||||
|
$oldTagNumber = $tag->tag_number;
|
||||||
|
$newTagNumber = $requestedTagNumber;
|
||||||
|
|
||||||
|
// Actualizar SOLO el tag_number
|
||||||
|
$tag->update(['tag_number' => $requestedTagNumber]);
|
||||||
|
$hasTagChanges = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Procesar archivos
|
// Procesar archivos
|
||||||
$uploadedFiles = [];
|
$uploadedFiles = [];
|
||||||
$replacedFiles = [];
|
$replacedFiles = [];
|
||||||
@ -1083,7 +1145,7 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Registrar el log de cambios si hubo actualizaciones
|
// Registrar el log de cambios si hubo actualizaciones
|
||||||
if ($hasVehicleChanges || $hasOwnerChanges || $hasFolioChange || count($uploadedFiles) > 0 || count($deletedFiles) > 0) {
|
if ($hasVehicleChanges || $hasOwnerChanges || $hasTagChanges || $hasFolioChange || count($uploadedFiles) > 0 || count($deletedFiles) > 0) {
|
||||||
VehicleTagLog::create([
|
VehicleTagLog::create([
|
||||||
'vehicle_id' => $vehicle->id,
|
'vehicle_id' => $vehicle->id,
|
||||||
'tag_id' => $tag->id,
|
'tag_id' => $tag->id,
|
||||||
@ -1093,7 +1155,7 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// datos para REPUVE Nacional usando datos actuales de la BD
|
// datos para REPUVE Nacional usando datos actuales de la BD
|
||||||
if ($hasVehicleChanges || $hasOwnerChanges || $hasFolioChange || count($uploadedFiles) > 0 || count($deletedFiles) > 0) {
|
if ($hasVehicleChanges || $hasOwnerChanges || $hasTagChanges || $hasFolioChange || count($uploadedFiles) > 0 || count($deletedFiles) > 0) {
|
||||||
// Recargar el vehículo y propietario con los datos actualizados
|
// Recargar el vehículo y propietario con los datos actualizados
|
||||||
$vehicle->refresh();
|
$vehicle->refresh();
|
||||||
$owner->refresh();
|
$owner->refresh();
|
||||||
@ -1146,11 +1208,27 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
|||||||
$record->load(['vehicle.owner', 'vehicle.tag', 'files', 'error']);
|
$record->load(['vehicle.owner', 'vehicle.tag', 'files', 'error']);
|
||||||
|
|
||||||
$message = 'Expediente actualizado exitosamente';
|
$message = 'Expediente actualizado exitosamente';
|
||||||
if (!$hasVehicleChanges && !$hasOwnerChanges && !$hasFolioChange && empty($uploadedFiles) && empty($deletedFiles)) {
|
if (!$hasVehicleChanges && !$hasOwnerChanges && !$hasTagChanges && !$hasFolioChange && empty($uploadedFiles) && empty($deletedFiles)) {
|
||||||
$message = 'No se detectaron cambios. Los datos ya estaban actualizados.';
|
$message = 'No se detectaron cambios. Los datos ya estaban actualizados.';
|
||||||
if (!empty($skippedFiles)) {
|
if (!empty($skippedFiles)) {
|
||||||
$message .= ' Se omitieron ' . count($skippedFiles) . ' archivo(s) duplicado(s).';
|
$message .= ' Se omitieron ' . count($skippedFiles) . ' archivo(s) duplicado(s).';
|
||||||
}
|
}
|
||||||
|
} elseif ($hasTagChanges && !$hasVehicleChanges && !$hasOwnerChanges && !$hasFolioChange) {
|
||||||
|
$message = 'Tag number actualizado exitosamente de "' . ($oldTagNumber ?? 'null') . '" a "' . $newTagNumber . '".';
|
||||||
|
if (!empty($uploadedFiles) || !empty($deletedFiles)) {
|
||||||
|
$message .= ' Archivos modificados.';
|
||||||
|
}
|
||||||
|
if (!empty($skippedFiles)) {
|
||||||
|
$message .= ' Se omitieron ' . count($skippedFiles) . ' archivo(s) duplicado(s).';
|
||||||
|
}
|
||||||
|
} elseif ($hasTagChanges && ($hasVehicleChanges || $hasOwnerChanges)) {
|
||||||
|
$message = 'Datos del vehículo/propietario y tag actualizados exitosamente.';
|
||||||
|
if (!empty($uploadedFiles) || !empty($deletedFiles)) {
|
||||||
|
$message .= ' Archivos modificados.';
|
||||||
|
}
|
||||||
|
if (!empty($skippedFiles)) {
|
||||||
|
$message .= ' Se omitieron ' . count($skippedFiles) . ' archivo(s) duplicado(s).';
|
||||||
|
}
|
||||||
} elseif ($hasFolioChange) {
|
} elseif ($hasFolioChange) {
|
||||||
$message = 'Folio actualizado exitosamente de "' . $oldFolio . '" a "' . $record->folio . '".';
|
$message = 'Folio actualizado exitosamente de "' . $oldFolio . '" a "' . $record->folio . '".';
|
||||||
if ($hasVehicleChanges || $hasOwnerChanges) {
|
if ($hasVehicleChanges || $hasOwnerChanges) {
|
||||||
@ -1183,14 +1261,11 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
|||||||
return ApiResponse::OK->response([
|
return ApiResponse::OK->response([
|
||||||
'message' => $message,
|
'message' => $message,
|
||||||
'has_error' => false,
|
'has_error' => false,
|
||||||
'cambios_hechos' => [
|
'tag' => $hasTagChanges ? [
|
||||||
'vehicle_updated' => $hasVehicleChanges,
|
'old_tag_number' => $oldTagNumber,
|
||||||
'owner_updated' => $hasOwnerChanges,
|
'new_tag_number' => $newTagNumber,
|
||||||
'files_uploaded' => count($uploadedFiles) > 0,
|
'folio' => $tag->folio,
|
||||||
'files_deleted' => count($deletedFiles) > 0,
|
] : null,
|
||||||
'files_skipped' => count($skippedFiles) > 0,
|
|
||||||
'files_replaced' => count($replacedFiles) > 0,
|
|
||||||
],
|
|
||||||
'record' => $record,
|
'record' => $record,
|
||||||
]);
|
]);
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|||||||
@ -37,6 +37,9 @@ public function rules(): array
|
|||||||
'vehicle.nrpv' => 'nullable|string|max:50',
|
'vehicle.nrpv' => 'nullable|string|max:50',
|
||||||
'vehicle.tipo_mov' => 'nullable|string|max:50',
|
'vehicle.tipo_mov' => 'nullable|string|max:50',
|
||||||
|
|
||||||
|
// --- DATOS DEL TAG ---
|
||||||
|
'tag.tag_number' => 'nullable|string|max:32',
|
||||||
|
|
||||||
// --- DATOS DEL PROPIETARIO ---
|
// --- DATOS DEL PROPIETARIO ---
|
||||||
'owner.name' => 'nullable|string|max:100',
|
'owner.name' => 'nullable|string|max:100',
|
||||||
'owner.paternal' => 'nullable|string|max:100',
|
'owner.paternal' => 'nullable|string|max:100',
|
||||||
@ -81,6 +84,7 @@ public function messages(): array
|
|||||||
'delete_files.*.exists' => 'El archivo a eliminar no existe',
|
'delete_files.*.exists' => 'El archivo a eliminar no existe',
|
||||||
'folio.unique' => 'El folio ya existe en el sistema',
|
'folio.unique' => 'El folio ya existe en el sistema',
|
||||||
'folio.max' => 'El folio no puede exceder 50 caracteres',
|
'folio.max' => 'El folio no puede exceder 50 caracteres',
|
||||||
|
'tag.tag_number.max' => 'El tag_number no puede exceder 32 caracteres',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user