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
|
||||
$uploadedFiles = [];
|
||||
$replacedFiles = [];
|
||||
@ -1083,7 +1145,7 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
||||
}
|
||||
|
||||
// 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([
|
||||
'vehicle_id' => $vehicle->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
|
||||
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
|
||||
$vehicle->refresh();
|
||||
$owner->refresh();
|
||||
@ -1146,11 +1208,27 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
||||
$record->load(['vehicle.owner', 'vehicle.tag', 'files', 'error']);
|
||||
|
||||
$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.';
|
||||
if (!empty($skippedFiles)) {
|
||||
$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) {
|
||||
$message = 'Folio actualizado exitosamente de "' . $oldFolio . '" a "' . $record->folio . '".';
|
||||
if ($hasVehicleChanges || $hasOwnerChanges) {
|
||||
@ -1183,14 +1261,11 @@ public function updateData(VehicleUpdateRequest $request, $id)
|
||||
return ApiResponse::OK->response([
|
||||
'message' => $message,
|
||||
'has_error' => false,
|
||||
'cambios_hechos' => [
|
||||
'vehicle_updated' => $hasVehicleChanges,
|
||||
'owner_updated' => $hasOwnerChanges,
|
||||
'files_uploaded' => count($uploadedFiles) > 0,
|
||||
'files_deleted' => count($deletedFiles) > 0,
|
||||
'files_skipped' => count($skippedFiles) > 0,
|
||||
'files_replaced' => count($replacedFiles) > 0,
|
||||
],
|
||||
'tag' => $hasTagChanges ? [
|
||||
'old_tag_number' => $oldTagNumber,
|
||||
'new_tag_number' => $newTagNumber,
|
||||
'folio' => $tag->folio,
|
||||
] : null,
|
||||
'record' => $record,
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
|
||||
@ -37,6 +37,9 @@ public function rules(): array
|
||||
'vehicle.nrpv' => 'nullable|string|max:50',
|
||||
'vehicle.tipo_mov' => 'nullable|string|max:50',
|
||||
|
||||
// --- DATOS DEL TAG ---
|
||||
'tag.tag_number' => 'nullable|string|max:32',
|
||||
|
||||
// --- DATOS DEL PROPIETARIO ---
|
||||
'owner.name' => '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',
|
||||
'folio.unique' => 'El folio ya existe en el sistema',
|
||||
'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