From 7b56f9690daa232affca04d17362dc3f1287c289 Mon Sep 17 00:00:00 2001 From: Rafiafrzl Date: Wed, 15 Oct 2025 18:15:42 +0700 Subject: [PATCH] feat: add duplicate tag number validation in DetailTag component --- src/pages/master/tag/component/DetailTag.jsx | 38 +++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/pages/master/tag/component/DetailTag.jsx b/src/pages/master/tag/component/DetailTag.jsx index 0ff5a25..3c862a9 100644 --- a/src/pages/master/tag/component/DetailTag.jsx +++ b/src/pages/master/tag/component/DetailTag.jsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react'; import { Modal, Input, Typography, Button, ConfigProvider, Switch, Select } from 'antd'; import { NotifAlert, NotifOk } from '../../../../components/Global/ToastNotif'; -import { createTag, updateTag } from '../../../../api/master-tag'; +import { createTag, updateTag, getAllTag } from '../../../../api/master-tag'; import { getAllDevice } from '../../../../api/master-device'; const { Text } = Typography; @@ -67,6 +67,42 @@ const DetailTag = (props) => { return; } + // Validasi duplicate tag_number + try { + const params = new URLSearchParams({ limit: 10000 }); // Get all tags + const response = await getAllTag(params); + + if (response && response.data && response.data.data) { + const existingTags = response.data.data; + + // Check if tag_number already exists (exclude current tag when editing) + const isDuplicate = existingTags.some((tag) => { + const isSameNumber = parseInt(tag.tag_number) === tagNumberInt; + const isDifferentTag = FormData.tag_id ? tag.tag_id !== FormData.tag_id : true; + return isSameNumber && isDifferentTag; + }); + + if (isDuplicate) { + NotifOk({ + icon: 'warning', + title: 'Peringatan', + message: `Tag Number ${tagNumberInt} sudah digunakan. Silakan gunakan nomor yang berbeda.`, + }); + setConfirmLoading(false); + return; + } + } + } catch (error) { + console.error('Error checking duplicate tag number:', error); + NotifAlert({ + icon: 'error', + title: 'Error', + message: 'Gagal memvalidasi Tag Number. Silakan coba lagi.', + }); + setConfirmLoading(false); + return; + } + if (!FormData.data_type || FormData.data_type.trim() === '') { NotifOk({ icon: 'warning',