update user & reward

This commit is contained in:
Raja Oktafrianto
2025-04-12 13:27:16 +07:00
parent 4afc55952f
commit a44bbcc77a
5 changed files with 63 additions and 68 deletions

View File

@ -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]);

View File

@ -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]);

View File

@ -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<ContextProps>(initialProps);
const API_URL_MASTER_DATA = apiConfig.service_master_data;
const ManageRewardContextProvider = ({ children }: { children: React.ReactNode }) => {
const [reward, setRewards] = useState<string | null>(null);
const [showAddDialog, setShowAddDialog] = useState(false);
const [showEditDialog, setShowEditDialog] = useState(false);
const [showDeleteDialog, setShowDeleteDialog] = useState(false);
const [selectedReward, setSelectedReward] = useState<Reward | null>(null);
const [selectedReward, setSelectedReward] = useState<string | null>(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 }
<>
<button
className="btn btn-sm btn-icon btn-clear btn-light"
onClick={() => handleEditDialog(true, row)}
onClick={() => handleEditDialog(true, row.id)}
>
<KeenIcon icon="notepad-edit" />
</button>
<button
className="btn btn-sm btn-icon btn-clear btn-light"
onClick={() => handleDeleteDialog(true, row)}
onClick={() => handleDeleteDialog(true, row.id)}
>
<KeenIcon icon="trash" />
</button>
@ -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 (
<ManageRewardContext.Provider
value={{
reward,
showAddDialog,
handleAddDialog,
showEditDialog,
@ -210,4 +197,4 @@ const ManageRewardContextProvider = ({ children }: { children: React.ReactNode }
};
export { ManageRewardContext, ManageRewardContextProvider };
export type { Reward };
export type { SelectedReward };