feat: integration CRUD

pull/1/head
Firman Ramdhani 2025-07-07 15:05:37 +07:00
parent e150e9e416
commit ec4f948082
1 changed files with 52 additions and 33 deletions

View File

@ -6,7 +6,9 @@ import { notificationError } from '@pos/base';
import { makeColorTextValue } from '../helpers'; import { makeColorTextValue } from '../helpers';
export default function DefaultValue() { export default function DefaultValue() {
const [loading, setLoading] = useState(false); const [loadingDefault, setLoadingDefault] = useState(false);
const [loadingActive, setLoadingActive] = useState(false);
const [loadingSave, setLoadingSave] = useState(false); const [loadingSave, setLoadingSave] = useState(false);
const [defaultPercentage, setDefaultPercentage] = useState<number>(100); const [defaultPercentage, setDefaultPercentage] = useState<number>(100);
const [currentPercentage, setCurrentPercentage] = useState<number>(100); const [currentPercentage, setCurrentPercentage] = useState<number>(100);
@ -33,6 +35,7 @@ export default function DefaultValue() {
.then(async (resp) => { .then(async (resp) => {
const value = resp.data?.data?.default_value; const value = resp.data?.data?.default_value;
await form.setFieldsValue({ default_value: value }); await form.setFieldsValue({ default_value: value });
await handleGetDataActive();
setDefaultPercentage(value); setDefaultPercentage(value);
setLoadingSave(false); setLoadingSave(false);
onCloseModal(); onCloseModal();
@ -47,21 +50,9 @@ export default function DefaultValue() {
} }
}; };
const handleGetData = async () => { const handleGetDataActive = async () => {
setLoading(true); setLoadingActive(true);
await Promise.all([ await axios
axios
.get('v1/data-scheduling-default')
.then((resp) => {
const value = resp.data?.data?.default_value;
form.setFieldsValue({ default_value: value });
setDefaultPercentage(value);
})
.catch((err) => {
const message = err.message;
if (message) notificationError(message);
}),
axios
.get('v1/data-scheduling-active', { params: { date: dayjs().format('YYYY-MM-DD') } }) .get('v1/data-scheduling-active', { params: { date: dayjs().format('YYYY-MM-DD') } })
.then((resp) => { .then((resp) => {
const value = resp.data?.data?.value; const value = resp.data?.data?.value;
@ -71,9 +62,32 @@ export default function DefaultValue() {
.catch((err) => { .catch((err) => {
const message = err.message; const message = err.message;
if (message) notificationError(message); if (message) notificationError(message);
}), })
]); .finally(() => {
setLoading(false); setLoadingActive(false);
});
};
const handleGetDataDefault = async () => {
setLoadingDefault(true);
await axios
.get('v1/data-scheduling-default')
.then((resp) => {
const value = resp.data?.data?.default_value;
form.setFieldsValue({ default_value: value });
setDefaultPercentage(value);
})
.catch((err) => {
const message = err.message;
if (message) notificationError(message);
})
.finally(() => {
setLoadingDefault(false);
});
};
const handleGetData = async () => {
await Promise.all([handleGetDataDefault(), handleGetDataActive()]);
}; };
useEffect(() => { useEffect(() => {
@ -120,7 +134,7 @@ export default function DefaultValue() {
</Modal> </Modal>
<Row gutter={[8, 8]}> <Row gutter={[8, 8]}>
<Col span={12}> <Col span={12}>
<Card loading={loading} styles={{ body: { padding: '6px 12px 6px 12px' } }}> <Card loading={loadingDefault} styles={{ body: { padding: '6px 12px 6px 12px' } }}>
<Flex vertical gap={8} justify="space-between"> <Flex vertical gap={8} justify="space-between">
<div style={{ fontSize: 12, fontWeight: 600, color: 'rgba(0,0,0,0.4)' }}>DEFAULT PERCENTAGE</div> <div style={{ fontSize: 12, fontWeight: 600, color: 'rgba(0,0,0,0.4)' }}>DEFAULT PERCENTAGE</div>
<Flex gap={12}> <Flex gap={12}>
@ -139,13 +153,18 @@ export default function DefaultValue() {
</Card> </Card>
</Col> </Col>
<Col span={12}> <Col span={12}>
<Card loading={loading} styles={{ body: { padding: '6px 12px 6px 12px' } }}> <Card loading={loadingActive} styles={{ body: { padding: '6px 12px 6px 12px' } }}>
<Flex vertical gap={8} justify="space-between"> <Flex vertical gap={8} justify="space-between">
<div style={{ fontSize: 12, fontWeight: 600, color: 'rgba(0,0,0,0.4)' }}>CURRENT PERCENTAGE</div> <div style={{ fontSize: 12, fontWeight: 600, color: 'rgba(0,0,0,0.4)' }}>CURRENT PERCENTAGE</div>
<Flex gap={12}>
<div <div
style={{ fontSize: 24, fontWeight: 600 }} style={{ fontSize: 24, fontWeight: 600 }}
className={`${makeColorTextValue(currentPercentage)}`} className={`${makeColorTextValue(currentPercentage)}`}
>{`${currentPercentage >= 0 ? `${currentPercentage} %` : '-'}`}</div> >{`${currentPercentage >= 0 ? `${currentPercentage} %` : '-'}`}</div>
<Button type="link" onClick={handleGetDataActive}>
Reload
</Button>
</Flex>
<div style={{ fontSize: 11, fontWeight: 400, color: 'rgba(0,0,0,0.4)', fontStyle: 'italic' }}> <div style={{ fontSize: 11, fontWeight: 400, color: 'rgba(0,0,0,0.4)', fontStyle: 'italic' }}>
{`Value yang di terapkan hari ini ${dayjs().format('DD-MM-YYYY')}.`} {`Value yang di terapkan hari ini ${dayjs().format('DD-MM-YYYY')}.`}
</div> </div>