Added few functions to the platform

This commit is contained in:
2026-02-06 11:34:16 +01:00
parent bb5c3058b1
commit ccff904464
14 changed files with 2770 additions and 74 deletions

View File

@@ -4,6 +4,7 @@ import { useState, useEffect, useCallback, memo } from 'react';
import { useRouter } from 'next/navigation';
import { useNotification } from './NotificationProvider';
import { AVAILABLE_PAGES } from '@/lib/pages';
import ConfirmModal from './ConfirmModal';
interface AdherentOption {
id: string;
@@ -185,6 +186,18 @@ export default function ConfigurationContent() {
facturation: '',
forfait: '',
});
const [confirmDeleteOptionModal, setConfirmDeleteOptionModal] = useState<{
show: boolean;
id: string | null;
} | null>(null);
const [confirmDeleteUserModal, setConfirmDeleteUserModal] = useState<{
show: boolean;
userId: string | null;
} | null>(null);
const [confirmDeleteRoleModal, setConfirmDeleteRoleModal] = useState<{
show: boolean;
roleId: string | null;
} | null>(null);
const fetchOptions = useCallback(async () => {
setLoading(true);
@@ -286,13 +299,20 @@ export default function ConfigurationContent() {
setEditingValue('');
}, []);
const handleDelete = useCallback(async (id: string) => {
if (!confirm('Êtes-vous sûr de vouloir supprimer cette option ?')) {
return;
}
const handleDelete = useCallback((id: string) => {
setConfirmDeleteOptionModal({
show: true,
id,
});
}, []);
const confirmDeleteOption = useCallback(async () => {
if (!confirmDeleteOptionModal?.id) return;
const idToDelete = confirmDeleteOptionModal.id;
try {
const response = await fetch(`/api/settings/adherent-options/${id}`, {
const response = await fetch(`/api/settings/adherent-options/${idToDelete}`, {
method: 'DELETE',
});
@@ -306,8 +326,10 @@ export default function ConfigurationContent() {
} catch (error) {
console.error('Erreur:', error);
showNotification('Erreur lors de la suppression', 'error');
} finally {
setConfirmDeleteOptionModal(null);
}
}, [showNotification, fetchOptions]);
}, [confirmDeleteOptionModal, fetchOptions, showNotification]);
const handleNewValueChange = useCallback((type: 'situation' | 'prescripteur' | 'facturation' | 'forfait', value: string) => {
setNewValue((prev) => ({ ...prev, [type]: value }));
@@ -375,13 +397,18 @@ export default function ConfigurationContent() {
}
};
const handleDeleteUser = async (userId: string) => {
if (!confirm('Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible.')) {
return;
}
const handleDeleteUser = (userId: string) => {
setConfirmDeleteUserModal({
show: true,
userId,
});
};
const confirmDeleteUser = async () => {
if (!confirmDeleteUserModal?.userId) return;
try {
const response = await fetch(`/api/users/${userId}`, {
const response = await fetch(`/api/users/${confirmDeleteUserModal.userId}`, {
method: 'DELETE',
});
@@ -599,6 +626,20 @@ export default function ConfigurationContent() {
</div>
</div>
)}
{/* Modal de confirmation de suppression utilisateur */}
{confirmDeleteUserModal && (
<ConfirmModal
isOpen={confirmDeleteUserModal.show}
title="Supprimer l'utilisateur"
message="Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible."
confirmText="Supprimer"
cancelText="Annuler"
confirmColor="danger"
onConfirm={confirmDeleteUser}
onCancel={() => setConfirmDeleteUserModal(null)}
/>
)}
</>
);
};
@@ -800,13 +841,18 @@ export default function ConfigurationContent() {
}
};
const handleDeleteRole = async (roleId: string) => {
if (!confirm('Êtes-vous sûr de vouloir supprimer ce rôle ?')) {
return;
}
const handleDeleteRole = (roleId: string) => {
setConfirmDeleteRoleModal({
show: true,
roleId,
});
};
const confirmDeleteRole = async () => {
if (!confirmDeleteRoleModal?.roleId) return;
try {
const response = await fetch(`/api/roles/${roleId}`, {
const response = await fetch(`/api/roles/${confirmDeleteRoleModal.roleId}`, {
method: 'DELETE',
});
@@ -820,6 +866,8 @@ export default function ConfigurationContent() {
} catch (error) {
console.error('Erreur:', error);
showNotification('Erreur lors de la suppression', 'error');
} finally {
setConfirmDeleteRoleModal(null);
}
};
@@ -1023,6 +1071,19 @@ export default function ConfigurationContent() {
</div>
)}
{/* Modal de confirmation de suppression rôle */}
{confirmDeleteRoleModal && (
<ConfirmModal
isOpen={confirmDeleteRoleModal.show}
title="Supprimer le rôle"
message="Êtes-vous sûr de vouloir supprimer ce rôle ?"
confirmText="Supprimer"
cancelText="Annuler"
confirmColor="danger"
onConfirm={confirmDeleteRole}
onCancel={() => setConfirmDeleteRoleModal(null)}
/>
)}
</>
);
};
@@ -1216,6 +1277,46 @@ export default function ConfigurationContent() {
</div>
</div>
</div>
{/* Modales de confirmation */}
{confirmDeleteOptionModal && (
<ConfirmModal
isOpen={confirmDeleteOptionModal.show}
title="Supprimer l'option"
message="Êtes-vous sûr de vouloir supprimer cette option ?"
confirmText="Supprimer"
cancelText="Annuler"
confirmColor="danger"
onConfirm={confirmDeleteOption}
onCancel={() => setConfirmDeleteOptionModal(null)}
/>
)}
{confirmDeleteUserModal && (
<ConfirmModal
isOpen={confirmDeleteUserModal.show}
title="Supprimer l'utilisateur"
message="Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible."
confirmText="Supprimer"
cancelText="Annuler"
confirmColor="danger"
onConfirm={confirmDeleteUser}
onCancel={() => setConfirmDeleteUserModal(null)}
/>
)}
{confirmDeleteRoleModal && (
<ConfirmModal
isOpen={confirmDeleteRoleModal.show}
title="Supprimer le rôle"
message="Êtes-vous sûr de vouloir supprimer ce rôle ?"
confirmText="Supprimer"
cancelText="Annuler"
confirmColor="danger"
onConfirm={confirmDeleteRole}
onCancel={() => setConfirmDeleteRoleModal(null)}
/>
)}
</div>
);
}