import { useCallback, useEffect, useState } from 'react'; import { Button, Form } from 'antd'; import FormHeader from '../PageComponents/FormHeader'; import { Messages } from '../../Components/Notifications/Messages'; import TextAreaInput from '../../Components/Forms/TextArea'; import Buttons from '../../Components/Forms/Buttons'; import { changeBreadCrumb } from '../../Features/AppPage/CenterPage'; import { getSession } from '../../Services/Others'; import { useDispatch } from 'react-redux'; import { postEmpRelieve, getEmpRelieve, deleteEmpRelieve, putEmpRelieve } from '../../Features/EmpRelieve/EmpRelieve'; import { DatePicProd } from '../../Components/Forms/DatePickerProduct'; import moment from 'moment'; import dayjs from 'dayjs'; const subDirectory = import.meta.env.BASE_URL; const items = [ { name: 'Home', link: `${subDirectory}app-page/home`, }, { name: 'Relieve-Request-Form', link: `${subDirectory}app-page/relieve-request`, }, ]; const RelieveRequestForm = () => { const [form] = Form.useForm(); const [message, setMessage] = useState({ type: '', data: '' }); const [date, setDate] = useState(""); const [reason, setReason] = useState(""); const [edit, setEdit] = useState({ uniqueId: null, type: false }); const dispatch = useDispatch(); const AppId = getSession('AppId'); const CompId = getSession('CompId'); const BranchId = getSession('BranchId'); const UserId = getSession('UserId'); const onComplete = useCallback(() => { setMessage({ type: '', data: '' }); }, []) useEffect(() => { try { dispatch(changeBreadCrumb({ items: items })); getEmpRelieveApi(); } catch (err) { console.log(err, 'err'); } }, []); const getEmpRelieveApi = async () => { const response = await dispatch(getEmpRelieve({ CompId, UserId, AppId, BranchId })).unwrap() if (response?.data?.statusCode === 1) { const relieveData = response?.data?.data; if (relieveData?.length > 0) { setEdit({ uniqueId: relieveData[0]?.UniqueId, type: true }); const editDate = relieveData[0]?.RelieveDate ? moment(relieveData[0]?.RelieveDate, ['YYYY-MM-DD']).format( 'YYYY-MM-DDTHH:mm:ss') : null; form.setFieldsValue({ RelieveDate: editDate, RelieveReason: relieveData[0]?.RelieveReason || '' }); setDate(editDate); setReason(relieveData[0]?.RelieveReason || ''); } } } const onFinish = async (values) => { try { let response = {}; const formattedDate = values.RelieveDate ? dayjs(values.RelieveDate).format('YYYY-MM-DD') : null; const postData = { AppId, CompId, BranchId, UserId, "RelieveDate": formattedDate, "RelieveReason": values.RelieveReason, } if (edit?.type) { response = await dispatch(putEmpRelieve({ ...postData, "UniqueId": edit?.uniqueId, "UpdatedBy": UserId }))?.unwrap(); } else { response = await dispatch(postEmpRelieve({ ...postData, "CreatedBy": UserId }))?.unwrap(); } if (response?.data?.statusCode === 1) { setMessage({ type: 'success', data: response?.data?.response }); getEmpRelieveApi(); } else { setMessage({ type: 'error', data: response?.data?.response }); } } catch (error) { setMessage({ type: 'error', data: 'Failed to submit relieve request. Please try again.' }); } }; const onFinishFailed = (errorInfo) => { setMessage({ type: 'error', data: 'Please fill in all required fields correctly.' }); }; const onDeleteEmpRelieve = async () => { try { const response = await dispatch(deleteEmpRelieve({ uniqueId : edit?.uniqueId, updatedBy : UserId, activeStatus : "D"})).unwrap(); if (response?.data?.statusCode === 1) { setMessage({ type: 'success', data: response?.data?.response }); form.resetFields(); setDate(""); setReason(""); setEdit(false); } else { setMessage({ type: 'error', data: response?.data?.response }); } } catch (error) { setMessage({ type: 'error', data: 'Failed to delete relieve request.' }); } }; const onDateChange = async (date, dateString) => { if (dateString) { const Date = moment(dateString, ['DD-MM-YYYY']).format( 'YYYY-MM-DDTHH:mm:ss' ); form?.setFieldsValue({ RelieveDate: Date }); setDate(Date); } else { form?.setFieldsValue({ RelieveDate: null }); setDate(null); } }; return (
Relieve Date } name="RelieveDate" rules={[ { required: true, message: 'Please select relieve date!', }, ]} style={{ marginBottom: '25px' }} > Please provide your reason for Relieve...} onChange={(e) => { form.setFieldsValue({ RelieveReason: e.target.value }); setReason(e.target.value); }} defaultValue={reason} isOnChange={edit?.type} maxLength={250} showCount width={true} />
{edit?.type && ( )}
); }; export default RelieveRequestForm;