04/11/2025 - 12h

branche_01062025
Cherif 2025-11-04 12:22:31 +01:00
parent 7288b00f5a
commit 283aac8b6f
32 changed files with 1905 additions and 1508 deletions

View File

@ -80,6 +80,7 @@ import New_Test_Header_Footer_2025 from "./pages/new_p_test_header_footer_2025";
*/
import img_loading_spin from "./mysy_img/mysy_spin_loading.gif";
function App() {
const New_Marktplace_2025 = lazy(() => import("./pages/new_p_marketplace_2025"));
@ -94,8 +95,8 @@ function App() {
const New_Tarif_2025 = lazy(() => import("./pages/new_p_tarif_2025"));
const New_Sign_Up_2025 = lazy(() => import("./pages/new_p_sign_up_2025"));
const New_Sign_In_2025 = lazy(() => import("./pages/new_p_sign_in_2025"));
const Student_Account = lazy(() => import("./pages/student_account"));
const Student_Planning = lazy(() => import("./pages/mon_ent_student_planning"));
const Student_Account_Ent = lazy(() => import("./pages/student_account_ent"));
const Account = lazy(() => import("./pages/account"));
@ -365,8 +366,7 @@ function App() {
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
<Route path="/mysy-student-account" exact component={Student_Account} />
<Route path="/mysy-student-planning" exact component={Student_Planning} />
<Route path="/mysy-student-ent/:local_props_apprenant_id/:local_props_menu" exact component={Student_Account_Ent} />
{/* Fin Migration */}

View File

@ -4358,7 +4358,6 @@ const AddClassManual = (props) => {
const [selected_ue_is_noted, setselected_ue_is_noted] = useState("");
const [selected_ue_pres_dist_hyp, setselected_ue_pres_dist_hyp] = useState("");
const [selected_ue_coefficient, setselected_ue_coefficient] = useState("");
const [selected_ue_seuil_validation, setselected_ue_seuil_validation] = useState("");
@ -7479,7 +7478,7 @@ const AddClassManual = (props) => {
</div>
</div>}
{submenu && String(submenu) === "admission" && <div> admission </div>}
{submenu && String(submenu) === "admission" && <div> </div>}
{submenu && String(submenu) === "note_evaluation" && <div>
@ -7661,7 +7660,7 @@ const AddClassManual = (props) => {
</div>
</div>
{/*String(props.ispending) === String("0") && <div className="parter_div_filtrer_row">
{String(props.ispending) === String("0") && <div className="parter_div_filtrer_row" style={{marginTop:'2rem', marginBottom:'3rem'}}>
{(String(datamodification) === String("1") || String(editor_tochange) === String("1")) && <div className="parter_div_filtrer_row_gauche" >
@ -7669,66 +7668,13 @@ const AddClassManual = (props) => {
</div>
}
{String(datamodification) !== String("1") && String(editor_tochange) !== String("1") && String(props.mytrainingclass.ref) !== "" &&
<div className="parter_div_filtrer_row_droite" >
<Popup
trigger={
<Button variant="contained" startIcon={<DeleteIcon />} className="bton_suppr2"> SUPPRIMER LA FORMATION </Button>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, la formation sera <i><font color="red"> définitivement supprimée</font></i>. <br />
Avant, assurez-vous de n'avoir aucune session rattachée à la formation.
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
DeleteClass(event);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
onClick={() => {
console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</div>
}
{(String(datamodification) === String("1") || String(editor_tochange) === String("1")) && String(props.mytrainingclass.ref) !== "" && <div className="parter_div_filtrer_row_droite" >
<Button variant="contained" onClick={UndoModif} startIcon={<IoArrowUndoCircle />} className="bton_suppr2"> ANNULER LES MODIFICATIONS </Button>
</div>}
</div>*/}
</div>}

View File

@ -10298,7 +10298,7 @@ registerLocale('fr', fr);
{String(submenu) === "droit_acces" && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droits d'accès système </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Droits d'accès système </nav>
<div className="session_data" style={{ "background": warning_bg_color }}>

View File

@ -7989,7 +7989,9 @@ const Conseil_Classe = (props) => {
}
}}
renderInput={(params) => <TextField {...params} label="" />
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}

File diff suppressed because it is too large Load Diff

View File

@ -12524,7 +12524,7 @@ const DisplayPartnerSession = (props) => {
|| local_type_document === "CONVENTION_STAGIAIRE_INDIVIDUELLE_PDF"
|| local_type_document === "CONVENTION_STAGIAIRE_ENTREPRISE_MAIL"
|| local_type_document === "CONVENTION_STAGIAIRE_ENTREPRISE_PDF") {
setselected_convention_id(mylocaltraining[local_type_document]);
}
@ -25979,6 +25979,8 @@ const DisplayPartnerSession = (props) => {
fullWidth
options={New_Option_Inscription}
onChange={(event, value) => {
setselected_convocation_id("");
setselected_convention_id("");
if (value && value.value) {
if (String(value.value) === "confirmation" || String(value.value) === "impression" || String(value.value) === "annule inscription" ||
String(value.value) === "facturer" || String(value.value) === "emarg_qr_code"
@ -25987,6 +25989,7 @@ const DisplayPartnerSession = (props) => {
|| String(value.value) === "convention_entreprise"
|| String(value.value) === "convention_individuelle") {
setactionmass_insc_val(value.value);
}
else {
setactionmass_insc_val("");
@ -26012,6 +26015,9 @@ const DisplayPartnerSession = (props) => {
String(actionmass_insc_val) === "facturer")
&& <nav className='block_en_mass_bton_action'>
<Button className="bton_enreg" style={{ "width": "90%" }} onClick={(event) => {
setselected_convocation_id("");
setselected_convention_id("");
actionmass_insc_Traitemet();
setactionmass_insc_val("");

View File

@ -810,13 +810,13 @@ const DisplayPartnerUnite_Enseignement = (props) => {
if (local_ue.ects) {
setp_detail_ects(local_ue.ects);
} else {
setp_detail_ects("");
setp_detail_ects("1");
}
if (local_ue.seuil_validation) {
setp_detail_seuil_validation(local_ue.seuil_validation);
} else {
setp_detail_seuil_validation("");
setp_detail_seuil_validation("1");
}
@ -986,6 +986,20 @@ const DisplayPartnerUnite_Enseignement = (props) => {
form.append("ects", p_detail_ects);
form.append("seuil_validation", p_detail_seuil_validation);
if (!p_detail_ects || p_detail_ects == "") {
setdisplay_alert_mysy("1");
setalert_message("Le champs 'ECTS' est invalide ");
setalert_type("error");
return;
}
if (!p_detail_seuil_validation || p_detail_seuil_validation == "") {
setdisplay_alert_mysy("1");
setalert_message("Le champs 'Seuil Validation' est invalide ");
setalert_type("error");
return;
}
form.append("vh_cm", p_detail_cours_cm);
form.append("vh_tp", p_detail_cours_tp);
form.append("vh_tpg", p_detail_cours_tpg);
@ -1200,8 +1214,8 @@ const DisplayPartnerUnite_Enseignement = (props) => {
const [p_detail_duration, setp_detail_duration] = useState("");
const [p_detail_duration_unite, setp_detail_duration_unite] = useState("");
const [p_detail_ects, setp_detail_ects] = useState("");
const [p_detail_seuil_validation, setp_detail_seuil_validation] = useState("");
const [p_detail_ects, setp_detail_ects] = useState("1");
const [p_detail_seuil_validation, setp_detail_seuil_validation] = useState("1");
const [p_detail_tab_competence, setp_detail_tab_competence] = useState([]);
const [p_detail_note_ue_calculation_rule_id, setp_detail_note_ue_calculation_rule_id] = useState([]);
@ -2841,7 +2855,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
{ue_data_edit_mode && String(ue_data_edit_mode) === "1" &&
New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract">Domaine <br />
New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract">Domaine Ftion.<br />
<Autocomplete
disablePortal
@ -2871,7 +2885,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
</div>}
{ue_data_edit_mode && String(ue_data_edit_mode) !== "1" &&
New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract">Domaine <br />
New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract">Domaine Ftion. <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2904,14 +2918,11 @@ const DisplayPartnerUnite_Enseignement = (props) => {
value={val}
options={New_Getall_Partner_Competence_List_result}
className="disabled_style disabled_style_no_border"
renderInput={(params) => (
<TextField
{...params}
label=""
placeholder="Ajout"
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
)}
/>
}
/>
@ -3079,7 +3090,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
</div>}
{ue_data_edit_mode && String(ue_data_edit_mode) === "1" && <div>
<div className="session_caract"> ECTS <br />
<div className="session_caract"> <b>ECTS </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -3104,7 +3115,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
</div>}
{ue_data_edit_mode && String(ue_data_edit_mode) !== "1" && <div>
<div className="session_caract"> Seuil Validation <br />
<div className="session_caract"> <b> Seuil Validation </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -4057,7 +4068,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
/>
</div>
{New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract"> Domaine <br />
{New_Get_List_Domaines_result && New_Get_List_Domaines_result.length > 0 && <div className="session_caract"> Domaine Ftion.<br />
<Autocomplete
disablePortal
@ -4165,7 +4176,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
/>
</div>
<div className="session_caract"> ECTS <br />
<div className="session_caract"> <b> ECTS </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -4187,7 +4198,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
/>
</div>
<div className="session_caract"> Seuil Validation <br />
<div className="session_caract"> <b> Seuil Validation </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required

View File

@ -3,7 +3,7 @@ import './ENT_Student_Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
import Header_User from '../../img_new_design_2025/header_user.png';
import Dialog from '@mui/material/Dialog';
@ -76,7 +76,7 @@ const ENT_Student_Header = () => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
@ -106,8 +106,9 @@ const ENT_Student_Header = () => {
const handleMyAccount = () => {
const stored_apprenant_id = getCookie('tokenmysychapprenant');
setAccountMenu(null);
history.push("/mysy-user-account")
history.push("/mysy-student-ent/" + String(stored_apprenant_id) + "/apprenant_account_data")
};
const handleAccountConnexion = () => {
@ -270,18 +271,15 @@ const ENT_Student_Header = () => {
<header className="header_new_2025">
<div className="header-content">
<div className="logo-menu">
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
// e.preventDefault();
history.push("/");
}} />
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'default' }} />
<nav className="menu-list">
<a href="/mysy-student-account" className="menu-link">Formations</a>
<a href="/mysy-student-planning" className="menu-link">Planning</a>
<a href="/Recherche-Article-formation" className="menu-link">Notes</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_formations"} className="menu-link">Formations</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mon_planning"} className="menu-link">Planning</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_notes"} className="menu-link">Notes</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Documents</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_documents"} className="menu-link">Documents</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Emails</a>
</nav>
@ -290,9 +288,9 @@ const ENT_Student_Header = () => {
<div className="cta-login">
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-primary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
{String(someoneconnected) === String("1") &&
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/apprenant_account_data"} className="btn btn-primary">Mon compte</a>
}
</div>
<div className="separator hide_on_mobile"></div>

View File

@ -782,10 +782,10 @@ registerLocale('fr', fr);
&nbsp;
</div>
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
<div style={{ "marginLeft": "auto", "marginRight": "auto" }}>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', }}>
<Button variant="contained" className="bton_enreg" onClick={(e) => {
setDialog_SIGN_VALIDATION_open(true);
@ -794,7 +794,7 @@ registerLocale('fr', fr);
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<div className="div_row_droite" style={{ "textAlign": 'right',}} >
<Button variant="contained" className="bton_annule" onClick={Dialog_Message_handleClose_buton}>Annuler
</Button>
</div>

View File

@ -934,7 +934,7 @@ function Emarge_QR_Code() {
<Button variant="contained" className="bton_image_class" onClick={(e) => {
setDialog_SIGN_MANUSCRITE_open(true);
}}>Signer manuellement
}}>Signer manuellement
</Button>
@ -951,10 +951,10 @@ function Emarge_QR_Code() {
&nbsp;
</div>
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
<div style={{ width: "100%", "marginLeft": "auto", "marginRight": "auto" }}>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<div className="div_row_gauche" style={{ "textAlign": 'left' }}>
<Popup
trigger={
@ -1013,7 +1013,7 @@ function Emarge_QR_Code() {
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<div className="div_row_droite" style={{ "textAlign": 'right', }} >
<Button variant="contained" className="bton_annule" onClick={(e) => {
Signature_E_Document(0);
}}>J'etais Absent

View File

@ -1314,7 +1314,7 @@ registerLocale('fr', fr);
Get_Partner_Object_Specific_Fields("ressource_humaine");
Getall_Survey_formateur_evaluation_By_Session();
// Getall_Survey_formateur_evaluation_By_Session();
window.scrollTo({
top: 0,
@ -1366,6 +1366,7 @@ registerLocale('fr', fr);
Getall_Employee_Affectation(employe_id);
Getall_Employee_Acces_Right(employe_id);
Getall_Employee_Contrat(employe_id);
Getall_Survey_formateur_evaluation_By_Session();
Get_Partner_Purchase_Prices();
Get_List_Of_All_PJ(employe_id);
@ -8876,7 +8877,7 @@ registerLocale('fr', fr);
{String(submenu) === "detail_employe" && String(add_One_Employee) !== "1" && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Employé </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Détail Employé </nav>
<div className="div_row" style={{ "border": "None" }}>
<div className="div_row_gauche">
@ -10512,7 +10513,7 @@ registerLocale('fr', fr);
{String(submenu) === "affectation" && <div className="div_row" style={{ paddingRight: '10px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Liste Affectations </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Liste Affectations </nav>
<div className="session_data">
<div style={{ "border": "None" }}>
@ -10604,7 +10605,7 @@ registerLocale('fr', fr);
<nav ref={myRef_affectation} id="myRef_affectation"> &nbsp; </nav>
{String(display_affectation) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Affectation </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Détail Affectation </nav>
<div className="session_data" >
<div className="session_caract">Poste Occupé <br />
@ -10863,7 +10864,7 @@ registerLocale('fr', fr);
<nav ref={myRef_new_affectation} id="myRef_new_affectation"> &nbsp; </nav>
{String(Add_new_affectation) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Nouvelle affectation </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Nouvelle affectation </nav>
<div className="session_data" >
<div>
<div className="session_caract">Poste Occupé <br />
@ -11039,7 +11040,7 @@ registerLocale('fr', fr);
{String(submenu) === "droit_acces" && <div className="div_row">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Droits d'accès système </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Droits d'accès système </nav>
<div className="session_data" style={{ "background": warning_bg_color }}>
@ -11257,7 +11258,7 @@ registerLocale('fr', fr);
<Tooltip className="tooltip_css" id="scope" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="scope" data-tooltip-html="Par exemple l'utilisateur ne peut voir que les données liées à la formation 'f01' ">
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Périmetre d'accès &nbsp; <FcInfo /> </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Périmetre d'accès &nbsp; <FcInfo /> </nav>
</a>
{New_GetCurrentPartnerClass_result && New_GetCurrentPartnerClass_result.length > 0 && <div className="session_caract" > <b>Liste formations </b> <br />
@ -11361,7 +11362,7 @@ registerLocale('fr', fr);
</div>}
{String(submenu) === "contrat" && <div className="div_row" style={{ "paddingRight": "10px" }} ref={myRef_contrat}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail contrat(s) </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Détail contrat(s) </nav>
&nbsp;
<div style={{ height: 550, width: '100%', paddingRight: '1px', "marginLeft": "10px", "marginRight": "10px", }}>
@ -11466,7 +11467,7 @@ registerLocale('fr', fr);
{String(submenu) === "piece_jointe" && <div className="div_row" style={{ paddingRight: '10px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les pièces jointes </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Les pièces jointes </nav>
<div className="session_data">
<br />
@ -11613,7 +11614,7 @@ registerLocale('fr', fr);
{String(submenu) === "competence" && <div className="div_row" style={{ pInitialiseraddingRight: '10px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les Compétences </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Les Compétences </nav>
<div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}>
<br />
@ -11683,7 +11684,7 @@ registerLocale('fr', fr);
{String(submenu) === "evaluation" && <div className="div_row" style={{ paddingRight: '10px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les evaluations </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Les evaluations </nav>
@ -11903,7 +11904,7 @@ registerLocale('fr', fr);
<div className="titre1"> {p_detail_prenom} &nbsp; {p_detail_nom} : Suivi pédagoqigue </div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> </nav>
<div className="session_data" ref={myRef_head} id="myRef_head">
<div style={{ "border": "None" }}>
@ -12051,7 +12052,7 @@ registerLocale('fr', fr);
{String(add_one_suivi_ped) === "1" && String(display_given_suivi_ped) !== "1" && <div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Nouveau suivi pédagogique</nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Nouveau suivi pédagogique</nav>
<div className="session_caract"> <b>Sujet </b> <br />
@ -12191,7 +12192,7 @@ registerLocale('fr', fr);
</div>}
{String(add_one_suivi_ped) !== "1" && String(display_given_suivi_ped) === "1" && <div>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail suivi pédagogique</nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Détail suivi pédagogique</nav>
{String(given_suivi_ped_data_edit_mode) !== "1" && <div className="div_row" style={{ "border": "None" }}>
@ -12550,7 +12551,7 @@ registerLocale('fr', fr);
{String(submenu) === "statistiques" && <div className="div_row" style={{ paddingRight: '10px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Les statistiques </nav>
<nav style={{ "border": "None", "fontSize": "20px", "fontWeight": "600", fontFamily:'DM Sans' }}> Les statistiques </nav>

View File

@ -1920,8 +1920,10 @@ const Equipe_Team = (props) => {
}}
renderInput={(params) => <TextField {...params} label="Choisir " />
}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}

View File

@ -5710,8 +5710,10 @@ const Jury = (props) => {
}}
renderInput={(params) => <TextField {...params} label="Choisir " />
}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}

View File

@ -151,9 +151,9 @@ function Module_Connexion_Ent_Student() {
history.push("/Display-Detail-formation/" + objid);
}
else {
// Redirection par defaut vers la compte de l'apprenant - ENT
// Redirection par defaut vers les formations de l'apprenant - ENT
history.push({
pathname: "/mysy-student-account",
pathname: "/mysy-student-ent/"+String(result['apprenant_id'])+"/mes_formations",
state: {
firstconnexion: String(result['firstconnexion']),
apprenant_id: String(result['apprenant_id'])

View File

@ -390,7 +390,7 @@ registerLocale('fr', fr);
setLoading(true);
axios.post(myurl, form).then(res => {
// console.log(" In Getall_Sequence_Of_Session res.data.status = " + res.data.status);
console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
@ -2355,7 +2355,7 @@ registerLocale('fr', fr);
</div>
}
{
String(submenu) === "notes" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Notes </nav>
@ -2527,74 +2527,7 @@ registerLocale('fr', fr);
</div>
{/* <div className="div_row" style={{ "padding": "5px" }}>
<div style={{ "fontSize": "12px" }}>
<label htmlFor="upload-photo">
<input
style={{ display: "none" }}
id="upload-photo"
name="upload-photo"
type="file"
onChange={sessions_file_change_1}
/>
<Fab
color="secondary"
size="small"
component="span"
aria-label="add"
variant="extended"
>
<IoMdAddCircle /> <nav style={{ "fontSize": "12px" }}> Ajouter un fichier </nav>
</Fab>
</label>
</div>
{file_1_name && file_1_name.name &&
<nav style={{ "fontSize": "12px" }}>
<div className="session_caract">Nom du fichier <br />
<TextField
name="file_to_download_type_name"
id="file_to_download_type_name"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style enable_style"
value={p_detail_one_file_to_download_type_name}
onChange={(e) => {
setp_detail_one_file_to_download_type_name(e.target.value);
}}
/>
</div>
<br />
<br />
Fichier : {file_1_name.name} <br /> <font style={{ "cursor": "pointer" }}
onClick={Delete_file_1_name}> Supprimer <IoIosRemoveCircleOutline /> </font>
</nav>}
{Record_All_PJ_api && String(Record_All_PJ_api) === "true" && <div className="okUpdateData"> Pièce jointe enregistrée </div>}
{Record_All_PJ_api && String(Record_All_PJ_api) === "false" && <div className="koUpdateData"> {Record_All_PJ_message} </div>}
</div>*/}
{/*file_1_name && file_1_name.name && <div className="div_row">
<div className="div_row_gauche">
<Button variant="contained" onClick={Record_All_PJ}
startIcon={<AiTwotoneSave />} className="bton_enreg">ENREGISTRER LA PIECE</Button>
</div>
</div>*/}
{Get_List_Of_All_PJ_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
@ -2603,55 +2536,7 @@ registerLocale('fr', fr);
{Get_List_Of_All_PJ_result && Get_List_Of_All_PJ_result.map((val) => (
<div className="div_row_list_pj" style={{ fontFamily: "DM Sans", fontSize: '14px' }}>
<nav style={{ "color": "green", "cursor": "pointer" }} onClick={Download_one_attached_document} name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}> Télécharger &nbsp;<i> {(JSON.parse(val).file_business_object)}</i> </nav> <br />
{/*<Popup
trigger={
<nav style={{ "color": "red", "cursor": "pointer" }} > Supprimer</nav>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, la pièce jointe sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Delete_one_attached_document(event);
close();
}}
name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}
> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>*/}
</div>
))}

View File

@ -105,7 +105,7 @@ const useStyles = makeStyles((theme) => ({
}));
const Module_Ent_Mes_Notes = (props) => {
registerLocale('fr', fr);
registerLocale('fr', fr);
const classes = useStyles();
const history = useHistory();
@ -164,152 +164,209 @@ registerLocale('fr', fr);
</div>
);
}
const columns_apprenant_inscriptions = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
{ field: 'session_id', headerName: 'session_id', hide: true, Width: 1 },
{ field: 'session_code', headerName: 'Code Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'class_title', headerName: 'Titre Formation', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, Width: 1 },
{
field: 'status', headerName: 'Statut', hide: false, flex: 1, minWidth: 50, maxWidth: 70,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Pré.";
else if (String(params.value) === "1")
return "Ins";
else if (String(params.value) === "-1")
return "Ann";
else if (String(params.value) === "2")
return "Enc";
else
return "???";
}
},
const columns_notes = [
{ field: '_id', headerName: '_id', hide: true, editable: false, Width: 0 },
{ field: 'evaluation_id', headerName: 'evaluation_id', hide: true, editable: false, Width: 0 },
{ field: 'inscription_id', headerName: 'inscription_id', hide: true, editable: false, Width: 0 },
{ field: 'note_evaluation_id', headerName: 'session_id', hide: true, editable: false, Width: 0 },
{ field: 'client_rattachement_id', headerName: 'client__id', hide: true, Width: 1 },
{ field: 'client_rattachement_nom', headerName: 'Client', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'date_debut', headerName: 'Début', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'date_fin', headerName: 'Fin', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'presentiel', headerName: 'Présentiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
{ field: 'distanciel', headerName: 'Distantiel', hide: false, flex: 1, minWidth: 50, maxWidth: 70 },
{ field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: false, flex: 1, minWidth: 100, },
{ field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: false, flex: 1, minWidth: 100, },
{ field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
{ field: 'id', headerName: 'id', hide: true, Width: 0 },
{ field: 'class_eu_id', headerName: 'class_eu_id', hide: true, Width: 0 },
{ field: 'type_eval_id', headerName: 'type_eval_id', hide: true, Width: 0 },
{
field: "Detail", headerName: 'Voir détail',
renderCell: (cellValues) => {
return (
<Button
onClick={(event) => {
//handleClick_edit_apprenant_From_Line(cellValues.row.id);
}}
>
<FcViewDetails />
</Button>
);
}
},
{
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
<Popup
trigger={<Button
>
<CiTrash />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_delete_Apprenant(event, cellValues);
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
);
}
},
{ field: 'class_ue_code', headerName: 'Code UE', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'class_ue_titre', headerName: 'Titre UE', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note_evaluation_code', headerName: 'Evaluation', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'eval_date_heure_debut', headerName: 'Debut Eval', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'eval_date_heure_fin', headerName: 'Fin Eval', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'note', headerName: 'Note', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
]
const [isLoading, setLoading] = useState();
const [p_filtre1, setp_filtre1] = useState("");
const [p_filtre1_value, setp_filtre1_value] = useState("");
const [p_filtre2, setp_filtre2] = useState("");
const [p_filtre2_value, setp_filtre2_value] = useState("");
const [p_filtre3, setp_filtre3] = useState("");
const [p_filtre3_value, setp_filtre3_value] = useState("");
const [p_filtre4, setp_filtre4] = useState("");
const [p_filtre4_value, setp_filtre4_value] = useState("");
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
const [isLoading, setLoading] = useState();
const [p_filtre1, setp_filtre1] = useState("");
const [p_filtre1_value, setp_filtre1_value] = useState("");
const [p_filtre2, setp_filtre2] = useState("");
const [p_filtre2_value, setp_filtre2_value] = useState("");
const [p_filtre3, setp_filtre3] = useState("");
const [p_filtre3_value, setp_filtre3_value] = useState("");
const [p_filtre4, setp_filtre4] = useState("");
const [p_filtre4_value, setp_filtre4_value] = useState("");
const [Get_All_Notes_Of_Evaluations_api, setGet_All_Notes_Of_Evaluations_api] = useState();
const [Get_All_Notes_Of_Evaluations_message, setGet_All_Notes_Of_Evaluations_message] = useState();
const [Get_All_Notes_Of_Evaluations_result, setGet_All_Notes_Of_Evaluations_result] = useState([]);
function Get_All_Notes_Of_Evaluations(local_session_id, local_inscription_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
form.append("token", stored_cookie);
form.append("tab_session_id", local_session_id);
form.append("tab_inscription_id", local_inscription_id);
form.append("apprenant_id", props.apprenant_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_Participant_Notes/";
axios.post(myurl, form).then(res => {
// console.log(" In Get_All_Notes_Of_Evaluations res.data.status = " + res.data.status);
//console.log(" In Get_All_Notes_Of_Evaluations res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setGet_All_Notes_Of_Evaluations_api("true");
setGet_All_Notes_Of_Evaluations_result(res.data.message);
}
else {
setGet_All_Notes_Of_Evaluations_api("false");
setGet_All_Notes_Of_Evaluations_message(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Get_All_Notes_Of_Evaluations = ', error);
setGet_All_Notes_Of_Evaluations_api("false");
//setmyApimyApiMessage("")
})
}
const [gridline_id, setgridline_id] = useState("");
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
const [New_Get_List_Ent_Session_Promotion_result, setNew_Get_List_Ent_Session_Promotion_result] = useState([]);
const [Get_List_Ent_Session_Promotion_api, setGet_List_Ent_Session_Promotion_api] = useState();
const [Get_List_Ent_Session_Promotion_message, setGet_List_Ent_Session_Promotion_message] = useState();
const [Get_List_Ent_Session_Promotion_result, setGet_List_Ent_Session_Promotion_result] = useState();
function Get_List_Ent_Session_Promotion(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
const stored_apprenant_id = getCookie('tokenmysychapprenant');
form.append("token", stored_cookie);
form.append("apprenant_id", stored_apprenant_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_List_Session_Promotion/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Get_List_Ent_Session_Promotion res.data.status = " + res.data.status);
// console.log(" In Get_List_Ent_Session_Promotion res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_List_Ent_Session_Promotion_api("true");
setGet_List_Ent_Session_Promotion_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var inscription_id = JSON.parse(x).inscription_id;
var session_id = JSON.parse(x).session_id;
var session_code_session = JSON.parse(x).session_code_session;
var session_titre = JSON.parse(x).session_titre;
var session_date_du = JSON.parse(x).session_date_du;
var session_date_au = JSON.parse(x).session_date_au;
var class_id = JSON.parse(x).class_id;
var class_title = JSON.parse(x).class_title;
//---
var node = {
"id": localid,
"label": session_code_session + " " + session_titre + " - " + session_date_du + " au " + session_date_au,
"inscription_id": inscription_id,
"session_id": session_id,
"session_code_session": session_code_session,
"session_titre": session_titre,
"session_date_du": session_date_du,
"session_date_au": session_date_au,
"class_id": class_id,
"class_title": class_title,
};
new_data2.push(node);
});
var node = {
"id": "",
"label": "",
"inscription_id": "",
"session_id": "",
"session_code_session": "",
"session_titre": "",
"session_date_du": "",
"session_date_au": "",
"class_id": "",
"class_title": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Ent_Session_Promotion_result(new_data2);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/ent_student");
}
else {
setGet_List_Ent_Session_Promotion_api("false");
setGet_List_Ent_Session_Promotion_message(res.data.message);
alert('Erreur: ' + res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_List_Ent_Session_Promotion = ', error);
setGet_List_Ent_Session_Promotion_api("false");
alert('Erreur: Impossible de recuperer la liste des promotions et sessions');
})
}
useEffect(() => {
Get_List_Ent_Session_Promotion();
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, [props.apprenant_id])
const [selectionModel_notes, setselectionModel_notes] = React.useState([]);
const [selected_session_id, setselected_session_id] = useState("");
const [selected_inscription_id, setselected_inscription_id] = useState("");
return (
<div className="module_ent_mes_notes">
@ -493,6 +550,191 @@ registerLocale('fr', fr);
</div>
<br />
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete
disablePortal
name="finance_data_type_cout"
id="finance_data_type_cout"
fullWidth
options={New_Get_List_Ent_Session_Promotion_result}
onChange={(event, value) => {
if (value && value.session_id) {
setselected_session_id(value.session_id);
setselected_inscription_id(value.inscription_id);
Get_All_Notes_Of_Evaluations(value.session_id, value.inscription_id);
} else {
setselected_session_id("");
setselected_inscription_id("");
setGet_All_Notes_Of_Evaluations_result([]);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
<br />
{<div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "20px", "paddingTop": "5px", "paddingLeft": "5px", fontFamily: 'DM Sans' }}> Les notes </nav>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" onClick={(event) => {
// Export_Inscrit_Notes();
}}>Export excel</Button>
</div>
<div className="session_data">
<div style={{ "border": "None", paddingRight: '10px' }}>
{Get_All_Notes_Of_Evaluations_result && Get_All_Notes_Of_Evaluations_result.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_notes(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_session_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
}
}}
selectionModel={selectionModel_notes}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={Get_All_Notes_Of_Evaluations_result.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
evaluation_id: JSON.parse(item).evaluation_id,
inscription_id: JSON.parse(item).inscription_id,
note_evaluation_id: JSON.parse(item).note_evaluation_id,
class_eu_id: JSON.parse(item).class_eu_id,
type_eval_id: JSON.parse(item).type_eval_id,
class_ue_code: JSON.parse(item).class_ue_code,
class_ue_titre: JSON.parse(item).class_ue_titre,
note_evaluation_code: JSON.parse(item).note_evaluation_code,
eval_date_heure_debut: JSON.parse(item).eval_date_heure_debut,
eval_date_heure_fin: JSON.parse(item).eval_date_heure_fin,
note: JSON.parse(item).note,
}
))}
columns={columns_notes}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
//field === 'distantiel'
if (params.field === 'distantiel' && String(params.value) === "1") {
return 'cell--distantiel';
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
}
else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
/>
</Box>
<br />
</div>}
</div>
</div>
</div>}
</div >
);

View File

@ -111,7 +111,7 @@ const useStyles = makeStyles((theme) => ({
color: 'gray',
},
}));
const Module_Ent_Mon_Planning = (props) => {
registerLocale('fr', fr);
const classes = useStyles();
@ -918,10 +918,10 @@ const Module_Ent_Mon_Planning = (props) => {
{/*** fin dialogue pr agenda */}
<h3 style={{ fontFamily: 'DM Sans' }}> ENT Full Planning </h3>
<div>
{/*<div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
@ -1080,11 +1080,11 @@ const Module_Ent_Mon_Planning = (props) => {
</div>}
</div>
</div>*/}
<br />
<div className="session_caract_Dialog"> <b> Session / Promo </b><br />
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete
disablePortal

View File

@ -97,7 +97,7 @@ const Module_Session_Evaluation = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
@ -145,7 +145,7 @@ const Module_Session_Evaluation = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
@ -192,7 +192,7 @@ const Module_Session_Evaluation = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,
@ -241,7 +241,7 @@ const Module_Session_Evaluation = (props) => {
{ field: '_id', headerName: '_id', hide: true },
{ field: 'form_code', headerName: 'Form. Code', hide: true, minwidth: 200, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'email', headerName: 'email', minwidth: 300, flex: 1, hideable: true, resizable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'nom', headerName: 'nom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'prenom', headerName: 'prenom', minwidth: 300, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'status', headerName: 'Statut', width: 100, editable: false, flex: true,

View File

@ -6934,7 +6934,7 @@ const Module_Session_Planification = (props) => {
</div>}
<div className="div_row" style={{ "border": "None", "textAlign": "right" }}>
<div className="div_row" style={{ "border": "None", "textAlign": "right", marginTop:'2rem', marginBottom:'1rem' }}>
<Button variant="outlined" onClick={Apply_Planning_To_Session}
className="detail_class_submenu bton_add_session"

View File

@ -52,7 +52,7 @@ import MoreVertIcon from '@mui/icons-material/MoreVert';
import Menu from '@mui/material/Menu';
const Modules_Mes_Documents = (props) => {
registerLocale('fr', fr);
registerLocale('fr', fr);
const { action, orderid } = useParams();
@ -281,32 +281,110 @@ registerLocale('fr', fr);
const autorized_type_document = ['devis', 'convention', 'convocation', 'attestation'];
const [New_Get_List_Ent_Session_Promotion_result, setNew_Get_List_Ent_Session_Promotion_result] = useState([]);
const [Get_List_Ent_Session_Promotion_api, setGet_List_Ent_Session_Promotion_api] = useState();
const [Get_List_Ent_Session_Promotion_message, setGet_List_Ent_Session_Promotion_message] = useState();
const [Get_List_Ent_Session_Promotion_result, setGet_List_Ent_Session_Promotion_result] = useState();
function Get_List_Ent_Session_Promotion(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
const stored_apprenant_id = getCookie('tokenmysychapprenant');
form.append("token", stored_cookie);
form.append("apprenant_id", stored_apprenant_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_List_Session_Promotion/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Get_List_Ent_Session_Promotion res.data.status = " + res.data.status);
// console.log(" In Get_List_Ent_Session_Promotion res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_List_Ent_Session_Promotion_api("true");
setGet_List_Ent_Session_Promotion_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var inscription_id = JSON.parse(x).inscription_id;
var session_id = JSON.parse(x).session_id;
var session_code_session = JSON.parse(x).session_code_session;
var session_titre = JSON.parse(x).session_titre;
var session_date_du = JSON.parse(x).session_date_du;
var session_date_au = JSON.parse(x).session_date_au;
var class_id = JSON.parse(x).class_id;
var class_title = JSON.parse(x).class_title;
//---
var node = {
"id": localid,
"label": session_code_session + " " + session_titre + " - " + session_date_du + " au " + session_date_au,
"inscription_id": inscription_id,
"session_id": session_id,
"session_code_session": session_code_session,
"session_titre": session_titre,
"session_date_du": session_date_du,
"session_date_au": session_date_au,
"class_id": class_id,
"class_title": class_title,
};
new_data2.push(node);
});
var node = {
"id": "",
"label": "",
"inscription_id": "",
"session_id": "",
"session_code_session": "",
"session_titre": "",
"session_date_du": "",
"session_date_au": "",
"class_id": "",
"class_title": "",
};
new_data2.push(node);
if (new_data2.length > 0)
setNew_Get_List_Ent_Session_Promotion_result(new_data2);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/ent_student");
}
else {
setGet_List_Ent_Session_Promotion_api("false");
setGet_List_Ent_Session_Promotion_message(res.data.message);
alert('Erreur: ' + res.data.message);
}
}).catch((error) => {
setLoading(false);
console.warn('Not good man :( Get_List_Ent_Session_Promotion = ', error);
setGet_List_Ent_Session_Promotion_api("false");
alert('Erreur: Impossible de recuperer la liste des promotions et sessions');
})
}
useEffect(() => {
console.log(" ### props.type_document = ", props.type_document)
if (props.partner_client_id && props.type_document && autorized_type_document.includes(String(props.type_document)) &&
props.partner_owner_recid === "") {
setmyprops_type_document(props.type_document);
setp_filtre1("filter_type_document");
setp_filtre1_value(props.type_document);
Get_All_Documents_With_Filter();
} else if (props.partner_client_id && props.type_document && String(props.type_document) === "all" &&
props.partner_owner_recid === "") {
Get_All_Documents_With_Filter();
}
else if (props.partner_owner_recid && props.partner_client_id === "") {
Get_All_Documents_With_Filter();
}
else {
Get_List_Of_All_PJ();
}
Get_List_Ent_Session_Promotion();
window.scrollTo({
top: 0,
behavior: "smooth",
});
}, [])
@ -525,7 +603,7 @@ registerLocale('fr', fr);
function getExcelData(apiRef) {
// Select rows and columns
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__" );
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__");
// Format the data. Here we only keep the value
const data = filteredSortedRowIds.map((id) => {
@ -550,7 +628,7 @@ registerLocale('fr', fr);
function handleExport(apiRef, data_colums) {
const data = getExcelData(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__" );
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__");
const local_config = {
@ -644,25 +722,19 @@ registerLocale('fr', fr);
};
const [Get_List_Of_All_PJ_api, setGet_List_Of_All_PJ_api] = useState();
const [Get_List_Of_All_PJ_result, setGet_List_Of_All_PJ_result] = useState();
const [Get_List_Of_All_PJ_result, setGet_List_Of_All_PJ_result] = useState([]);
const [Get_List_Of_All_PJ_message, setGet_List_Of_All_PJ_message] = useState();
function Get_List_Of_All_PJ() {
function Get_List_Of_All_PJ(local_selected_inscription_id) {
var form = new FormData();
const formData = new FormData();
var user_cookie = getCookie('tokenmysych');
var part_cookie = getCookie('tokenmysypart');
var stored_cookie = "";
if (props.type_user_connected && String(props.type_user_connected) === "partner_account")
stored_cookie = part_cookie;
else if (props.type_user_connected && String(props.type_user_connected) === "user_account")
stored_cookie = user_cookie;
const stored_cookie = getCookie('tokenmysych');
formData.append("token", stored_cookie);
formData.append("object_owner_id", props.partner_client_id);
formData.append("object_owner_collection", "inscription");
formData.append("object_owner_id", local_selected_inscription_id);
formData.append("apprenant_id", props.apprenant_id);
//formData.append("class_internal_url", internal_url);
@ -670,7 +742,7 @@ registerLocale('fr', fr);
setLoading(true);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/Get_List_object_owner_collection_Stored_Files/",
process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_List_object_owner_collection_Stored_Files/",
{
method: 'POST',
body: formData,
@ -680,9 +752,9 @@ registerLocale('fr', fr);
.then((result) => {
setLoading(false);
//console.log(" ## result['status'] = ", result['status'])
// console.log(" ## result['status'] = ", result['status'])
if (String(result['status']) === String("true")) {
// console.log('Message :', result['message']);
// console.log('Message :', result['message']);
setGet_List_Of_All_PJ_result(result['message']);
setGet_List_Of_All_PJ_api("true");
@ -709,27 +781,19 @@ registerLocale('fr', fr);
const [Download_one_attached_document_api, setDownload_one_attached_document_api] = useState();
const [Download_one_attached_document_result, setDownload_one_attached_document_result] = useState();
const [Download_one_attached_document_message, setDownload_one_attached_document_message] = useState();
const Download_one_attached_document = (event) => {
const stored_cookie = getCookie('tokenmysych');
var user_cookie = getCookie('tokenmysych');
var part_cookie = getCookie('tokenmysypart');
var stored_cookie = "";
if (props.type_user_connected && String(props.type_user_connected) === "partner_account")
stored_cookie = part_cookie;
else if (props.type_user_connected && String(props.type_user_connected) === "user_account")
stored_cookie = user_cookie;
var nom_fiche_detaillee = "Fiche_Detaillee.pdf";
var token = stored_cookie;
var file_name = event.target.id;
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Stored_Downloaded_File/" + token + "/" + file_name;
setLoading(true);
var url = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_Stored_Downloaded_File/" + token + "/" + file_name + "/" + props.apprenant_id;
setLoading(true);
axios.get(url, { responseType: 'blob', },)
.then((res) => {
setLoading(false);
@ -749,7 +813,7 @@ registerLocale('fr', fr);
const [Get_All_Documents_With_Filter_result, setGet_All_Documents_With_Filter_result] = useState();
function Get_All_Documents_With_Filter() {
setgridline_id("");
var form = new FormData();
@ -806,7 +870,7 @@ registerLocale('fr', fr);
form.append("date_create_start_date", String(p_date_du));
form.append("date_create_end_date", String(p_date_au));
}
else if (p_filtre3_value && p_filtre3 && String(p_filtre3) !== "date_creation") {
else if (p_filtre3_value && p_filtre3 && String(p_filtre3) !== "date_creation") {
filtre3_value = p_filtre3_value;
form.append(filtre3, filtre3_value);
}
@ -850,18 +914,11 @@ registerLocale('fr', fr);
const [p_date_du, setp_date_du] = useState(new Date().toLocaleDateString('fr-FR'));
const [p_date_au, setp_date_au] = useState(new Date().toLocaleDateString('fr-FR'));
/***
* IMPORTANT
* Ce module permet d'afficher et telecharger tous les documents qui sont dans la collection 'download_files', c'est à dire :
* 1 - Les documents importés manuellement sur l'espace du client
* 2 - Les devis signés electroniquement (en effet ils sont automatiquement importés dans l'espace du client)
* 3 - Les Convention signés electroniquement (en effet ils sont automatiquement importés dans l'espace du client)
* 4 - A ajouter : les convocations adressées à ses apprenants
* 5 - A ajouter : les attestations adressées à ses apprenants
*
* /!\ /!\ /!\ /!\ /!\ /!\ /!\ Les factures sont bien dans la collection, mais pour recuperer il faut passer par la collection 'partner_invoice_header'
* /!\ /!\ /!\ /!\ /!\ /!\ /!\ raison pour laquel, on va mettre les documents d'un coté et les facture de l'autre.
*/
const [selected_session_id, setselected_session_id] = useState("");
const [selected_inscription_id, setselected_inscription_id] = useState("");
return (
<div className="modules_mes_documents">
@ -869,8 +926,8 @@ registerLocale('fr', fr);
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{props.my_title && <h3 style={{ fontFamily:'DM Sans' }}> {props.my_title} </h3>}
{!props.my_title && <h3 style={{ fontFamily:'DM Sans' }}> Tous vos documents </h3>}
{props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> {props.my_title} </h3>}
{!props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> Tous vos documents </h3>}
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
@ -1261,230 +1318,74 @@ registerLocale('fr', fr);
<br />
</div>
<div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
<div className="session_data">
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete
disablePortal
name="finance_data_type_cout"
id="finance_data_type_cout"
fullWidth
<div style={{ "border": "None" }}>
<div style={{ height: 650, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 600,
width: '100%',
paddingRight: '1px',
options={New_Get_List_Ent_Session_Promotion_result}
onChange={(event, value) => {
if (value && value.session_id) {
setselected_session_id(value.session_id);
setselected_inscription_id(value.inscription_id);
Get_List_Of_All_PJ( value.inscription_id);
// Gestion des cellule "statut"
'& .cell--status--encours': {
backgroundColor: '#E6F7C8',
color: '#1a3e72',
fontWeight: 'light',
},
'& .cell--status--traite': {
backgroundColor: '#E6CEAA',
color: '#F9E79F',
fontWeight: 'light',
},
} else {
setselected_session_id("");
setselected_inscription_id("");
setGet_List_Of_All_PJ_result([]);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
/>
}
/>}
'& .line--statut--payed': {
backgroundColor: '#EAFAF1',
color: '#239B56',
fontWeight: '700'
},
}}
>
<DataGrid
components={{
Toolbar: CustomToolbar
}}
componentsProps={{ toolbar: { data_colums: columns } }}
// checkboxSelection
disableSelectionOnClick
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_invoice_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
//clean_order_detail_fields();
//setsubmenu();
setdisplay_detail_invoice();
}
}}
onRowDoubleClick={(newSelectionModel) => {
setgridline_id(newSelectionModel.row.id);
// setp_detail_header_client_nom_id(newSelectionModel.row.order_header_client_id);
// handleClick_edit_invoice_From_Line(newSelectionModel.row.id);
}
}
selectionModel={selectionModel}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rowss.map((item, index) => (
{
id: index,
_id: JSON.parse(item)._id,
file_name: JSON.parse(item).file_name,
file_business_object: JSON.parse(item).file_business_object,
object_owner_collection: JSON.parse(item).object_owner_collection,
type_document: JSON.parse(item).type_document,
file_extention: JSON.parse(item).file_extention,
client_raison_sociale: JSON.parse(item).client_raison_sociale,
client_nom: JSON.parse(item).client_nom,
creation_date: JSON.parse(item).creation_date,
}
))}
columns={columns}
pageSize={10}
className="datagridclass"
rowsPerPageOptions={[10]}
//disableSelectionOnClick
/* components={{
Toolbar: GridToolbar,
}}*/
//sx={datagridSx}
getCellClassName={(params) => {
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
}
else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
</div>
<div className="div_row" > &nbsp;</div>
{/* <div className="div_row" style={{ "border": "None", paddingRight: '10px' }}>
<div>
<div className="div_row" style={{ "border": "None" }}>
<hr className="hr_break" />
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes
</div>
{Get_List_Of_All_PJ_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
<b> Liste des pièces jointes </b> <br />
Liste des pièces jointes <br />
<div className="div_row">
{Get_List_Of_All_PJ_result && Get_List_Of_All_PJ_result.map((val) => (
<div className="div_row_list_pj" >
<nav name={(JSON.parse(val).file_name)}
id={(JSON.parse(val).file_name)}> <i> <AttachFileIcon />{(JSON.parse(val).file_business_object)} </i> <br /><font style={{ "color": "green", "cursor": "pointer" }}
name={(JSON.parse(val).file_name)}
id={(JSON.parse(val).file_name)} onClick={Download_one_attached_document}> Télécharger &nbsp;</font></nav>
<div className="div_row_list_pj" style={{ fontFamily: "DM Sans", fontSize: '14px' }}>
<nav style={{ "color": "green", "cursor": "pointer" }} onClick={Download_one_attached_document} name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}> Télécharger &nbsp;<i> {(JSON.parse(val).file_business_object)}</i> </nav> <br />
<Popup
trigger={
<nav style={{ "color": "red", "cursor": "pointer" }} > Supprimer</nav>
}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, la pièce jointe sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
// Delete_one_attached_document(event);
close();
}}
name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}
> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
</div>
))}
</div>
</div>
</div>}
</div>*/}
<div className="div_row" ref={myRef} id="myRef" > &nbsp;</div>
</div>

View File

@ -73,7 +73,7 @@ const New_ButtonHilight_ENT_Student_2025 = () => {
stored_part = getCookie('tokenmysypart');
var local_user_connect = 0;
var local_part_connect = 0;

View File

@ -11,7 +11,7 @@ import { FaHandPointRight } from "react-icons/fa";
import { useParams } from 'react-router-dom'
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
function OrderConfirmation_3DS(props) {
const [menu, setmenu] = useState("");
const history = useHistory();

View File

@ -571,9 +571,10 @@ const Partner_Configuration_Technique = (props) => {
const columns_list_competence = [
{ field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true },
{ field: 'domaine_competence_id', headerName: 'domaine_competence_id', hide: true },
{ field: 'code', headerName: 'Code', flex: 1, hide: false, editable: false },
{ field: 'description', headerName: 'Description', flex: 1, hide: false, editable: false },
{ field: 'domaine', headerName: 'Domaine', flex: 1, hide: false, editable: false },
{ field: 'domaine_competence_nom', headerName: 'Domaine Compét.', flex: 1, hide: false, editable: false },
{ field: 'metier', headerName: 'Métier', flex: 1, hide: false, editable: false },
{ field: 'commentaire', headerName: 'Commentaire', flex: 1, hide: false, editable: false },
@ -717,6 +718,18 @@ const Partner_Configuration_Technique = (props) => {
},
},
{
field: 'creation_date', headerName: 'Date Création', flex: 1, hide: false, editable: false,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
{cellValues.row.creation_date && <> {String(cellValues.row.creation_date).substring(0, 16)} </>}
</div>
);
},
},
{ field: 'message', headerName: 'MEssage', flex: 1, hide: true, editable: false },
{ field: 'error_message', headerName: 'Erreur', flex: 1, hide: false, editable: false },
@ -793,6 +806,8 @@ const Partner_Configuration_Technique = (props) => {
useEffect(() => {
Getall_Default_Domaine_Competence_List();
Getall_Parter_config_Points();
Getall_Parter_type_client();
Getall_Parter_groupe_client();
@ -1423,6 +1438,89 @@ const Partner_Configuration_Technique = (props) => {
})
}
const [New_Getall_Default_Domaine_Competence_List_result, setNew_Getall_Default_Domaine_Competence_List_result] = useState([]);
const [Getall_Default_Domaine_Competence_List_api, setGetall_Default_Domaine_Competence_List_api] = useState();
const [Getall_Default_Domaine_Competence_List_message, setGetall_Default_Domaine_Competence_List_message] = useState();
const [Getall_Default_Domaine_Competence_List_result, setGetall_Default_Domaine_Competence_List_result] = useState([]);
function Getall_Default_Domaine_Competence_List(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Competence_Domaine/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Default_Domaine_Competence_List res.data.status = " + res.data.status);
// console.log(" In Getall_Default_Domaine_Competence_List res.data.message r_class = " + res.data.message);
setGetall_Default_Domaine_Competence_List_api("true");
setGetall_Default_Domaine_Competence_List_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_description = JSON.parse(x).description;
var local_code = JSON.parse(x).code;
var local_nom = JSON.parse(x).nom;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code + " - " + local_nom,
"code": local_code,
"description": local_description,
"nom": local_nom,
};
new_data2.push(node);
});
//---
var node = {
"_id": "",
"id": "",
"label": "",
"code": "",
"description": "",
"nom": "",
};
new_data2.push(node);
setNew_Getall_Default_Domaine_Competence_List_result(new_data2);
}
else {
setGetall_Default_Domaine_Competence_List_api("false");
setGetall_Default_Domaine_Competence_List_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('Not good man :( Getall_Default_Domaine_Competence_List = ', error);
setGetall_Default_Domaine_Competence_List_api("false");
alert(" Impossible de recuperer la liste des domaines de compétence ");
//setmyApimyApiMessage("")
})
}
const [display_detail_quotation_config, setdisplay_detail_quotation_config] = React.useState();
const [display_detail_config, setdisplay_detail_config] = React.useState();
@ -3071,7 +3169,7 @@ const Partner_Configuration_Technique = (props) => {
form.append("competence_id", selected_competence_id);
form.append("code", p_detail_competence_code);
form.append("description", p_detail_competence_description);
form.append("domaine", p_detail_competence_domaine);
form.append("domaine_competence_id", p_detail_competence_domaine);
form.append("metier", p_detail_competence_metier);
form.append("commentaire", p_detail_competence_commentaire);
@ -3080,7 +3178,7 @@ const Partner_Configuration_Technique = (props) => {
myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Competence/";
form.append("code", p_detail_competence_code);
form.append("description", p_detail_competence_description);
form.append("domaine", p_detail_competence_domaine);
form.append("domaine_competence_id", p_detail_competence_domaine);
form.append("metier", p_detail_competence_metier);
form.append("commentaire", p_detail_competence_commentaire);
@ -3513,10 +3611,32 @@ const Partner_Configuration_Technique = (props) => {
<Dialog
open={Dialog_competence_1_open}
onClose={Dialog_competence_1_handleClose}
// onClose={Dialog_competence_1_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"
disableEnforceFocus={true}
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Compétence </DialogTitle>
@ -3562,7 +3682,39 @@ const Partner_Configuration_Technique = (props) => {
</div>
<div className="session_caract_Dialog" > Domaine
{New_Getall_Default_Domaine_Competence_List_result && New_Getall_Default_Domaine_Competence_List_result.length > 0 && <div className="session_caract_Dialog" > Domaine Compétence
<Autocomplete
disablePortal
name="event_dialog_competence_domaine"
id="event_dialog_competence_domaine"
fullWidth
options={New_Getall_Default_Domaine_Competence_List_result}
value={New_Getall_Default_Domaine_Competence_List_result.filter((data) => (data)._id === String(p_detail_competence_domaine))[0].label}
onChange={(event, value) => {
if (value && value._id) {
setp_detail_competence_domaine(value._id);
} else {
setp_detail_competence_domaine("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
</div>}
{/*<div className="session_caract_Dialog" > Domaine
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -3578,7 +3730,7 @@ const Partner_Configuration_Technique = (props) => {
}
/>
</div>
</div>*/}
<div className="session_caract_Dialog" > Métier
@ -4472,7 +4624,7 @@ const Partner_Configuration_Technique = (props) => {
</DialogActions>
</Dialog>
<h3 style={{ fontFamily: 'DM Sans' }}> Votre configuration </h3>
<div className="div_row" ref={myRef_head} id="myRef_head" >
@ -5597,9 +5749,10 @@ const Partner_Configuration_Technique = (props) => {
_id: JSON.parse(item)._id,
code: JSON.parse(item).code,
description: JSON.parse(item).description,
domaine: JSON.parse(item).domaine,
domaine_competence_id: JSON.parse(item).domaine,
metier: JSON.parse(item).metier,
commentaire: JSON.parse(item).commentaire,
domaine_competence_nom: JSON.parse(item).domaine_competence_nom,
}
))}
@ -5613,7 +5766,7 @@ const Partner_Configuration_Technique = (props) => {
setselected_competence_id(newSelectionModel.row._id);
setp_detail_competence_code(newSelectionModel.row.code);
setp_detail_competence_description(newSelectionModel.row.description);
setp_detail_competence_domaine(newSelectionModel.row.domaine);
setp_detail_competence_domaine(newSelectionModel.row.domaine_competence_id);
setp_detail_competence_metier(newSelectionModel.row.metier);
setp_detail_competence_commentaire(newSelectionModel.row.commentaire);
@ -7116,6 +7269,8 @@ const Partner_Configuration_Technique = (props) => {
statut: JSON.parse(item).statut,
sent: JSON.parse(item).sent,
creation_date: JSON.parse(item).creation_date,
error_message: JSON.parse(item).error_message,
smtp_account_From_User: JSON.parse(item).smtp_account_From_User,
smtp_account_user: JSON.parse(item).smtp_account_user,

View File

@ -1,17 +1,21 @@
import React, { useState, useEffect } from "react";
import UpdateUserInfo from "../components/UpdateUserInfo";
import UpdateUserInfo from "./UpdateUserInfo";
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Button from '@mui/material/Button';
import { useHistory } from "react-router-dom";
import UserHistoryRecherche from "../components/UserHistoryRecherche";
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import UserHistoryRecherche from "./UserHistoryRecherche";
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { Helmet } from "react-helmet";
import { useCookies } from "react-cookie";
import axios from "axios";
import { getCookie, } from 'react-use-cookie';
import Alert from '@mui/material/Alert';
import AlertTitle from '@mui/material/AlertTitle';
import Stack from '@mui/material/Stack';
import UpgradeToPro from "./UpgradeToPro"
import Profil_Objectif from "./ProfilObjectif";
@ -23,11 +27,21 @@ import Modules_Mes_Documents from "./Modules_Mes_Documents";
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
import Module_Ent_Mes_Documents from "./Module_Ent_Mes_Documents";
import Module_Ent_Mon_Planning from "./Module_Ent_Mon_Planning";
import Module_Ent_Mes_Formations from "./Module_Ent_Mes_Formations";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import Module_Ent_Mes_Notes from "./Module_Ent_Mes_Notes";
function Student_Account() {
const [menu, setmenu] = useState("mes_formations");
import { useParams } from 'react-router-dom'
function Student_Account_Ent() {
const { local_props_apprenant_id, local_props_menu } = useParams()
const [menu, setmenu] = useState(local_props_menu);
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_apprenant_id, setCookie_apprenant_id, removeCookie_apprenant_id] = useCookies(['tokenmysychapprenant']);
const [result, setResult] = useState("");
@ -92,7 +106,7 @@ function Student_Account() {
setfirstConnexion(location.state.firstconnexion);
}
Get_Ent_Message_Alert();
}, []);
@ -294,7 +308,7 @@ function Student_Account() {
const [isSelected, setIsSelected] = useState(false);
const [isnewimage, setisnewimage] = useState();
const [apprenant_id, setapprenant_id] = useState("");
const [apprenant_id, setapprenant_id] = useState(local_props_apprenant_id);
const changeHandler = (event) => {
@ -340,7 +354,100 @@ function Student_Account() {
const [New_Get_Ent_Message_Alert_result, setNew_Get_Ent_Message_Alert_result] = useState([]);
const [Get_Ent_Message_Alert_api, setGet_Ent_Message_Alert_api] = useState();
const [Get_Ent_Message_Alert_message, setGet_Ent_Message_Alert_message] = useState();
const [Get_Ent_Message_Alert_result, setGet_Ent_Message_Alert_result] = useState([]);
function Get_Ent_Message_Alert(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Ent_Alert_Message/";
setLoading(true);
axios.post(myurl, form).then(res => {
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Get_Ent_Message_Alert res.data.status = " + res.data.status);
// console.log(" In Get_Ent_Message_Alert res.data.message r_class = " + res.data.message);
setGet_Ent_Message_Alert_api("true");
setGet_Ent_Message_Alert_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_code = JSON.parse(x).code;
var local_priorite = JSON.parse(x).priorite;
var local_message = JSON.parse(x).message;
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,
"code": local_code,
"priorite": local_priorite,
"message": local_message,
"date_debut": local_date_debut,
"date_fin": local_date_fin,
};
new_data2.push(node);
});
if (new_data2.length > 0)
setNew_Get_Ent_Message_Alert_result(new_data2);
}
else {
setGet_Ent_Message_Alert_api("false");
setGet_Ent_Message_Alert_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('Not good man :( Get_Ent_Message_Alert = ', error);
setGet_Ent_Message_Alert_api("false");
alert(" Impossible de recuperer la liste des messages d'alerte");
//setmyApimyApiMessage("")
})
}
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
const [isLoading, setLoading] = useState();
return (
<div className="account" style={{ background: '#f4f4fb' }}>
@ -358,7 +465,23 @@ function Student_Account() {
<div className="div_mobile">
<div className="div_mobile"> {isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*** Affichage des messages d'alerte*/}
{display_alert_mysy && String(display_alert_mysy) === "1" &&
<Module_Alert_Confirmation alert_message={alert_message}
alert_type={alert_type}
clear_alert_message={clear_alert_message}
clear_alert_type={clear_alert_type}
clear_display_alert_mysy={clear_display_alert_mysy}
/>
}
{/*** FIN Affichage des messages d'alerte*/}
<div>
<h1 className="h1_transparent">Intranet Apprenant - Connexion MySy Training Technology </h1>
</div>
@ -390,27 +513,108 @@ function Student_Account() {
{connected_user_data && connected_user_data.type &&
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'center' }}> Espace numérique de travail 28/10/2025</h3>}
{/*** Si on A DES MESSAGES d'ALERTE, alors, alors on AFFICHE la zonne */}
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '30%', float: 'left', padding: '20px' }}>
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 &&
New_Get_Ent_Message_Alert_result.map((message) => (
<Stack sx={{ width: '100%', }} spacing={2}>
{message.priorite === "1" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="warning">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Important</AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
{String(menu) === String("affichage") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{message.priorite === "2" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px' }} severity="info">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Information</AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{message.priorite === "0" &&
<Alert variant="outlined" sx={{ border: 0, marginBottom: '20px', }} severity="error">
<AlertTitle sx={{ fontFamily: 'DM Sans', fontSize: '20px', textAlign: 'left', float: 'left' }}>Urgent </AlertTitle>
<font style={{ fontFamily: 'DM Sans', fontSize: '16px', textAlign: 'left', float: 'left' }}> {message.message}&nbsp; </font>
</Alert>}
</Stack>
))}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
</div>
<div style={{ width: '69%', float: 'right' }}>
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
</div>
</div>}
{/*** Si on A DES PASSSSS MESSAGES d'ALERTE, alors, alors on NNNNN'AFFICHE PASSSSSSSSSSSSla zonne */}
{New_Get_Ent_Message_Alert_result.length <= 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto' }}>
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
{String(menu) === String("mon_planning") &&
<Module_Ent_Mon_Planning apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_notes") &&
<Module_Ent_Mes_Notes apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_documents") &&
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
</div>
</div>}
</div>
</div>
</div>
</div>
</div >
);
}
export default Student_Account;
export default Student_Account_Ent;

View File

@ -1,460 +0,0 @@
import React, { useState, useEffect } from "react";
import UpdateUserInfo from "./UpdateUserInfo";
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Button from '@mui/material/Button';
import { useHistory } from "react-router-dom";
import UserHistoryRecherche from "./UserHistoryRecherche";
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { Helmet } from "react-helmet";
import { useCookies } from "react-cookie";
import axios from "axios";
import { getCookie, } from 'react-use-cookie';
import UpgradeToPro from "./UpgradeToPro"
import Profil_Objectif from "./ProfilObjectif";
import { useLocation } from "react-router-dom";
import { FaHandPointRight } from "react-icons/fa";
import Intranet_Factures_Client from "./Intranet_Factures_Client";
import Intranet_Tous_Documents from "./Intranet_Tous_Documents";
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
import Module_Ent_Mes_Documents from "./Module_Ent_Mes_Documents";
import Module_Ent_Mon_Planning from "./Module_Ent_Mon_Planning";
import Module_Ent_Mes_Formations from "./Module_Ent_Mes_Formations";
import Module_Ent_Mes_Notes from "./Module_Ent_Mes_Notes";
function Student_Account_ORIG_28102025() {
const [menu, setmenu] = useState("mes_formations");
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [result, setResult] = useState("");
const [myApiResponse, setmyApiResponse] = useState("");
const stored_user = getCookie('tokenmysych');
const history = useHistory();
const [country_code, setcountry_code] = useState("");
const [country_name, setcountry_name] = useState("");
const [city, setcity] = useState("");
const [postal, setpostal] = useState("");
const [latitude, setlatitude] = useState("");
const [longitude, setlongitude] = useState("");
const [IPv4, setIPv4] = useState("");
const [state, setstate] = useState("");
const [userimgprofil, setuserimgprofil] = useState();
const [userIp, setuserIp] = useState("");
const [username, setusername] = useState("");
const [migratedaccount, setmigratedaccount] = useState("0");
const apiUrl = process.env.REACT_APP_API_URL;
const formData = new FormData();
//alert("stored_user = "+stored_user);
const location = useLocation();
useEffect(() => {
var list_menu = ["affichage", "recherche", "upgradecompte", "profil_objectif", "mes_factures", "mes_documents"]
// getImage();
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
//alert(" début puch");
history.push("/ent_student");
}
async function fetchData() {
const result = await axios('https://geolocation-db.com/json/',);
//alert(result.data.IPv4);
setuserIp(result.data.IPv4);
setcountry_code(result.data.country_code);
setcountry_name(result.data.country_name);
setcity(result.data.city);
setpostal(result.data.postal);
setlatitude(result.data.latitude);
setlongitude(result.data.longitude);
setIPv4(result.data.IPv4);
setstate(result.data.state);
setuserIp(result.data.IPv4);
}
GetUserNameFromToken();
fetchData();
if (location && location.state && location.state.menu) {
// displayProfil_Objectif();
}
if (location && location.state && location.state.firstconnexion) {
setfirstConnexion(location.state.firstconnexion);
}
}, []);
const [myimage, setmyimage] = useState();
const [isimage, setisimage] = useState();
function getImage(e) {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/getRecodedImage/";
var form = new FormData();
form.append("token", stored_user);
form.append("type", "user");
axios.post(myurl, form).then(res => {
if (res.data.status != "False") {
//console.log(" getImage : In test res.data.status = " + res.data.status);
//console.log(" getImage: res.data.message.img = " + res.data.message);
if (res.data.message.img.length > 0) {
setisimage("True");
}
else {
setisimage("False");
}
setmyimage(res.data.message.img);
var ch_img = "data:image/png;base64," + res.data.message.img;
setuserimgprofil(ch_img);
}
else {
//console.log(" In Erreur res.data.status = " + res.data.status);
//console.log(" In Erreur res.data.message = " + res.data.message);
setisimage("False");
setuserimgprofil(profileimg);
}
}).catch((error) => {
console.warn('Not good man :( mysearchtext = ');
setisimage("False");
setuserimgprofil(profileimg);
})
}
const [firstConnexion, setfirstConnexion] = useState("");
function logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
removeCookie('tokenmysych', { path: '/' });
history.push("/ent_student");
}
}
function logout() {
confirmAlert({
title: 'Deconnexion ?',
message: 'Confirmez la deconnexion',
buttons: [
{
label: 'Oui',
onClick: () => logout_confirmation()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
function funct_menu_mes_formations() {
setmenu("mes_formations");
}
function funct_menu_mon_planning() {
setmenu("planning");
}
const displayProfil_Modules_Mes_Documents = () => {
setmenu("modules_mes_documents");
};
const upgradetopro = () => {
setmenu("upgradecompte");
};
const displayPersoInfo = () => {
setmenu("affichage");
};
const [connected_user_data, setconnected_user_data] = useState();
function GetUserNameFromToken(event) {
var form = new FormData();
form.append("token", stored_user);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_user_account/";
axios.post(myurl, form).then(res => {
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
if (String(res.data.status) === String("true")) {
setusername(JSON.parse(res.data.message).email);
if (JSON.parse(res.data.message).type && String(JSON.parse(res.data.message).type) === "student") {
if (JSON.parse(res.data.message).apprenant_id) {
setapprenant_id(JSON.parse(res.data.message).apprenant_id);
}
}
setconnected_user_data(JSON.parse(res.data.message));
}
else {
//console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
//console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
}
}).catch((error) => {
console.warn('In GetUserNameFromToken Not good man :( mysearchtext = ', error);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
})
}
function finaldeleteuseraccount(e) {
var form = new FormData();
form.append("token", stored_user);
// Ajout des info IP user
form.append("user_ip", IPv4);
form.append("user_country_code", country_code);
form.append("user_country_name", country_name);
form.append("user_city", city);
form.append("user_postal", postal);
form.append("user_latitude", latitude);
form.append("user_longitude", longitude);
form.append("user_state", state);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/send_mail_delete_user/";
axios.post(myurl, form).then(res => {
if (String(res.data.status) != String("false")) {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message = " + res.data.message);
setmyApiResponse("true");
setResult(res.data.message)
alert(res.data.message);
}
else {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message = " + res.data.message);
setmyApiResponse("false");
//setmyApimyApiMessage("")
}
}).catch((error) => {
console.warn('Not good man :( mysearchtext = ');
setmyApiResponse("false");
//setmyApimyApiMessage("")
})
}
function deletemyaccount(e) {
confirmAlert({
title: 'Suppremier votre compte',
message: 'Cette action va supprimer toutes vos données, Confirmez-vous la suppression du compte ?',
buttons: [
{
label: 'Oui',
onClick: () => finaldeleteuseraccount()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
const [selectedFile, setSelectedFile] = useState();
const [isSelected, setIsSelected] = useState(false);
const [isnewimage, setisnewimage] = useState();
const [apprenant_id, setapprenant_id] = useState("");
const changeHandler = (event) => {
let file_size = event.target.files[0].size;
//or if you like to have name and type
let file_name = event.target.files[0].name;
let file_type = event.target.files[0].type;
//alert("file_size = "+file_size+" file_type = "+file_type+" a = "+a);
if (file_size > 10000000) {
alert("L'image doit faire moins de 100 Kilo Octets");
return;
}
setSelectedFile(event.target.files[0]);
setIsSelected(true);
setuserimgprofil(URL.createObjectURL(event.target.files[0]));
};
function sendImage(e) {
formData.append('File', selectedFile);
formData.append("token", stored_user);
formData.append("type", "user");
// formData.append("apprenant_id", apprenant_id);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/recordImage/",
{
method: 'POST',
body: formData,
}
).then((response) => response.json())
.then((result) => {
//console.log('Success:', result['message']);
setIsSelected(false);
})
.catch((error) => {
console.error('Error:');
setIsSelected(true);
});
};
return (
<div className="account" style={{ background: '#f4f4fb' }}>
<Helmet>
<title>Création compte MySy Trainig Technology</title>
<meta name="description" content="Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser laudit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents, Gestion formateurs, Catalogue formations personnalisé" />
<meta name="robots" content="index,follow" />
<meta name="title" content="Création compte MySy Trainig Technology" />
<link rel="canonical" href={window.location.href} />
</Helmet>
<h1 style={{ fontSize: '0.1px', opacity: '0' }}>Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser laudit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents,
Gestion formateurs, Catalogue formations personnalisé </h1>
<div className="div_mobile">
<div>
<h1 className="h1_transparent">Intranet Apprenant - Connexion MySy Training Technology </h1>
</div>
<div>
<div className="div_gauche">
<div>
<img class="img-responsive img_user" src={userimgprofil} align="center" alt="MySy Training profile image" />
{!isSelected && <div className="nonlable">
<input type="file" id="files" accept="image/*" onChange={changeHandler} style={{ opacity: "0", zIndex: "-1", maxWidth: "5px", maxHeight: "0px" }} />
<label for="files" className="label">Changer image</label>
</div>}
{isSelected && <div className="nonlable">
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
</div>}
</div>
<div className="nom_prenom"> {username && <b> {username} </b>}
{!username && <b> xxxx </b>} </div>
<hr className="my_hr" />
{/** Menu pour un utilisateur de type 'user'. Exemple, l'intranet du client d'un client */}
{/** Menu pour un utilisateur NON type 'user' exemple un apprenant */}
{connected_user_data && connected_user_data.type &&
String(connected_user_data.type) === "student" &&
<div>
<div className="sousmenu" onClick={displayPersoInfo}> INFORMATIONS PERSONNELLES</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={funct_menu_mes_formations}> MES FORMATIONS</div>
<hr className="my_hr" />
{/* <div className="sousmenu" onClick={funct_menu_mon_planning}> MON PLANNING</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES NOTES</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={"displayProfil_Objectif"}> MES DOCUMENTS</div>
<hr className="my_hr" />
<div className="sousmenu" onClick={displayProfil_Modules_Mes_Documents}> MODULE TOUS DOCUMENTS</div>
<hr className="my_hr" />
*/}
{/* <div className="sousmenu" onClick={deletemyaccount}> SUPPRIMER MON COMPTE</div>
<hr className="my_hr" />*/}
</div>}
</div>
<div className="div_droite" style={{ border: 'none' }}>
{String(firstConnexion) === "1" &&
<div className="div_droite firstConnexion">
<div className="firstConnexion_text">
<b>Cher Utilisateur, c'est votre première connexion, </b> <br /> &nbsp;<br />
Nous sommes ravis de vous accueillir. Nous vous invitons à modifier votre mot de passe à partir du menu <i>"MES INFORMATIONS"</i> ==&gt; Pavé <i>"SECURITE"</i> puis <i>"MODIFIER"</i> <br /><br />
<Button onClick={(e) => setfirstConnexion()} className="firstConnexion_bton"> &nbsp; &nbsp;<FaHandPointRight /> &nbsp; Fermer</Button><br />
&nbsp; <br /> Merci.
</div>
</div>}
{String(myApiResponse) === String("true") && <div className="okUpdateData">
{result}
</div>}
{String(myApiResponse) !== String("true") && <div className="koUpdateData">
{result}
</div>}
{connected_user_data && connected_user_data.type &&
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'center' }}> Espace numérique de travail laaa</h3>}
{String(menu) === String("affichage") && <UpdateUserInfo apprenant_id={apprenant_id}/>}
{String(menu) === String("recherche") && <UserHistoryRecherche />}
{String(menu) === String("upgradecompte") && <UpgradeToPro />}
{String(menu) === String("profil_objectif") && <Profil_Objectif />}
{String(menu) === String("mes_formations") &&
<Module_Ent_Mes_Formations apprenant_id={apprenant_id}
/>}
</div>
</div>
</div>
</div>
);
}
export default Student_Account_ORIG_28102025;

View File

@ -929,10 +929,10 @@ function Survey_Eval_QR_Code() {
&nbsp;
</div>
<div style={{ width: "80%", "marginLeft": "auto", "marginRight": "auto" }}>
<div style={{ width: "100%", "marginLeft": "auto", "marginRight": "auto" }}>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', }}>
<Popup
trigger={
@ -991,7 +991,7 @@ function Survey_Eval_QR_Code() {
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<div className="div_row_droite" style={{ "textAlign": 'right', }} >
<Button variant="contained" className="bton_annule" onClick={(e) => {
Signature_E_Document(0);
}}>J'etais Absent

View File

@ -590,7 +590,7 @@ function UpdateUserInfo(props) {
return (
<div className='updateuserinfo'>
<div className='updateuserinfo' style={{ padding: '20px' }}>
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
@ -609,7 +609,7 @@ function UpdateUserInfo(props) {
<div className="titre1"> Données personnelles </div>
<hr className="my_hr" />
&nbsp;
@ -727,7 +727,7 @@ function UpdateUserInfo(props) {
<div className="session_caract"> <b> LinkedIn </b> <br />
<div className="session_caract"> LinkedIn <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -753,7 +753,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> Facebook </b> <br />
<div className="session_caract"> Facebook <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -779,7 +779,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> X (Twitter) </b> <br />
<div className="session_caract"> X (Twitter) <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -805,7 +805,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> Adresse </b> <br />
<div className="session_caract"> Adresse <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -831,7 +831,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> Code Postal </b> <br />
<div className="session_caract"> Code Postal <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -857,7 +857,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> Ville </b> <br />
<div className="session_caract"> Ville <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -883,7 +883,7 @@ function UpdateUserInfo(props) {
/>
</div>
<div className="session_caract"> <b> Pays </b> <br />
<div className="session_caract"> Pays <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -920,29 +920,31 @@ function UpdateUserInfo(props) {
<div className="div_row22">
{fields1desabled == false && <div className="div_row">
<div className="div_row_gauche" style={{ "textAlign": "left" }}>
<Button variant="contained" color="success" className="div_row22 btn_enreg" onClick={RecordData}>Enregistrer</Button>
<Button variant="contained" color="success" className="div_row22 btn_enreg" onClick={RecordData}>Enregistrer</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": "right" }}>
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={desablefield1}>Annuler</Button>
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={desablefield1}>Annuler</Button>
</div>
</div>
}
{fields1desabled == true &&
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Modifier</Button>
}
{fields1desabled == true && <div className="div_row">
<div className="div_row_droite" style={{ "textAlign": "right" }} >
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablefieds1}>Editer</Button>
</div>
</div>}
</div>
</Box>
<hr className="my_hr" />
<div style={{ "width": "10%" }}> &nbsp;</div>
<div className="titre1"> Securité </div>
<hr className="my_hr" />
&nbsp;
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 } }}>
<div style={{ width: "100%", float: 'left' }}>
<div> <b> Actuel Password </b> <br />
<Box alignItems="left" sx={{ '& > :not(style)': { m: 1 }, }}>
<div style={{ width: "100%", float: 'left', fontFamily: 'DM Sans' }}>
<div style={{ fontFamily: 'DM Sans' }}> Mot de passe actuel <br />
<FormControl sx={{ m: 1, width: '100%' }} variant="standard" size="small" className="texte_area_passwd">
<InputLabel htmlFor="outlined-adornment-password"></InputLabel>
<OutlinedInput
@ -968,8 +970,8 @@ function UpdateUserInfo(props) {
</div>
</div>
<br />
<div style={{ width: "100%", float: 'left' }}>
<div> <b> Nouveau Password </b> <br />
<div style={{ width: "100%", float: 'left', fontFamily: 'DM Sans' }}>
<div style={{ fontFamily: 'DM Sans' }}> Nouveau mot de passe <br />
<FormControl sx={{ m: 1, width: '100%' }} variant="standard" size="small" className="texte_area_passwd">
<InputLabel htmlFor="outlined-adornment-password2"></InputLabel>
<OutlinedInput
@ -996,8 +998,8 @@ function UpdateUserInfo(props) {
</div>
<br />
<div style={{ width: "100%", float: 'left' }}>
<div> <b> Nouveau Password (2) </b> <br />
<div style={{ width: "100%", float: 'left', fontFamily: 'DM Sans' }}>
<div style={{ fontFamily: 'DM Sans' }}> Nouveau mot de passe (2) <br />
<FormControl sx={{ m: 1, width: '100%' }} variant="standard" size="small" className="texte_area_passwd">
<InputLabel htmlFor="outlined-adornment-password"></InputLabel>
<OutlinedInput
@ -1027,16 +1029,18 @@ function UpdateUserInfo(props) {
{pwdfieldsdesabled == false && <div className="div_row">
<div className="div_row_gauche" style={{ "textAlign": "left" }}>
<Button variant="contained" color="success" className="div_row22 btn_enreg" onClick={UpdateUserPwd}>Enregistrer</Button>
<Button variant="contained" color="success" className="div_row22 btn_enreg" onClick={UpdateUserPwd}>Enregistrer</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": "right" }} >
<Button variant="contained" color="success" className="div_row22 btn_modif"onClick={desablesecurtypwdfields}>Annuler</Button>
<div className="div_row_droite" style={{ "textAlign": "right" }} >
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={desablesecurtypwdfields}>Annuler</Button>
</div>
</div>
}
{pwdfieldsdesabled == true &&
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablesecurtypwdfields}>Modifier</Button>
}
{pwdfieldsdesabled == true && <div className="div_row">
<div className="div_row_droite" style={{ "textAlign": "right" }} >
<Button variant="contained" color="success" className="div_row22 btn_modif" onClick={enablesecurtypwdfields}>Editer</Button>
</div>
</div>}
</div>

View File

@ -40,7 +40,7 @@ const useStyles = makeStyles((theme) => ({
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
@ -61,6 +61,7 @@ const Header_ENT_Student = () => {
const [partnerconnected, setpartnerconnected] = useState("0");
const stored_user = getCookie('tokenmysych');
const stored_part = getCookie('tokenmysypart');
const stored_apprenant_id = getCookie('tokenmysychapprenant');
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
const [PartnerMenu, setPartnerMenu] = React.useState(null);
@ -100,8 +101,9 @@ const Header_ENT_Student = () => {
const handleMyAccount = () => {
const stored_apprenant_id = getCookie('tokenmysychapprenant');
setAccountMenu(null);
history.push("/mysy-user-account")
history.push("/mysy-student-ent/" + String(stored_apprenant_id) + "/apprenant_account_data")
};
const handleAccountConnexion = () => {
@ -160,7 +162,7 @@ const Header_ENT_Student = () => {
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
@ -211,7 +213,7 @@ const Header_ENT_Student = () => {
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion <br />
@ -266,38 +268,26 @@ const Header_ENT_Student = () => {
}} />
<nav className="menu-list">
<a href="/apropos" className="menu-link">À propos</a>
<a href="/fonctionnalites" className="menu-link">Fonctionnalités</a>
<a href="#" className="menu-link">
<nav onClick={(e) => {
history.push("/tarif/#debut");
// window.open("/tarif/#debut", "_self");
}}>Tarifs </nav>
</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_formations"} className="menu-link">Formations</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mon_planning"} className="menu-link">Planning</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_notes"} className="menu-link">Notes</a>
{/*<a href="/Recherche-Article-formation" className="menu-link">Blog</a>*/}
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Marketplace</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_documents"} className="menu-link">Documents</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Emails</a>
</nav>
</div>
<div className="cta-login">
<div className="cta-buttons">
<button className="btn btn-primary" onClick={(e) => {
e.preventDefault();
var date2 = new Date();
const format2 = "YYYY-MM";
var dateTime2 = moment(date2).format(format2);
window.open(
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
'_blank'
);
}}>Réserver une démo</button>
</div>
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
{String(someoneconnected) === String("1") &&
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/apprenant_account_data"} className="btn btn-primary">Mon compte</a>
}
</div>
<div className="separator hide_on_mobile"></div>

View File

@ -1,19 +1,19 @@
import ENT_Student_New_C_Header_2025_V2 from "../components/ENT_Student_header_automatic_files/ENT_Student_Header";
import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automatic_files/Layout_Without_Testimony";
import New_Navigation_ENT_Student_2025 from "../components/New_Navigation_ENT_Student_2025";
import Student_Account from "./../components/Student_Account";
const student_account = () => {
import Student_Account_Ent from "../components/Student_Account_Ent";
const student_account_ent = () => {
return (
<div>
<New_Navigation_ENT_Student_2025 />
<ENT_Student_New_C_Header_2025_V2 />
<Student_Account />
<Student_Account_Ent />
<New_C_Footer_Without_Testimony_2025_V2 />
</div>
)
}
export default student_account;
export default student_account_ent;

View File

@ -2,7 +2,7 @@
width: 100%;
max-width: 1500px;
margin: auto;
.loader-container {
width: 100%;
height: 100vh;

View File

@ -1,5 +1,9 @@
.module_ent_mes_notes {
width: 100%;
max-width: 1500px;
margin: auto;
.loader-container {
width: 100%;
height: 100vh;

View File

@ -1,5 +1,9 @@
.module_ent_mon_planning {
width: 100%;
max-width: 1500px;
margin: auto;
.loader-container {
width: 100%;
height: 100vh;
@ -1719,7 +1723,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
cursor: default;
font-style: italic;
background-color: gray;
font-weight: normal;
@ -2310,7 +2314,7 @@
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
cursor: default;
font-style: italic;
background-color: gray;
font-weight: normal;