repair: delete error code

This commit is contained in:
2025-12-09 11:06:28 +07:00
parent 5703ff0e8d
commit 3225a0865e
4 changed files with 332 additions and 201 deletions

View File

@@ -19,7 +19,7 @@ import TableList from '../../../components/Global/TableList';
import { ConfigProvider } from 'antd';
import { NotifAlert, NotifOk, NotifConfirmDialog } from '../../../components/Global/ToastNotif';
import { useBreadcrumb } from '../../../layout/LayoutBreadcrumb';
import { getBrandById, getErrorCodesByBrandId } from '../../../api/master-brand';
import { getBrandById, getErrorCodesByBrandId, deleteErrorCode } from '../../../api/master-brand';
import { getFileUrl } from '../../../api/file-uploads';
import BrandForm from './component/BrandForm';
import ErrorCodeSimpleForm from './component/ErrorCodeSimpleForm';
@@ -43,9 +43,6 @@ const EditBrandDevice = () => {
const [errorCodeIcon, setErrorCodeIcon] = useState(null);
const [selectedSparepartIds, setSelectedSparepartIds] = useState([]);
const [loading, setLoading] = useState(false);
// Context integration
// Use step from query parameter
const tab = searchParams.get('tab');
const [currentStep, setCurrentStep] = useState(tab === 'error-codes' ? 1 : 0);
const [editingErrorCodeKey, setEditingErrorCodeKey] = useState(null);
@@ -59,16 +56,6 @@ const EditBrandDevice = () => {
const [existingErrorCodes, setExistingErrorCodes] = useState([]);
const {
solutionFields,
solutionTypes,
solutionStatuses,
solutionsToDelete,
firstSolutionValid,
checkFirstSolutionValid,
handleAddSolutionField,
handleRemoveSolutionField,
handleSolutionTypeChange,
handleSolutionStatusChange,
resetSolutionFields,
getSolutionData,
setSolutionsForExistingRecord,
@@ -199,7 +186,7 @@ const EditBrandDevice = () => {
);
};
const deleteErrorCode = (tempId, permanent = false) => {
const deleteLocalErrorCode = (tempId, permanent = false) => {
if (permanent) {
setTempErrorCodes(prev => prev.filter(ec => ec.tempId !== tempId));
setExistingErrorCodes(prev => prev.filter(ec => ec.tempId !== tempId));
@@ -390,21 +377,46 @@ const EditBrandDevice = () => {
}
};
const handleDeleteErrorCode = (record) => {
const handleDeleteErrorCode = async (record) => {
NotifConfirmDialog({
icon: 'question',
title: 'Konfirmasi Hapus',
message: `Apakah Anda yakin ingin menghapus error code "${record.error_code}"?`,
onConfirm: () => {
// Use soft delete (mark as deleted) instead of permanent delete
const tempId = record.tempId || `existing_${record.error_code_id}`;
deleteErrorCode(tempId, false); // false = soft delete
NotifOk({
icon: 'success',
title: 'Berhasil',
message: 'Error code berhasil dihapus!',
});
setTrigerFilter(prev => !prev);
onConfirm: async () => {
try {
if (record.status === 'existing' && record.error_code_id) {
const response = await deleteErrorCode(id, record.error_code_id);
if (response && response.statusCode === 200) {
NotifOk({
icon: 'success',
title: 'Berhasil',
message: 'Error code berhasil dihapus!',
});
setTrigerFilter(prev => !prev);
} else {
NotifAlert({
icon: 'error',
title: 'Error',
message: response?.message || 'Failed to delete error code',
});
}
} else {
const tempId = record.tempId;
deleteLocalErrorCode(tempId, true);
NotifOk({
icon: 'success',
title: 'Berhasil',
message: 'Error code berhasil dihapus!',
});
setTrigerFilter(prev => !prev);
}
} catch (error) {
NotifAlert({
icon: 'error',
title: 'Error',
message: error.message || 'Failed to delete error code',
});
}
},
onCancel: () => {}
});
@@ -416,14 +428,16 @@ const EditBrandDevice = () => {
...tempErrorCodes
];
const activeErrorCodes = allErrorCodes.filter(ec => ec.status !== 'deleted');
if (searchText) {
return allErrorCodes.filter(ec =>
return activeErrorCodes.filter(ec =>
ec.error_code.toLowerCase().includes(searchText.toLowerCase()) ||
ec.error_code_name.toLowerCase().includes(searchText.toLowerCase())
);
}
return allErrorCodes;
return activeErrorCodes;
}, [existingErrorCodes, tempErrorCodes, searchText]);
const errorCodeColumns = (showPreviewModal, showEditModal, showDeleteDialog) => [