diff --git a/Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php b/Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php index f4362852..229c03d2 100644 --- a/Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateBenefitController.php @@ -20,10 +20,12 @@ class CorporateBenefitController extends Controller $benefits = CorporateBenefit::query() ->filter($request->all()) ->where('corporate_id', $corporate_id) - ->paginate(0) + ->with('benefit', 'plan') + ->paginate(10) ->appends($request->all()); return $benefits; } + public function activation(Request $request, $benefit_id) { $request->validate([ @@ -31,9 +33,8 @@ class CorporateBenefitController extends Controller ]); // abort(404); - - $benefit = CorporateBenefit::findOrFail($benefit_id); - $benefit->active = $request->active == '1'; + $benefit = CorporateBenefit::find($benefit_id); + $benefit->active = $request->active == 1 ? 0 : 1; $benefit->reason = $request->reason; if ($benefit->save()) { diff --git a/frontend/dashboard/src/pages/Corporates/Benefit/List.tsx b/frontend/dashboard/src/pages/Corporates/Benefit/List.tsx index cbbfbf12..7b9e77c3 100644 --- a/frontend/dashboard/src/pages/Corporates/Benefit/List.tsx +++ b/frontend/dashboard/src/pages/Corporates/Benefit/List.tsx @@ -1,4 +1,5 @@ // @mui +import * as Yup from 'yup'; import { Box, Button, @@ -38,6 +39,8 @@ import HistoryIcon from '@mui/icons-material/History'; import CachedOutlinedIcon from '@mui/icons-material/CachedOutlined'; import FindInPageOutlinedIcon from '@mui/icons-material/FindInPageOutlined'; +import { yupResolver } from '@hookform/resolvers/yup'; +import { useForm } from 'react-hook-form'; // hooks import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react'; @@ -72,6 +75,7 @@ import TableMoreMenu from '@/components/table/TableMoreMenu'; import { Edit } from '@mui/icons-material'; import { fData, fNumber } from '@/utils/formatNumber'; import DialogUpdateStatus from '@/components/DialogUpdateStatus'; +import { ro } from 'date-fns/locale'; export default function PlanList() { const { themeStretch } = useSettings(); @@ -313,12 +317,18 @@ export default function PlanList() { } type DataContent = { - code: string; - name: string; + service: string; id: number; - status: string|number; + status: number; + plan: string, + benefit_code: string, + customer_benefit_code: string, }; + type FormValuesProps = { + value: string; + active: boolean; + }; // Generate the every row of the table const [isDialogOpen, setDialogOpen] = useState(false) @@ -335,6 +345,14 @@ export default function PlanList() { const [open, setOpen] = React.useState(false); const [openEdit, setOpenEdit] = React.useState(false); + const handleActivate = (isOpen: boolean, dataValue: DataContent) => { + console.log(dataValue) + setDialogOpen(isOpen) + setDataValue(dataValue) + setDescriptionValue('Are you sure to inactive this service ?') + setUrl(url) + }; + // const handleActivate = (model: any, status: string) => { // axios // .put(`/benefits/${row.id}/activation`, { @@ -362,14 +380,6 @@ export default function PlanList() { // }); // }; - - const handleActivate = (isOpen: boolean, dataValue: DataContent) => { - setDialogOpen(isOpen) - setDataValue(dataValue) - setDescriptionValue('Are you sure to inactive this service ?') - setUrl(url) - }; - let frequency_period_name: string switch (row.max_frequency_period) { case '1' : @@ -476,7 +486,18 @@ export default function PlanList() { History - handleActivate(true, {code: row.code, name: row.service_code, id:row.id, status: row.active}) }> + + handleActivate(true, { + service: row.benefit?.service_code, + plan: row.plan?.code, + benefit_code: row.benefit?.code, + customer_benefit_code: row.corporate_benefit_code, + id:row.id, + status: row.active + }) + } + > Update Status @@ -866,7 +887,7 @@ export default function PlanList() { const loadDataTableData = async (appliedFilter = null) => { setDataTableLoading(true); const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]); - const response = await axios.get('/corporates/' + corporate_id + '/benefits', { + const response = await axios.get('/corporates/' + corporate_id + '/corporate-benefits', { params: filter, }); // console.log(response.data); @@ -879,6 +900,19 @@ export default function PlanList() { fontWeight: 'bold', }; + const onSubmit = async (row : any) => { + try { + handleUpdate(dataValue.status, dataValue.id, row.reason) + } catch (error: any) { + console.log('data gagal'); + } + + const ascent = document?.querySelector('ascent'); + if (ascent != null) { + ascent.innerHTML = ''; + } + }; + const applyFilter = async (searchFilter: string) => { await loadDataTableData({ search: searchFilter }); setSearchParams({ search: searchFilter }); @@ -894,25 +928,64 @@ export default function PlanList() { loadDataTableData(); }, []); + const NewCorporateSchema = Yup.object().shape({ + reason: Yup.string().required('Reason Edit is required'), + }); + + const methods = useForm({ + resolver: yupResolver(NewCorporateSchema), + }); + + + const { + reset, + handleSubmit, + formState: { isSubmitting }, + } = methods; + + const handleUpdate = (active: number, id: number, reason:string) => { + console.log(active) + axios + .put(`/benefits/${id}/activation`, { + active: active, + reason: reason + }) + .then((res) => { + window.location.reload(); + }); + } + const getContent = () => ( <> - Are you sure to {dataValue?.status == 1 ? 'inactive' : 'active'} this service ? + Are you sure to {dataValue?.status == 1 ? 'inactive' : 'active'} this benefit ? - + + Service + + + {dataValue?.service} + + + Plan + + + {dataValue?.plan} + + Code - - {dataValue?.code} + + {dataValue?.benefit_code} - - Service Name + + Customer Benefit Code - - {dataValue?.name} + + {dataValue?.customer_benefit_code} @@ -1058,7 +1131,7 @@ export default function PlanList() { title={{ name: 'Reason For Update' }} /> )} - {/* */} + /> ); } diff --git a/frontend/dashboard/src/pages/Corporates/Benefit/sections/History.tsx b/frontend/dashboard/src/pages/Corporates/Benefit/sections/History.tsx index 7cd79003..0a2b9a3f 100644 --- a/frontend/dashboard/src/pages/Corporates/Benefit/sections/History.tsx +++ b/frontend/dashboard/src/pages/Corporates/Benefit/sections/History.tsx @@ -155,6 +155,7 @@ export default function CustomizedAccordions() { if (key !== 'reason') { return null; // Melewati iterasi saat key adalah 'deleted_by' } + renderedValue = item.new_values[key]; const field = key.charAt(0).toUpperCase() + key.slice(1); diff --git a/frontend/dashboard/src/pages/Corporates/DiagnosisExclusion/List.tsx b/frontend/dashboard/src/pages/Corporates/DiagnosisExclusion/List.tsx index 9d09e4b1..431f855f 100644 --- a/frontend/dashboard/src/pages/Corporates/DiagnosisExclusion/List.tsx +++ b/frontend/dashboard/src/pages/Corporates/DiagnosisExclusion/List.tsx @@ -514,7 +514,7 @@ export default function List(props: any) { {if(open==true) setOpen(!open)}}> {row.active == 1 && (