1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/web/ synced 2025-03-09 00:00:01 +01:00

implemented delete usergroup

Signed-off-by: Andrii Podriez <andrey5577990@gmail.com>
This commit is contained in:
Andrii Podriez 2024-09-18 14:08:00 +02:00 committed by Youssef Nakti
parent 7364b74d2f
commit 26be6f0b2b
3 changed files with 46 additions and 6 deletions

View file

@ -16,24 +16,28 @@
******************************************************************************/
import { useState } from "react";
import { useGetUsergroupsQuery, useAddUserGroupMutation } from "../../store/apiSlice";
import { Table, DataColumn, LinkColumn } from "../../common/table";
import { useGetUsergroupsQuery, useAddUsergroupMutation,useDeleteUsergroupMutation } from "../../store/apiSlice";
import { Table, DataColumn, LinkColumn, ButtonColumn } from "../../common/table";
import IconButton from "../../common/buttons/icon-button";
import { buttonStyle, iconStyle } from "./styles";
import AddUsergroupDialog from "./dialogs/addUsergroupDialog";
import DeleteDialog from "../../common/dialogs/delete-dialog";
const Usergroups = (props) => {
const {data: {usergroups} = {}, refetch: refetchUsergroups, isLoading} = useGetUsergroupsQuery();
const [addUserGroup] = useAddUserGroupMutation();
const [addUsergroup] = useAddUsergroupMutation();
const [deleteUsergroup] = useDeleteUsergroupMutation();
const [isAddDialogOpen, setIsAddDialogOpen] = useState(false);
const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false);
const [dialogUsegroup, setDialogUsergroup] = useState({});
const handleAddNewGroup = async (response) => {
if(response){
try {
//put data in correct structure
const usergroup = {Name: response.name, ScenarioMappings: [{Duplicate: response.isDuplicateSelected, ScenarioID: Number(response.scenarioID)}]};
await addUserGroup(usergroup).unwrap();
await addUsergroup(usergroup).unwrap();
refetchUsergroups();
} catch (err) {
@ -42,6 +46,20 @@ const Usergroups = (props) => {
}
setIsAddDialogOpen(false);
}
const handleDeleteUsergroup = async (isConfirmed) => {
if(isConfirmed){
try{
await deleteUsergroup(dialogUsegroup.id);
refetchUsergroups();
} catch(error){
console.log('Error deleting usergroup', error)
}
}
setDialogUsergroup({});
setIsDeleteDialogOpen(false);
}
if(isLoading) return <div>Loading</div>;
@ -72,9 +90,24 @@ const Usergroups = (props) => {
link="/usergroup/"
linkKey="id"
/>
<ButtonColumn
width="200"
align="right"
deleteButton
onDelete={(index) => {
setDialogUsergroup(usergroups[index]);
setIsDeleteDialogOpen(true);
}}
/>
</Table>
<AddUsergroupDialog isModalOpened={isAddDialogOpen} onClose={handleAddNewGroup} />
<DeleteDialog
title="scenario"
name={dialogUsegroup.name}
show={isDeleteDialogOpen}
onClose={(isConfirmed) => handleDeleteUsergroup(isConfirmed)}
/>
</div>);
}
}

View file

@ -107,5 +107,6 @@ export const {
useLazyDownloadImageQuery,
useUpdateComponentConfigMutation,
useGetUsergroupsQuery,
useAddUserGroupMutation
useAddUsergroupMutation,
useDeleteUsergroupMutation
} = apiSlice;

View file

@ -19,7 +19,7 @@ export const usergroupEndpoints = (builder) => ({
getUsergroups: builder.query({
query: () => 'usergroups',
}),
addUserGroup: builder.mutation({
addUsergroup: builder.mutation({
query: (usergroup) => ({
url: '/usergroups',
method: 'POST',
@ -28,4 +28,10 @@ export const usergroupEndpoints = (builder) => ({
},
}),
}),
deleteUsergroup: builder.mutation({
query: (usergroupID) => ({
url: `usergroups/${usergroupID}`,
method: 'DELETE',
}),
}),
});