diff --git a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx index d3670f29..932b87f8 100644 --- a/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx +++ b/src/components/pages/production/project-flock/form/ProjectFlockForm.tsx @@ -33,12 +33,18 @@ import toast from 'react-hot-toast'; import TextInput from '@/components/input/TextInput'; import { Kandang } from '@/types/api/master-data/kandang'; import Collapse from '@/components/Collapse'; -import { ProjectFlockApi } from '@/services/api/production'; +import { ProjectFlockApi } from '@/services/api/production/project-flock'; import { BaseApiResponse } from '@/types/api/api-general'; -import { FLOCK_CATEGORY_OPTIONS } from '@/config/constant'; +import { APPROVAL_WORKFLOWS, FLOCK_CATEGORY_OPTIONS } from '@/config/constant'; import { useModal } from '@/components/Modal'; import ConfirmationModal from '@/components/modal/ConfirmationModal'; import ProjectFlockKandangTable from './ProjectFlockKandangTable'; +import ApprovalSteps from '@/components/pages/ApprovalSteps'; +import Steps from '@/components/steps/Steps'; +import StepItem from '@/components/steps/StepItem'; +import Tooltip from '@/components/Tooltip'; +import { id, is } from 'react-day-picker/locale'; +import { formatDate } from '@/lib/helper'; interface ProjectFlockFormProps { formType?: 'add' | 'edit' | 'detail'; @@ -55,20 +61,22 @@ const ProjectFlockForm = ({ }: ProjectFlockFormProps) => { // State const router = useRouter(); + + const projectFlockSteps = APPROVAL_WORKFLOWS.find( + (step) => step.key === 'PROJECT_FLOCKS' + ); + const [projectFlockFormErrorMessage, setProjectFlockFormErrorMessage] = useState(''); const [selectedArea, setSelectedArea] = useState(''); - const [selectedLocation, setSelectedLocation] = useState(''); const [disabledLocation, setDisabledLocation] = useState(true); - const [openSelectKandangs, setOpenSelectKandangs] = useState( initialValues?.kandangs && initialValues?.kandangs?.length > 0 ); const [optionsKandang, setOptionsKandang] = useState( initialValues?.kandangs ?? [] ); - const [selectedFlock, setSelectedFlock] = useState( initialValues?.flock?.id ?? 0 ); @@ -141,15 +149,14 @@ const ProjectFlockForm = ({ mutate: refreshKandang, } = useSWR(kandangUrl, KandangApi.getAllFetcher); - const getPeriodFlocksUrl = `flocks/${selectedFlock}/periods`; - const { data: periodFlocks, isLoading: isLoadingPeriodFlocks } = useSWR( - getPeriodFlocksUrl, - () => - ProjectFlockApi.customRequest, 'GET'>( - getPeriodFlocksUrl, - { method: 'GET' } - ) + `${selectedFlock.toString()}/periods`, + (id: string) => ProjectFlockApi.getNextPeriod(id) + ); + + const { data: approvalLines, isLoading: isLoadingApprovalLines } = useSWR( + selectedFlock.toString(), + (id: number) => ProjectFlockApi.getApprovalLines(id) ); useEffect(() => { @@ -387,7 +394,10 @@ const ProjectFlockForm = ({ if (isResponseSuccess(periodFlocks)) { formik.setFieldValue('period', periodFlocks.data.next_period); } - }, [periodFlocks]); + if (isResponseError(periodFlocks)) { + console.log(periodFlocks?.message as string); + } + }, [periodFlocks, toast]); useEffect(() => { const selectedRowIds = Object.keys(rowSelection) @@ -485,6 +495,80 @@ const ProjectFlockForm = ({ )} + {formType == 'detail' && isResponseSuccess(approvalLines) && ( +
+ + {projectFlockSteps?.steps.map((step, idx) => { + const approvalLogs = approvalLines.data.find( + (approve) => approve.step_number == step.step_number + ); + return ( + + {approvalLogs && + approvalLogs.approvals.map((approval, idx) => { + return ( +
  • +
    + Status: {approval.step_name} + + Oleh: {approval.action_by.name} + + + Tanggal:{' '} + {formatDate( + approval.action_at, + 'DD-MM-yyyy HH:mm:ss' + )} + +
    +
  • + ); + })} + + } + > + {step.step_number <= + (initialValues?.approval.step_number ?? 0) ? ( + + ) : ( + + )} + + } + > + {step.step_name} +
    + ); + })} +
    +
    + )} {formType == 'detail' && (