chore: application prettier

This commit is contained in:
Luc SORIGNET
2025-04-15 19:37:47 +02:00
parent dd0884bbce
commit f7666c894b
174 changed files with 10609 additions and 8760 deletions

View File

@ -1,5 +1,15 @@
import React, { useState } from 'react';
import { Plus, Trash2, Edit3, Check, X, EyeOff, Eye, CreditCard, BookOpen } from 'lucide-react';
import {
Plus,
Trash2,
Edit3,
Check,
X,
EyeOff,
Eye,
CreditCard,
BookOpen,
} from 'lucide-react';
import Table from '@/components/Table';
import Popup from '@/components/Popup';
import CheckBox from '@/components/CheckBox';
@ -8,17 +18,29 @@ import logger from '@/utils/logger';
import { ESTABLISHMENT_ID } from '@/utils/Url';
const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handleDelete, type, subscriptionMode = false, selectedFees, handleFeeSelection }) => {
const FeesSection = ({
fees,
setFees,
discounts,
handleCreate,
handleEdit,
handleDelete,
type,
subscriptionMode = false,
selectedFees,
handleFeeSelection,
}) => {
const [editingFee, setEditingFee] = useState(null);
const [newFee, setNewFee] = useState(null);
const [formData, setFormData] = useState({});
const [localErrors, setLocalErrors] = useState({});
const [popupVisible, setPopupVisible] = useState(false);
const [popupMessage, setPopupMessage] = useState("");
const [popupMessage, setPopupMessage] = useState('');
const [removePopupVisible, setRemovePopupVisible] = useState(false);
const [removePopupMessage, setRemovePopupMessage] = useState("");
const [removePopupMessage, setRemovePopupMessage] = useState('');
const [removePopupOnConfirm, setRemovePopupOnConfirm] = useState(() => {});
const labelTypeFrais = (type === 0 ? 'Frais d\'inscription' : 'Frais de scolarité');
const labelTypeFrais =
type === 0 ? "Frais d'inscription" : 'Frais de scolarité';
// Récupération des messages d'erreur
const getError = (field) => {
@ -26,23 +48,31 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
};
const handleAddFee = () => {
setNewFee({ id: Date.now(), name: '', base_amount: '', description: '', validity_start_date: '', validity_end_date: '', discounts: [], type: type, establishment: ESTABLISHMENT_ID });
setNewFee({
id: Date.now(),
name: '',
base_amount: '',
description: '',
validity_start_date: '',
validity_end_date: '',
discounts: [],
type: type,
establishment: ESTABLISHMENT_ID,
});
};
const handleRemoveFee = (id) => {
return handleDelete(id)
.then(() => {
setFees(prevFees => prevFees.filter(fee => fee.id !== id));
setFees((prevFees) => prevFees.filter((fee) => fee.id !== id));
})
.catch(error => {
.catch((error) => {
logger.error(error);
});
};
const handleSaveNewFee = () => {
if (
newFee.name &&
newFee.base_amount) {
if (newFee.name && newFee.base_amount) {
handleCreate(newFee)
.then((createdFee) => {
setFees([createdFee, ...fees]);
@ -52,53 +82,55 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
.catch((error) => {
logger.error('Error:', error.message);
if (error.details) {
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
} else {
setPopupMessage("Tous les champs doivent être remplis et valides");
setPopupMessage('Tous les champs doivent être remplis et valides');
setPopupVisible(true);
}
};
const handleUpdateFee = (id, updatedFee) => {
if (
updatedFee.name &&
updatedFee.base_amount) {
if (updatedFee.name && updatedFee.base_amount) {
handleEdit(id, updatedFee)
.then((updatedFee) => {
setFees(fees.map(fee => fee.id === id ? updatedFee : fee));
setFees(fees.map((fee) => (fee.id === id ? updatedFee : fee)));
setEditingFee(null);
setLocalErrors({});
})
.catch((error) => {
logger.error('Error:', error.message);
if (error.details) {
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
logger.error('Form errors:', error.details);
setLocalErrors(error.details);
}
});
} else {
setPopupMessage("Tous les champs doivent être remplis et valides");
setPopupMessage('Tous les champs doivent être remplis et valides');
setPopupVisible(true);
}
};
const handleToggleActive = (id, isActive) => {
const fee = fees.find(fee => fee.id === id);
const fee = fees.find((fee) => fee.id === id);
if (!fee) return;
const updatedData = {
is_active: !isActive,
discounts: fee.discounts
discounts: fee.discounts,
};
handleEdit(id, updatedData)
.then(() => {
setFees(prevFees => prevFees.map(fee => fee.id === id ? { ...fee, is_active: !isActive } : fee));
setFees((prevFees) =>
prevFees.map((fee) =>
fee.id === id ? { ...fee, is_active: !isActive } : fee
)
);
})
.catch(error => {
.catch((error) => {
logger.error(error);
});
};
@ -107,7 +139,7 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
const { name, value } = e.target;
let parsedValue = value;
if (name === 'discounts') {
parsedValue = value.split(',').map(v => parseInt(v, 10));
parsedValue = value.split(',').map((v) => parseInt(v, 10));
}
if (editingFee) {
setFormData((prevData) => ({
@ -145,24 +177,45 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
if (isEditing || isCreating) {
switch (column) {
case 'NOM':
return renderInputField('name', currentData.name, handleChange, 'Nom des frais');
return renderInputField(
'name',
currentData.name,
handleChange,
'Nom des frais'
);
case 'MONTANT':
return renderInputField('base_amount', currentData.base_amount, handleChange, 'Montant de base');
return renderInputField(
'base_amount',
currentData.base_amount,
handleChange,
'Montant de base'
);
case 'DESCRIPTION':
return renderInputField('description', currentData.description, handleChange, 'Description');
return renderInputField(
'description',
currentData.description,
handleChange,
'Description'
);
case 'ACTIONS':
return (
<div className="flex justify-center space-x-2">
<button
type="button"
onClick={() => (isEditing ? handleUpdateFee(editingFee, formData) : handleSaveNewFee())}
onClick={() =>
isEditing
? handleUpdateFee(editingFee, formData)
: handleSaveNewFee()
}
className="text-green-500 hover:text-green-700"
>
<Check className="w-5 h-5" />
</button>
<button
type="button"
onClick={() => (isEditing ? setEditingFee(null) : setNewFee(null))}
onClick={() =>
isEditing ? setEditingFee(null) : setNewFee(null)
}
className="text-red-500 hover:text-red-700"
>
<X className="w-5 h-5" />
@ -190,7 +243,11 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
onClick={() => handleToggleActive(fee.id, fee.is_active)}
className={`text-${fee.is_active ? 'green' : 'orange'}-500 hover:text-${fee.is_active ? 'green' : 'orange'}-700`}
>
{fee.is_active ? <Eye className="w-5 h-5" /> : <EyeOff className="w-5 h-5" />}
{fee.is_active ? (
<Eye className="w-5 h-5" />
) : (
<EyeOff className="w-5 h-5" />
)}
</button>
<button
type="button"
@ -203,18 +260,26 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
type="button"
onClick={() => {
setRemovePopupVisible(true);
setRemovePopupMessage("Attentions ! \nVous êtes sur le point de supprimer un " + labelTypeFrais + ".\nÊtes-vous sûr(e) de vouloir poursuivre l'opération ?");
setRemovePopupMessage(
'Attentions ! \nVous êtes sur le point de supprimer un ' +
labelTypeFrais +
".\nÊtes-vous sûr(e) de vouloir poursuivre l'opération ?"
);
setRemovePopupOnConfirm(() => () => {
handleRemoveFee(fee.id)
.then(data => {
.then((data) => {
logger.debug('Success:', data);
setPopupMessage(labelTypeFrais + " correctement supprimé");
setPopupMessage(
labelTypeFrais + ' correctement supprimé'
);
setPopupVisible(true);
setRemovePopupVisible(false);
})
.catch(error => {
.catch((error) => {
logger.error('Error archiving data:', error);
setPopupMessage("Erreur lors de la suppression du " + labelTypeFrais);
setPopupMessage(
'Erreur lors de la suppression du ' + labelTypeFrais
);
setPopupVisible(true);
setRemovePopupVisible(false);
});
@ -248,29 +313,33 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
{ name: 'NOM', label: 'Nom' },
{ name: 'DESCRIPTION', label: 'Description' },
{ name: 'MONTANT', label: 'Montant de base' },
{ name: '', label: 'Sélection' }
{ name: '', label: 'Sélection' },
]
: [
{ name: 'NOM', label: 'Nom' },
{ name: 'MONTANT', label: 'Montant de base' },
{ name: 'DESCRIPTION', label: 'Description' },
{ name: 'MISE A JOUR', label: 'Date mise à jour' },
{ name: 'ACTIONS', label: 'Actions' }
{ name: 'ACTIONS', label: 'Actions' },
];
return (
<div className="space-y-4">
{!subscriptionMode && (
<div className="flex justify-between items-center">
<div className="flex items-center mb-4">
<CreditCard className="w-6 h-6 text-emerald-500 mr-2" />
<h2 className="text-xl font-semibold">Liste des frais</h2>
<div className="flex justify-between items-center">
<div className="flex items-center mb-4">
<CreditCard className="w-6 h-6 text-emerald-500 mr-2" />
<h2 className="text-xl font-semibold">Liste des frais</h2>
</div>
<button
type="button"
onClick={handleAddFee}
className="text-emerald-500 hover:text-emerald-700"
>
<Plus className="w-5 h-5" />
</button>
</div>
<button type="button" onClick={handleAddFee} className="text-emerald-500 hover:text-emerald-700">
<Plus className="w-5 h-5" />
</button>
</div>
)}
)}
<Table
data={newFee ? [newFee, ...fees] : fees}
columns={columns}
@ -293,4 +362,4 @@ const FeesSection = ({ fees, setFees, discounts, handleCreate, handleEdit, handl
);
};
export default FeesSection;
export default FeesSection;