From a44bbcc77a247eff798bdb252e006f101da98de7 Mon Sep 17 00:00:00 2001 From: Raja Oktafrianto Date: Sat, 12 Apr 2025 13:27:16 +0700 Subject: [PATCH] update user & reward --- .../master/reward/blocks/DeleteDialog.tsx | 13 ++-- src/pages/master/reward/blocks/EditDialog.tsx | 8 ++- .../reward/hooks/ManageRewardContext.tsx | 39 ++++------- .../user/manage-user/blocks/DeleteDialog.tsx | 1 + .../user/manage-user/blocks/EditDialog.tsx | 70 ++++++++++--------- 5 files changed, 63 insertions(+), 68 deletions(-) diff --git a/src/pages/master/reward/blocks/DeleteDialog.tsx b/src/pages/master/reward/blocks/DeleteDialog.tsx index 8014795..4ece16d 100644 --- a/src/pages/master/reward/blocks/DeleteDialog.tsx +++ b/src/pages/master/reward/blocks/DeleteDialog.tsx @@ -34,24 +34,25 @@ const DeleteDialog = () => { return; } // console.log('Ini datanya:', selectedReward); - const response = await DeleteData(`${API_URL}/reward/delete/${selectedReward?.id}/true`, { - id: selectedReward.id + const response = await DeleteData(`${API_URL}/reward/delete/${selectedReward}/true`, { + id: selectedReward }); + // console.log('Response Delete:', response); if (response?.status) { - setAlert({ show: false, message: '' }); + setAlert((prev) => ({ ...prev, show: false, message: '' })); handleDeleteDialog(false, null); toast.success('Success Delete Reward'); reload(); - const deleteActivity = { + const createActivity = { module: 'Manage Reward', description: `Delete Reward => ${selectedReward}`, action: 'D' }; - doSaveLogActivity(deleteActivity); + doSaveLogActivity(createActivity); } else { - setAlert({ show: true, message: response?.message }); + setAlert((prev) => ({ ...prev, show: true, message: response?.message })); toast.error('Failed Delete Reward'); } }, [selectedReward, DeleteData, handleDeleteDialog, reload]); diff --git a/src/pages/master/reward/blocks/EditDialog.tsx b/src/pages/master/reward/blocks/EditDialog.tsx index 817dfb3..d31989d 100644 --- a/src/pages/master/reward/blocks/EditDialog.tsx +++ b/src/pages/master/reward/blocks/EditDialog.tsx @@ -58,7 +58,9 @@ const EditDialog = () => { const RewardType = { 'Daily Check in': 'D', - Referal: 'R' + Referal: 'R', + 'Level Pro': 'P', + 'Level Prioritas': 'L' } as const; type RewardTypeValue = (typeof RewardType)[keyof typeof RewardType]; @@ -68,7 +70,7 @@ const EditDialog = () => { e.preventDefault(); // console.log('Ini datanya:', selectedReward); - const response = await PutData(`${API_URL}/reward/update/${selectedReward?.id}`, formField); + const response = await PutData(`${API_URL}/reward/update/${selectedReward}`, formField); if (response?.status) { resetForm(); @@ -126,7 +128,7 @@ const EditDialog = () => { useEffect(() => { if (selectedReward) { - doFetchData(selectedReward.id.toString()); + doFetchData(selectedReward); } }, [selectedReward]); diff --git a/src/pages/master/reward/hooks/ManageRewardContext.tsx b/src/pages/master/reward/hooks/ManageRewardContext.tsx index 97c0130..32b8116 100644 --- a/src/pages/master/reward/hooks/ManageRewardContext.tsx +++ b/src/pages/master/reward/hooks/ManageRewardContext.tsx @@ -6,7 +6,7 @@ import React, { createContext, useCallback, useMemo, useState } from 'react'; import { Toaster } from 'sonner'; import ListToolbar from '../blocks/ListToolbar'; -interface Reward { +interface SelectedReward { id: number; name: string; type: string; @@ -14,23 +14,14 @@ interface Reward { status: string; } -const initialState = { - id: '', - name: '', - type: '', - amount: '', - status: '' -}; - interface ContextProps { showAddDialog: boolean; handleAddDialog: (show: boolean) => void; showEditDialog: boolean; - handleEditDialog: (show: boolean, selected_reward: Reward | null) => void; + handleEditDialog: (show: boolean, selected_reward: string | null) => void; showDeleteDialog: boolean; - handleDeleteDialog: (show: boolean, selected_rewad: Reward | null) => void; - selectedReward: Reward | null; - reward: string | null; + handleDeleteDialog: (show: boolean, selected_reward: string | null) => void; + selectedReward: string | null; } const initialProps: ContextProps = { @@ -40,31 +31,29 @@ const initialProps: ContextProps = { handleEditDialog: () => {}, showDeleteDialog: false, handleDeleteDialog: () => {}, - selectedReward: null, - reward: null + selectedReward: null }; const ManageRewardContext = createContext(initialProps); const API_URL_MASTER_DATA = apiConfig.service_master_data; const ManageRewardContextProvider = ({ children }: { children: React.ReactNode }) => { - const [reward, setRewards] = useState(null); const [showAddDialog, setShowAddDialog] = useState(false); const [showEditDialog, setShowEditDialog] = useState(false); const [showDeleteDialog, setShowDeleteDialog] = useState(false); - const [selectedReward, setSelectedReward] = useState(null); + const [selectedReward, setSelectedReward] = useState(null); const { GetData } = useCallApi(); const handleAddDialog = useCallback((show: boolean) => { setShowAddDialog(show); }, []); - const handleEditDialog = useCallback((show: boolean, selected_reward: Reward | null) => { + const handleEditDialog = useCallback((show: boolean, selected_reward: string | null) => { setShowEditDialog(show); setSelectedReward(show ? selected_reward : null); }, []); - const handleDeleteDialog = useCallback((show: boolean, selected_reward: Reward | null) => { + const handleDeleteDialog = useCallback((show: boolean, selected_reward: string | null) => { setShowDeleteDialog(show); setSelectedReward(show ? selected_reward : null); }, []); @@ -135,13 +124,13 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode } <> @@ -154,7 +143,7 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode } } } ], - [] + [handleEditDialog, handleDeleteDialog] ); const getRewardList = async (page: number, limit: number, sorting: any, filter: any) => { @@ -162,7 +151,7 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode } sorting = sorting.length == 0 ? [{ id: 'name', desc: false }] : sorting; filter = filter.length == 0 ? {} : { any: filter[0].value?.toLowerCase() }; const response = await GetData(`${API_URL_MASTER_DATA}/reward/list`, { - limit, + limit: limit, page: page + 1, with_deleted: false, order_field: sorting[0].id, @@ -171,7 +160,6 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode } }); // console.log('API Response:', response?.data.list); // console.log('reward list :', response); - setRewards(response?.data.list); return { data: response?.data.list, totalCount: response?.data.total_count }; } catch (error) { console.error('Error fethcing reward', error); @@ -181,7 +169,6 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode } return ( { const response = await DeleteData(`${API_URL}/user/delete/${selectedUser}/${enforce}`, { id: selectedUser }); + // console.log('Delete Response User:', response); if (response?.status) { setAlert((prev) => ({ ...prev, show: false, message: '' })); handleDeleteDialog(false, null); diff --git a/src/pages/settings/user/manage-user/blocks/EditDialog.tsx b/src/pages/settings/user/manage-user/blocks/EditDialog.tsx index 5fc88a1..ecf99cd 100644 --- a/src/pages/settings/user/manage-user/blocks/EditDialog.tsx +++ b/src/pages/settings/user/manage-user/blocks/EditDialog.tsx @@ -25,6 +25,7 @@ import { } from '@/components/ui/dialog'; import { CustomerProps } from './AddDialog'; import { useUserContext } from '../hooks'; +import { ChevronDown } from 'lucide-react'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; import { apiConfig } from '@/config/api.config'; @@ -142,7 +143,7 @@ const EditDialog = () => { const doFetchUserData = useCallback(async (id: string) => { const response = await GetData(`${API_URL}/user/detail/${id}`, { id }); - console.log('User detail response:', response?.data); + // console.log('User detail response:', response?.data); if (response?.status) { setFormField((prev) => ({ @@ -154,7 +155,7 @@ const EditDialog = () => { status: response.data.status, customerid: response.data.customerid })); - console.log('Customer ID dari user detail:', response.data.customerid); + // console.log('Customer ID dari user detail:', response.data.customerid); } else { setFormField((prev) => ({ ...prev, @@ -230,6 +231,34 @@ const EditDialog = () => { )}
+
+
+ + + setFormField((prev) => ({ ...prev, name: target.value })) + } + /> +
+
+ +
+
+ + + setFormField((prev) => ({ ...prev, username: target.value })) + } + /> +
+
+
@@ -237,11 +266,14 @@ const EditDialog = () => { @@ -279,34 +311,6 @@ const EditDialog = () => {
-
-
- - - setFormField((prev) => ({ ...prev, name: target.value })) - } - /> -
-
- -
-
- - - setFormField((prev) => ({ ...prev, username: target.value })) - } - /> -
-
-