17/03/2026 - 22h

branche_01062025
Cherif 2026-03-17 21:02:02 +01:00
parent 20bab772d0
commit a3c91fca03
15 changed files with 3326 additions and 268 deletions

View File

@ -6571,12 +6571,12 @@ const AddClassManual = (props) => {
}
if (mylocaltraining.ATTESTATION_FORMATION_PDF) {
console.log(" ### eeee = ", mylocaltraining.ATTESTATION_FORMATION_PDF)
// console.log(" ### eeee = ", mylocaltraining.ATTESTATION_FORMATION_PDF)
setselected_default_attestation_PDF(mylocaltraining.ATTESTATION_FORMATION_PDF);
}
if (mylocaltraining.ATTESTATION_FORMATION_MAIL) {
console.log(" ### iii = ", mylocaltraining.ATTESTATION_FORMATION_MAIL)
// console.log(" ### iii = ", mylocaltraining.ATTESTATION_FORMATION_MAIL)
setselected_default_attestation_Email(mylocaltraining.ATTESTATION_FORMATION_MAIL);
}
@ -7972,7 +7972,7 @@ const AddClassManual = (props) => {
{p_detail_archive && String(p_detail_archive) === "1" &&
<div class="block_archive"> Document Archivé </div>}
<div className="div_row" style={{ border: 'none' }} >
<div className="Grid_2_col" >

View File

@ -2694,9 +2694,6 @@ const Apprenant = (props) => {
setDialog_add_inscription_open(true);
}
const Dialog_add_inscription_handleClose = () => {
};
const Dialog_add_inscription_handleClose_buton = () => {
setDialog_add_inscription_open(false);

View File

@ -97,6 +97,8 @@ const DistplayPartnerTraningsPage = (props) => {
const stored_cookie_catalog_data_row_grouped_by = getCookie('mysy_catalog_data_row_grouped_by');
const history = useHistory();
const [myApiResponse, setmyApiResponse] = useState("false");
const filters = [
@ -374,6 +376,7 @@ const DistplayPartnerTraningsPage = (props) => {
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("is_ftion_initiale", props.class_is_ftion_initiale);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
@ -442,6 +445,8 @@ const DistplayPartnerTraningsPage = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("is_ftion_initiale", props.class_is_ftion_initiale);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/find_partner_class_like/";
fetch(myurl,
@ -493,6 +498,8 @@ const DistplayPartnerTraningsPage = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("is_ftion_initiale", props.class_is_ftion_initiale);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/find_partner_class_like/";
fetch(myurl,
{
@ -2219,7 +2226,7 @@ const DistplayPartnerTraningsPage = (props) => {
setGetall_Parter_bloc_competence_api("true");
setGetall_Parter_bloc_competence_result(res.data.message);
//setRows(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
@ -2929,7 +2936,7 @@ const DistplayPartnerTraningsPage = (props) => {
</div>
<div className="div_row_droite_dialog_session" style={{ "textAlign": 'right' }}>
{<nav> {selected_row_data_json.price} {selected_row_data_json.currecny}</nav>}
{<nav> {selected_row_data_json.price} {selected_row_data_json.currency}</nav>}
</div>
</div>
@ -3072,7 +3079,11 @@ const DistplayPartnerTraningsPage = (props) => {
</div>
}
<h3 style={{ fontFamily: 'DM Sans' }}> Mes formations </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes formations &nbsp;
{props.class_is_ftion_initiale && props.class_is_ftion_initiale === "1" && <font style={{ "color": "orange", "textAlign": "center", fontStyle: 'italic' }}> Initiales</font>}
{props.class_is_ftion_initiale && props.class_is_ftion_initiale !== "1" && <font style={{ "color": "orange", "textAlign": "center", fontStyle: 'italic' }}> Continues</font>}
</h3>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
@ -3563,7 +3574,7 @@ const DistplayPartnerTraningsPage = (props) => {
presentiel: JSON.parse(item).presentiel.presentiel,
distanciel: JSON.parse(item).presentiel.distantiel,
cible: JSON.parse(item).pourqui,
currency: JSON.parse(item).currecny,
currency: JSON.parse(item).currency,
archive: JSON.parse(item).archive,
version: JSON.parse(item).version,
@ -3772,7 +3783,7 @@ const DistplayPartnerTraningsPage = (props) => {
presentiel: JSON.parse(item).presentiel.presentiel,
distanciel: JSON.parse(item).presentiel.distantiel,
cible: JSON.parse(item).pourqui,
currency: JSON.parse(item).currecny,
currency: JSON.parse(item).currency,
version: JSON.parse(item).version,

View File

@ -1249,6 +1249,8 @@ const Employes = (props) => {
form.append("tab_scope_session", tab_scope_session_id);
form.append("user_menu", p_detail_user_menu);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_User_Access_Scope/";
setLoading(true);
@ -1528,6 +1530,8 @@ const Employes = (props) => {
setp_detail_lms_virtualhost_url('');
setp_detail_mysy_lms_user_id('');
setp_detail_lms_account_disable('');
setp_detail_formation_initale("");
setp_detail_user_menu("")
}
@ -1593,6 +1597,10 @@ const Employes = (props) => {
const [p_detail_lms_account_disable, setp_detail_lms_account_disable] = useState("");
const [p_detail_formation_initale, setp_detail_formation_initale] = useState("");
const [p_detail_user_menu, setp_detail_user_menu] = useState("");
const [p_detail_user_pass, setp_detail_user_pass] = useState("");
@ -1786,6 +1794,21 @@ const Employes = (props) => {
}
if (mylocal_employe.formation_initiale) {
setp_detail_formation_initale(mylocal_employe.formation_initiale);
} else {
setp_detail_formation_initale("");
}
if (mylocal_employe.user_menu) {
setp_detail_user_menu(mylocal_employe.user_menu);
} else {
setp_detail_user_menu("");
}
if (mylocal_employe.user_login) {
setp_detail_user_login(mylocal_employe.user_login);
@ -4690,7 +4713,7 @@ const Employes = (props) => {
};
const [p_new_login, setp_new_login] = React.useState("");
const [p_new_pwd, setp_new_pwd] = React.useState("");
const [p_conf_new_login, setp_conf_new_login] = React.useState("");
@ -7106,7 +7129,6 @@ const Employes = (props) => {
));
};
const [scope_changed, setscope_changed] = React.useState("");
const [Dialog_signature_digitale_message, setDialog_signature_digitale_message] = React.useState(false);
@ -7355,7 +7377,7 @@ const Employes = (props) => {
{ "id": "4", "label": "ENT Créer accès", "value": "create_ent" },
{ "id": "5", "label": "ENT Désactiver", "value": "disable_ent" },
{ "id": "6", "label": "ENT Réactiver", "value": "enable_ent" },
]
const [actionmass_ftion_val, setactionmass_ftion_val] = useState();
@ -7571,7 +7593,13 @@ const Employes = (props) => {
})
}
const New_Option_Menu = [
{ "id": "0", "label": "Menu Formation Continue", "value": "0" },
{ "id": "1", "label": "Menu Formation Initiale", "value": "1" },
{ "id": "2", "label": "Ftion Continue & Ftion Initiale", "value": "2" },
{ "id": "", "label": "", "value": "" },
]
return (
<div className="employes">
@ -9739,7 +9767,7 @@ const Employes = (props) => {
options={New_Option}
onChange={(event, value) => {
if (value && value.value) {
if ( String(value.value) === "create_ent"
if (String(value.value) === "create_ent"
|| String(value.value) === "disable_ent"
|| String(value.value) === "enable_ent"
@ -9764,7 +9792,7 @@ const Employes = (props) => {
{String(props.check_user_acces_right("employe", "write")) === "1" && selectionModel && selectionModel.length >= 1 &&
actionmass_ftion_val && String(actionmass_ftion_val).length > 2 && [ 'create_ent', 'disable_ent', 'enable_ent'].includes(actionmass_ftion_val) &&
actionmass_ftion_val && String(actionmass_ftion_val).length > 2 && ['create_ent', 'disable_ent', 'enable_ent'].includes(actionmass_ftion_val) &&
<nav className='block_en_mass_bton_action'>
<Popup
trigger={<Button className="bton_enreg" style={{ "width": "90%" }}>
@ -9786,7 +9814,7 @@ const Employes = (props) => {
<div className="gest_header"> MySy Information - {actionmass_ftion_val} </div>
<div className="gest_content">
{' '}
{String(actionmass_ftion_val) === "create_ent" &&
<font> Confirmer la création des {selectionModel.length} comptes ENT en masse.
@ -12413,6 +12441,39 @@ const Employes = (props) => {
</div>}
{props.formation_initiale && props.formation_initiale === "2" &&
<div className="session_caract" >
<Tooltip className="tooltip_css" id="menu" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="menu" data-tooltip-html="Choisir un menu pour l'utilisateur ">
<b>Menu &nbsp; <FcInfo /></b>
</a> <br />
<Autocomplete
disablePortal
name="one_user_menu"
id="one_user_menu"
className="disabled_style enable_style disabled_style_no_border"
value={New_Option_Menu.filter((data) => (data).id === String(p_detail_user_menu))[0].label}
options={New_Option_Menu}
onChange={(event, value) => {
setscope_changed("1");
if (value && value.id) {
setp_detail_user_menu(value.id);
} else {
setp_detail_user_menu("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
</div>
<div className="div_row" style={{ "border": "None" }}>

View File

@ -15,7 +15,7 @@ import fr from 'date-fns/locale/fr';
import { registerLocale } from 'react-datepicker';
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import Autocomplete from '@mui/material/Autocomplete';
import moment from "moment";
import Box from '@mui/material/Box';
@ -98,6 +98,7 @@ const Module_Absence = (props) => {
const columns = [
{ field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true },
{ field: 'session_id', headerName: 'session_id', hide: true },
{ field: 'event_type', headerName: 'Type', flex: 1, hide: false, editable: false },
{ field: 'event_title', headerName: 'Titre', flex: 1, hide: false, editable: false, },
{
@ -121,6 +122,7 @@ const Module_Absence = (props) => {
return ""
},
},
{ field: 'code_session', headerName: 'Session/promo', flex: 1, hide: false, editable: false, },
{ field: 'event_comment', headerName: 'Comment', flex: 1, hide: true, editable: false, },
@ -198,9 +200,11 @@ const Module_Absence = (props) => {
'start': String(JSON.parse(obj).event_start),
'end': String(JSON.parse(obj).event_end),
'id': String(JSON.parse(obj)._id),
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
} else {
local_val = {
@ -211,6 +215,8 @@ const Module_Absence = (props) => {
'comment': "",
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
}
@ -283,6 +289,8 @@ const Module_Absence = (props) => {
'comment': String(JSON.parse(obj).comment),
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
} else {
local_val = {
@ -293,6 +301,8 @@ const Module_Absence = (props) => {
'comment': "",
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
}
@ -366,6 +376,8 @@ const Module_Absence = (props) => {
'comment': String(JSON.parse(obj).comment),
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
} else {
local_val = {
@ -376,6 +388,8 @@ const Module_Absence = (props) => {
'comment': "",
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
'code_session': String(JSON.parse(obj).code_session),
}
}
@ -495,9 +509,10 @@ const Module_Absence = (props) => {
setp_detail_end(info.end)
setp_detail_comment("");
setp_detail_event_id("");
setp_detail_session_id("")
setp_detail_justified(false);
setp_detail_event_type("absence");
setStartDate(info.start);
setendDate(info.end);
@ -525,6 +540,8 @@ const Module_Absence = (props) => {
const handleSelect_list = (info) => {
setp_detail_data_changed("");
if (String(selected_attendee_email).length < 2) {
// alert(res.data.message);
@ -542,6 +559,7 @@ const Module_Absence = (props) => {
setp_detail_end(new_start_date)
setp_detail_comment("");
setp_detail_event_id("");
setp_detail_session_id("")
setp_detail_justified(false);
setp_detail_event_type("absence");
@ -557,13 +575,14 @@ const Module_Absence = (props) => {
//console.log(eventInfo);
return (
<>
<b>{eventInfo.timeText}</b><br />
<i>{eventInfo.event.title}</i>
<b>{eventInfo.timeText}</b><br />
{eventInfo.event.extendedProps.code_session && <i>{eventInfo.event.extendedProps.code_session}</i>}
</>
)
};
const handleEventClick = (arg) => {
setp_detail_data_changed("");
if (String(props.check_user_acces_right("stagiaire", "write")) === "1") {
if (String(selected_attendee_email).length < 2) {
@ -585,6 +604,12 @@ const Module_Absence = (props) => {
else
setp_detail_comment("");
if (arg.event.extendedProps.session_id) {
setp_detail_session_id(arg.event.extendedProps.session_id);
}
else
setp_detail_session_id("");
if (arg.event.extendedProps.justified) {
if (String(arg.event.extendedProps.justified) === "true")
@ -617,11 +642,10 @@ const Module_Absence = (props) => {
const handleEventClick_from_list = (selected_row_id) => {
setp_detail_data_changed("");
var line = JSON.parse(mysy_list_event_for_map[selected_row_id]);
if (String(selected_attendee_email).length < 2) {
// alert(" Vous devez choisir un stagiaire");
// alert(res.data.message);
@ -636,6 +660,7 @@ const Module_Absence = (props) => {
setp_detail_start(line.event_start)
setp_detail_end(line.event_end)
setp_detail_event_id(line._id);
setp_detail_session_id(line.session_id)
if (line.comment) {
setp_detail_comment(line.comment);
@ -685,9 +710,11 @@ const Module_Absence = (props) => {
setp_detail_end()
setp_detail_comment("");
setp_detail_event_id("");
setp_detail_session_id("");
setp_detail_justified(false);
setp_detail_event_type("absence");
setDialog_1_open(false);
setp_detail_data_changed("");
}
@ -747,20 +774,114 @@ const Module_Absence = (props) => {
//setmyApimyApiMessage("")
})
}
const [New_Getall_Partner_Session_Reduice_Fields_result, setNew_Getall_Partner_Session_Reduice_Fields_result] = useState([]);
const [Getall_Partner_Session_Reduice_Fields_api, setGetall_Partner_Session_Reduice_Fields_api] = useState();
const [Getall_Partner_Session_Reduice_Fields_message, setGetall_Partner_Session_Reduice_Fields_message] = useState();
const [Getall_Partner_Session_Reduice_Fields_result, setGetall_Partner_Session_Reduice_Fields_result] = useState();
function Getall_Partner_Session_Reduice_Fields(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("type_session", "1");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_Session_Ftion_Reduice_Fields/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Partner_Session_Reduice_Fields res.data.status = " + res.data.status);
//console.log(" In Getall_Partner_Session_Reduice_Fields res.data.message r_class = " + res.data.message);
setGetall_Partner_Session_Reduice_Fields_api("true");
setGetall_Partner_Session_Reduice_Fields_result(res.data.message);
setRows(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_code_session = JSON.parse(x).code_session;
var local_titre = JSON.parse(x).titre;
var local_class_internal_url = JSON.parse(x).class_internal_url;
var local_date_debut = JSON.parse(x).date_debut;
var local_date_fin = JSON.parse(x).date_fin;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code_session,
"code_session": local_code_session,
"titre": local_titre,
"class_internal_url": local_class_internal_url,
"date_debut": local_date_debut,
"date_fin": local_date_fin,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"code_session": "",
"titre": "",
"class_internal_url": "",
"date_debut": "",
"date_fin": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Getall_Partner_Session_Reduice_Fields_result(new_data2);
}
else {
setGetall_Partner_Session_Reduice_Fields_api("false");
setGetall_Partner_Session_Reduice_Fields_message(res.data.message);
// alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
console.warn('Not good man :( Getall_Partner_Session_Reduice_Fields = ', error);
setGetall_Partner_Session_Reduice_Fields_api("false");
// alert(" Impossible de recuperer la liste des sessions de formation (classe)");
setdisplay_alert_mysy("1");
setalert_message(" Impossible de recuperer la liste des promotions de formation (classe)");
setalert_type("error");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
Get_Connected_User_List_Agenda_Events();
Get_Partner_Debut_Fin_Journee();
Getall_Partner_Session_Reduice_Fields();
//Getall_Training_Employee_No_Filter();
//Getall_Training_Materiel_No_Filter();
}, [attendee_email])
const [p_detail_data_changed, setp_detail_data_changed] = useState("");
const [p_detail_event_id, setp_detail_event_id] = useState();
const [p_detail_title, setp_detail_title] = useState();
const [p_detail_session_id, setp_detail_session_id] = useState("");
const [p_detail_start, setp_detail_start] = useState();
const [p_detail_end, setp_detail_end] = useState();
const [p_detail_comment, setp_detail_comment] = useState();
@ -824,6 +945,7 @@ const Module_Absence = (props) => {
form.append("event_type", p_detail_event_type);
form.append("justified", p_detail_justified);
form.append("session_id", p_detail_session_id);
@ -844,8 +966,9 @@ const Module_Absence = (props) => {
Get_List_Agenda_Events_For_Given_User(selected_attendee_email);
setp_detail_event_id();
setp_detail_title();
setp_detail_start();
setp_detail_title("");
setp_detail_start("");
setp_detail_session_id("")
setp_detail_end();
setp_detail_comment();
setp_detail_justified(false);
@ -915,6 +1038,7 @@ const Module_Absence = (props) => {
setp_detail_event_id();
setp_detail_title();
setp_detail_session_id("")
setp_detail_start();
setp_detail_end();
setp_detail_comment();
@ -1015,7 +1139,7 @@ const Module_Absence = (props) => {
style: {
overflowY: 'unset',
position: 'absolute',
top: '35rem',
//top: '35rem',
margin: "2px",
maxWidth: 'unset',
},
@ -1037,7 +1161,7 @@ const Module_Absence = (props) => {
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
{Dialog_1_message}
{Dialog_1_message}
</DialogContentText>
<nav style={{ "float": "left", "width": "100%" }}>
@ -1057,6 +1181,7 @@ const Module_Absence = (props) => {
value={p_detail_event_type}
onChange={(e) => {
setp_detail_data_changed("1");
if (String(props.write_access) === "1") {
setp_detail_event_type(e.target.value);
@ -1075,11 +1200,13 @@ const Module_Absence = (props) => {
</div>
<div className="session_caract_Dialog" style={{ width: '50%', paddingLeft:'3rem' }}>
<div className="session_caract_Dialog" style={{ width: '50%', paddingLeft: '3rem' }}>
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Justifié ? </nav>
<nav style={{ "float": "right", "width": "50%" }}
onClick={(e) => {
setp_detail_data_changed("1");
if (p_detail_justified === true)
setp_detail_justified(false);
else
@ -1096,7 +1223,8 @@ const Module_Absence = (props) => {
</nav>
<div className="session_caract_Dialog" > Titre
<div className="session_caract_Dialog" > Titre <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -1108,8 +1236,11 @@ const Module_Absence = (props) => {
value={p_detail_title}
onChange={(e) => {
if (String(props.write_access) === "1")
if (String(props.write_access) === "1") {
setp_detail_title(e.target.value);
setp_detail_data_changed("1");
}
}
}
@ -1117,15 +1248,52 @@ const Module_Absence = (props) => {
</div>
<div className="session_caract_Dialog" > Promotion <br />
{New_Getall_Partner_Session_Reduice_Fields_result && New_Getall_Partner_Session_Reduice_Fields_result.length > 0 &&
<Autocomplete
disablePortal
name="detail_classe"
id="detail_classe"
// className="disabled_style"
//className="disabled_style enable_style"
// options={New_Getall_Partner_Session_Reduice_Fields_result}
options={New_Getall_Partner_Session_Reduice_Fields_result}
fullWidth
value={New_Getall_Partner_Session_Reduice_Fields_result.filter((data) => (data)._id === String(p_detail_session_id))[0].label}
onChange={(event, value) => {
setp_detail_data_changed("1");
if (value && value._id) {
setp_detail_session_id(value._id);
} else {
setp_detail_session_id("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}
</div>
<nav style={{ "float": "left", "width": "100%" }}>
<div className="session_caract_Dialog" style={{ width: '50%' }}> Debut <br/>
<div className="session_caract_Dialog" style={{ width: '50%' }}> Debut <br />
<DatePicker
name="event_dialog_start"
id="event_dialog_start"
selected={startDate}
onChange={(date) => {
if (String(props.write_access) === "1")
if (String(props.write_access) === "1") {
return setStartDate(date);
setp_detail_data_changed("1");
}
}
}
@ -1143,15 +1311,17 @@ const Module_Absence = (props) => {
</div>
<div className="session_caract_Dialog" style={{ width: '50%' }}> Fin <br/>
<div className="session_caract_Dialog" style={{ width: '50%' }}> Fin <br />
<DatePicker
name="event_dialog_end"
id="event_dialog_end"
selected={endDate}
onChange={(date) => {
if (String(props.write_access) === "1")
if (String(props.write_access) === "1") {
setp_detail_data_changed("1");
return setendDate(date);
}
}
}
@ -1181,8 +1351,10 @@ const Module_Absence = (props) => {
value={p_detail_comment}
onChange={(e) => {
if (String(props.write_access) === "1")
if (String(props.write_access) === "1") {
setp_detail_comment(e.target.value);
setp_detail_data_changed("1");
}
}
}
multiline
@ -1200,7 +1372,13 @@ const Module_Absence = (props) => {
<DialogActions>
<div className="div_row">
{p_detail_event_id && String(p_detail_event_id) !== "" && p_detail_data_changed === "1" && <div className="div_row">
<div className="koUpdateData" style={{ "color": "orange", "textAlign": "center", marginBottom:'1rem' }}> /!\ Pensez à enregistrer les modifications</div>
</div>}
{String(props.write_access) === "1" && <div className="div_row_gauche">
{p_detail_event_id && String(p_detail_event_id) !== "" && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Mettre à jour</Button>}
{(!p_detail_event_id || String(p_detail_event_id) === "") && <Button onClick={Update_One_Agenda_Event} className="bton_enreg_dialog">Ajouter</Button>}
@ -1362,6 +1540,8 @@ const Module_Absence = (props) => {
event_type: JSON.parse(item).event_type,
justified: JSON.parse(item).justified,
event_comment: JSON.parse(item).comment,
session_id: JSON.parse(item).session_id,
code_session: JSON.parse(item).code_session,
}
))}
@ -1443,7 +1623,7 @@ const Module_Absence = (props) => {
</div>}
<style>{local_css}</style>
<style>{local_css}</style>
</div>
)
}

View File

@ -5,6 +5,7 @@ import { FcInfo } from "react-icons/fc";
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import { UserPlus, Building2, Users, UserRoundPlus } from 'lucide-react';
import Checkbox from '@mui/material/Checkbox';
import { ResponsivePie } from '@nivo/pie'
import { ResponsiveBar } from "@nivo/bar";
@ -19,6 +20,7 @@ import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import VisibilityIcon from '@mui/icons-material/Visibility';
import ArrowCircleDownIcon from '@mui/icons-material/ArrowCircleDown';
import { FcCheckmark } from "react-icons/fc";
import fr from 'date-fns/locale/fr';
import { FcDataBackup } from "react-icons/fc";
import { FcDataRecovery } from "react-icons/fc";
@ -101,7 +103,6 @@ function PaperComponent(props) {
}
const Module_Admission_Candidat_Synthese = (props) => {
const classes = useStyles();
const history = useHistory();
@ -376,6 +377,8 @@ const Module_Admission_Candidat_Synthese = (props) => {
local_trier_par.push("Prenom");
local_trier_par.push("Genre");
local_trier_par.push("Age");
local_trier_par.push("Rang");
var local_entete = [];
@ -398,7 +401,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
var local_status = JSON.parse(x).status;
var local_age = JSON.parse(x).age;
var local_session_etape_code = JSON.parse(x).session_etape_code;
var local_rang = JSON.parse(x).rang;
var local_tab_entete_exam_jury = JSON.parse(x).tab_entete_exam_jury;
@ -418,6 +421,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
"status": local_status,
"age": local_age,
"session_etape_code": local_session_etape_code,
"rang": local_rang,
};
@ -427,6 +431,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
"nom": local_nom,
"prenom": local_prenom,
"email": local_email,
"rang": local_rang,
"date_naissance": local_date_naissance,
"telephone": local_telephone,
"session_etape": local_session_etape,
@ -664,6 +669,8 @@ const Module_Admission_Candidat_Synthese = (props) => {
trierpar = "civilite";
else if (local_value === "Age")
trierpar = "age";
else if (local_value === "Rang")
trierpar = "rang";
var tmp_sorted_data = GetListeInscrit_With_Synthese_insc_result;
@ -683,7 +690,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
}
else {
console.log(" ORD ----1");
//console.log(" ORD ----1");
tmp_sorted_data.sort(function (a, b) {
var keyA = (JSON.parse(a)[trierpar]),
keyB = (JSON.parse(b)[trierpar]);
@ -766,6 +773,186 @@ const Module_Admission_Candidat_Synthese = (props) => {
}
const [Update_Candidat_Synthese_api, setUpdate_Candidat_Synthese_api] = useState();
const [Update_Candidat_Synthese_message, setUpdate_Candidat_Synthese_message] = useState();
const [Update_Candidat_Synthese_result, setUpdate_Candidat_Synthese_result] = useState();
function Update_Candidat_Synthese() {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
console.log(" tab_rang_candidat = ", tab_rang_candidat)
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", props.selected_session_admiss_id);
var tab_rang_candidat_json_str = JSON.stringify(tab_rang_candidat)
form.append("tab_rang_candidat", tab_rang_candidat_json_str);
console.log(" ## form = ", form)
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_Stagiaire_To_Admission_Session_Bulk/";
//setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Update_Candidat_Synthese res.data.status = " + res.data.status);
//console.log(" In Update_Candidat_Synthese res.data.message r_class = " + res.data.message);
//setLoading(false);
if (String(res.data.status) === String("true")) {
setUpdate_Candidat_Synthese_api("true");
setUpdate_Candidat_Synthese_result(res.data.message);
GetListeInscrit_With_Synthese();
}
else {
setUpdate_Candidat_Synthese_api("false");
setUpdate_Candidat_Synthese_message(res.data.message);
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");
}
}).catch((error) => {
//setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Update_Candidat_Synthese = ' + error);
setUpdate_Candidat_Synthese_api("false");
alert(" Impossible de mettre à jour le candidat");
})
}
var tab_rang_candidat = [];
const [Dialog_add_inscription_message, setDialog_add_inscription_message] = React.useState(false);
const [Dialog_add_inscription_open, setDialog_add_inscription_open] = React.useState(false);
function Dialog_add_inscription_handle_change_participant_session(message) {
setDialog_add_inscription_message(message);
setDialog_add_inscription_open(true);
}
const Dialog_add_inscription_handleClose_buton = () => {
setDialog_add_inscription_open(false);
};
const [New_Getall_TrainingSession_result, setNew_Getall_TrainingSession_result] = useState();
const [Getall_TrainingSession_api, setGetall_TrainingSession_api] = useState();
const [Getall_TrainingSession_message, setGetall_TrainingSession_message] = useState();
const [Getall_TrainingSession_result, setGetall_TrainingSession_result] = useState();
function Getall_TrainingSession(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("archive", "0");
form.append("type_session", "1");
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionPartner_List/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_TrainingSession res.data.status = " + res.data.status);
//console.log(" In Getall_TrainingSession res.data.message r_class = " + res.data.message);
setGetall_TrainingSession_api("true");
setGetall_TrainingSession_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_internal_url = JSON.parse(x).class_internal_url;
var local_title_session = JSON.parse(x).titre;
var local_code_session = JSON.parse(x).code_session;
var local_invoiced_statut = JSON.parse(x).invoiced_statut;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code_session,
"class_internal_url": local_internal_url,
"titre": local_title_session,
"code_session": local_code_session,
"invoiced_statut": local_invoiced_statut,
};
new_data2.push(node);
// return {"_id": " + str(local_id) + ", "label": " + local_courrier_template_ref_interne + '" , "courrier_template_ref_interne": "' + local_courrier_template_ref_interne + '", "nom_champ_technique": "' + local_nom_champ_technique + '", "nom_champ_fonctionel": "' + local_nom_champ_fonctionel + '","valide": "1" };
});
if (new_data2.length > 0)
setNew_Getall_TrainingSession_result(new_data2);
//console.log(" ### new_data2 = ", new_data2)
}
else {
setGetall_TrainingSession_api("false");
setGetall_TrainingSession_message(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Getall_TrainingSession = ', error);
setGetall_TrainingSession_api("false");
//setmyApimyApiMessage("")
})
}
const New_Type_apprenant = [
{ "id": "0", "label": "Autre" },
{ "id": "1", "label": "Salariés" },
{ "id": "2", "label": "Apprentis" },
{ "id": "3", "label": "Particuliers" },
{ "id": "4", "label": "Sans Emploi" }
]
const New_Financement = [
{
value: 'cpf',
label: 'CPF',
},
{
value: 'perso',
label: 'Fonds Propres',
},
{
value: 'entreprise',
label: 'Votre entreprise',
},
{
value: 'mixte_cpf_perso',
label: 'CPF & Fonds Propres',
},
{
value: 'modefinancement',
label: 'modefinancement',
},
{
value: 'autre',
label: 'Autre',
},
];
const [p_dialog_session_id, setp_dialog_session_id] = useState("");
const [p_dialog_type_apprenant, setp_dialog_type_apprenant] = useState("");
const [p_dialog_financement, setp_dialog_financement] = useState("");
const [p_dialog_client_rattachement_id, setp_dialog_client_rattachement_id] = useState("");
return (
<div className="module_admission_candidat_document" style={{ margin: '10px' }}>
@ -784,6 +971,145 @@ const Module_Admission_Candidat_Synthese = (props) => {
}
{/*** FIN Affichage des messages d'alerte*/}
{/*** Dialog pour reinscrire un apprenant à une session */}
<Dialog
open={Dialog_add_inscription_open}
//onClose={Dialog_add_inscription_handleClose}
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
position: 'absolute',
top: '7rem',
margin: "2px",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title" > Inscrire </DialogTitle>
<DialogContent className="DialogContent_width">
{New_Getall_TrainingSession_result && New_Getall_TrainingSession_result.length > 0 && <div className="session_caract_Dialog"> <b>Promotion</b>
<Autocomplete
disablePortal
id="combo-box-demo"
className="session_caract_Dialog"
fullWidth
options={New_Getall_TrainingSession_result.filter((data) => (data).invoiced_statut !== "2")}
onChange={(event, value) => {
if (value && value._id) {
setp_dialog_session_id(value._id);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
<div className="session_caract_Dialog" > <b> Type apprenant </b>
<Autocomplete
disablePortal
id="combo-box-demo"
className="session_caract_Dialog"
fullWidth
options={New_Type_apprenant}
onChange={(event, value) => {
if (value && value.id) {
setp_dialog_type_apprenant(value.id);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>
<div className="session_caract_Dialog" > <b> Mode Financement </b>
<Autocomplete
disablePortal
id="combo-box-demo"
className="session_caract_Dialog"
fullWidth
options={New_Financement}
onChange={(event, value) => {
if (value && value.value) {
setp_dialog_financement(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>
<div className="div_row" > &nbsp;
</div>
</DialogContent>
<DialogActions>
<IconButton
autoFocus
onClick={Dialog_add_inscription_handleClose_buton}
color="primary"
className={classes.customizedButton}
>
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
<div className="div_row_gauche">
<Button className="bton_enreg_dialog"> Inscrire</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_add_inscription_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
</div>
</div>
</DialogActions>
</Dialog>
{/*** Fin Dialog pour reinscrire un apprenant à une session */}
<h3 style={{ fontFamily: 'DM Sans', fontSize: '18px', textAlign: 'center' }}> Synthèse </h3>
@ -820,7 +1146,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
onChange={(event, value) => {
console.log("## event = ", event.target.innerText, "-- ")
// console.log("## event = ", event.target.innerText, "-- ")
settrier_par(event.target.innerText)
trier_v2(event.target.innerText);
@ -846,6 +1172,7 @@ const Module_Admission_Candidat_Synthese = (props) => {
<thead>
<tr >
<th style={{ minWidth: '10rem' }}>Validation</th>
<th style={{ minWidth: '7rem' }}>Rang</th>
<th style={{ textAlign: 'left' }}>Civ</th>
<th style={{ textAlign: 'center' }}>Nom</th>
@ -853,11 +1180,10 @@ const Module_Admission_Candidat_Synthese = (props) => {
<th style={{ textAlign: 'center' }}>Email</th>
<th style={{ textAlign: 'center', }}>Dossier</th>
{New_tab_entete_exam_jury && New_tab_entete_exam_jury.length > 0 && New_tab_entete_exam_jury.map((item) => (
<th style={{ textAlign: 'center' }}> {item} </th>
))}
<th style={{ textAlign: 'left' }}>Inscrire</th>
</tr>
</thead>
@ -893,6 +1219,38 @@ const Module_Admission_Candidat_Synthese = (props) => {
</td>
<td style={{ textAlign: 'center', width: '7rem' }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="rang"
id="rang"
type="number"
InputProps={{ inputProps: { min: 1, max: 9999999 } }}
fullWidth
value={JSON.parse(item).rang}
onChange={(e) => {
var local_node = {}
local_node["_id"] = String(JSON.parse(item)._id)
local_node["rang"] = e.target.value
var found = ""
tab_rang_candidat.forEach(user => {
if (user._id === String(JSON.parse(item)._id)) {
user.rang = e.target.value; // Update age for user with id 2
found = "1"
}
});
if (found !== "1") {
tab_rang_candidat.push(local_node);
}
// console.log(" tab_rang_candidat = ", tab_rang_candidat)
}}
/>
</td>
{New_civilite && New_civilite.length > 0 && <td style={{ textAlign: 'left' }}>{New_civilite.filter((data) => (data).id === String(JSON.parse(item).civilite))[0].label} </td>}
<td style={{ textAlign: 'center' }}>{JSON.parse(item).nom}</td>
@ -921,6 +1279,12 @@ const Module_Admission_Candidat_Synthese = (props) => {
))}
<td style={{ textAlign: 'center', cursor: 'pointer' }} onClick={(e) => {
Getall_TrainingSession();
setDialog_add_inscription_open(true);
}}> <Users size={14} /></td>
</tr>
))}
@ -928,9 +1292,20 @@ const Module_Admission_Candidat_Synthese = (props) => {
</table>
</div>
<div className="div_row" style={{ textAlign: 'right' }}>
<Button onClick={(e) => {
Update_Candidat_Synthese();
}}
id='maj' name='maj'
style={{ maxWidth: '15rem', fontFamily: 'DM Sans' }}> M.A.J &nbsp;
<FcCheckmark style={{ color: '#107758', fontSize: '16px' }} />
</Button>
<Button onClick={exportJsonToExcel}
id='export_excel' name='export_excel'
style={{ maxWidth: '15rem', fontFamily:'DM Sans' }}>Export Excel &nbsp;
style={{ maxWidth: '15rem', fontFamily: 'DM Sans' }}>Export Excel &nbsp;
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button>

File diff suppressed because it is too large Load Diff

View File

@ -717,8 +717,8 @@ const Module_Ent_Internal_Email_Management = (props) => {
if (String(res.data.status) === "true") {
//console.log(" In Get_Given_Email_Data res.data.status = " + res.data.status);
console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
console.log(" In Get_Given_Email_Data res.data.message len = " + String(res.data.message).length);
// console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
// console.log(" In Get_Given_Email_Data res.data.message len = " + String(res.data.message).length);
setLoading(false);
setGet_Given_Email_Data_api("true");

View File

@ -46,7 +46,7 @@ import ToggleSwitch from "./ToggleSwitch";
import { FcSpeaker } from "react-icons/fc";
import Autocomplete from '@mui/material/Autocomplete';
import { FcOpenedFolder } from "react-icons/fc";
import Module_Absence from "./Module_Absence";
import Module_ENT_Absence from "./Module_ENT_Absence";
import { RiMoreFill } from "react-icons/ri";
import fr from 'date-fns/locale/fr';
import { registerLocale } from 'react-datepicker';
@ -115,7 +115,7 @@ const useStyles = makeStyles((theme) => ({
color: 'gray',
},
}));
const Module_Ent_Mes_Formations = (props) => {
registerLocale('fr', fr);
const classes = useStyles();
@ -398,8 +398,6 @@ const Module_Ent_Mes_Formations = (props) => {
}
if (stored_type_connexion_cookie !== "tuteur") {
Get_List_Ent_Formation(props.apprenant_id);
} else {
@ -782,8 +780,26 @@ const Module_Ent_Mes_Formations = (props) => {
}
function submenu_absences() {
setsubmenu("absences");
submenu_color_management("absences");
if (document.getElementById('myRef_detail_subelement')) {
var divh = document.getElementById('myRef_detail_subelement').offsetTop + 200;
if (divh < 1500) {
divh = 1500
}
window.scrollTo({
top: divh,
behavior: "smooth",
});
}
}
function submenu_color_management(current_menu) {
const list_sous_menu = ['detail', 'planning', 'notes', 'piece_jointe', ""]
const list_sous_menu = ['detail', 'planning', 'notes', 'piece_jointe', "", "absences"]
for (let i = 0; i < list_sous_menu.length; i++) {
@ -2168,12 +2184,12 @@ const Module_Ent_Mes_Formations = (props) => {
// Gestion des cellule a distance ou presentiel
'& .cell--distantiel': {
backgroundColor: '#AFE1AF',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .cell--presentiel': {
backgroundColor: '#AFE1AF',
color: "#0a2a4d",
color: "#0a2a4d",
},
@ -2185,11 +2201,11 @@ const Module_Ent_Mes_Formations = (props) => {
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: "#0a2a4d",
color: "#0a2a4d",
},
@ -2406,6 +2422,7 @@ const Module_Ent_Mes_Formations = (props) => {
<Button variant="outlined" onClick={submenu_planning} className="detail_class_submenu" id='planning' name='planning'>Planning </Button>
<Button variant="outlined" onClick={submenu_notes} className="detail_class_submenu" id='notes' name='notes'>Notes </Button>
<Button variant="outlined" onClick={submenu_piece_jointe} className="detail_class_submenu" id='piece_jointe' name='contrat'>Documents </Button>
<Button variant="outlined" onClick={submenu_absences} className="detail_class_submenu" id='piece_jointe' name='contrat'>Absences </Button>
</div>
}
{selected_id && String(selected_id).length > 0 && <div className="div_row">
@ -2476,7 +2493,7 @@ const Module_Ent_Mes_Formations = (props) => {
height={550}
locales={allLocales}
locale={'fr'}
selectable
//events={events}
events={Getall_Sequence_Of_Session_result_planning_view}
@ -2496,7 +2513,7 @@ const Module_Ent_Mes_Formations = (props) => {
scrollTime='08:00'
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
eventClick={handleEventClick}
editable={false}
@ -2537,15 +2554,15 @@ const Module_Ent_Mes_Formations = (props) => {
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
color: "#0a2a4d",
color: "#0a2a4d",
},
}}
@ -2676,15 +2693,15 @@ const Module_Ent_Mes_Formations = (props) => {
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: "#0a2a4d",
color: "#0a2a4d",
},
'& .line--statut--selected': {
backgroundColor: '#e9f7f1',
color: "#0a2a4d",
color: "#0a2a4d",
},
}}
@ -2808,6 +2825,16 @@ const Module_Ent_Mes_Formations = (props) => {
</div>}
{String(submenu) === "absences" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
<Module_ENT_Absence attendee_email={props.email_apprenant}
apprenant_id={props.apprenant_id}
class_id={selected_id} />
</div>}
<style>{local_css}</style>
</div >
);

View File

@ -1010,8 +1010,6 @@ const Module_Ent_Mon_Planning = (props) => {
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
/>
</div>
@ -1035,6 +1033,6 @@ export default Module_Ent_Mon_Planning;
const local_css = `
.react-datepicker-wrapper{
width: 100%;
}
`;

View File

@ -715,8 +715,8 @@ const Module_Internal_Email_Management = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === "true") {
console.log(" In Get_Given_Email_Data res.data.status = " + res.data.status);
console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
// console.log(" In Get_Given_Email_Data res.data.status = " + res.data.status);
// console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
//console.log(" In Get_Given_Email_Data res.data.message len = " + String(res.data.message).length);
setLoading(false);

View File

@ -717,8 +717,8 @@ const Module_Intranet_Client_Internal_Email_Management = (props) => {
if (String(res.data.status) === "true") {
//console.log(" In Get_Given_Email_Data res.data.status = " + res.data.status);
console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
console.log(" In Get_Given_Email_Data res.data.message len = " + String(res.data.message).length);
// console.log(" In Get_Given_Email_Data res.data.message r_class = " + res.data.message);
// console.log(" In Get_Given_Email_Data res.data.message len = " + String(res.data.message).length);
setLoading(false);
setGet_Given_Email_Data_api("true");

File diff suppressed because it is too large Load Diff

View File

@ -4099,7 +4099,7 @@ const Session_Admission_FI = (props) => {
}
{/*** FIN Affichage des messages d'alerte*/}
<h3 style={{ fontFamily: 'DM Sans' }}> Les sessions d'admission </h3>

View File

@ -603,8 +603,10 @@ function Student_Account_Ent() {
<Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
setapprenant_id={setapprenant_id}
email_apprenant={username}
/>}
{String(menu) === String("mon_planning") &&