10/03/2025 - 13h
parent
6f197dbdbf
commit
b0b2108cae
|
@ -12,6 +12,13 @@
|
||||||
<priority>1.0000</priority>
|
<priority>1.0000</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://mysy-training.com/</loc>
|
||||||
|
<lastmod>2025-02-16T11:35:41+00:00</lastmod>
|
||||||
|
<changefreq>daily</changefreq>
|
||||||
|
<priority>1.0000</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
<url>
|
<url>
|
||||||
<loc>https://www.mysy-training.com/fonctionnalites</loc>
|
<loc>https://www.mysy-training.com/fonctionnalites</loc>
|
||||||
<lastmod>2025-02-16T11:35:41+00:00</lastmod>
|
<lastmod>2025-02-16T11:35:41+00:00</lastmod>
|
||||||
|
|
36
src/App.js
36
src/App.js
|
@ -167,7 +167,7 @@ function App() {
|
||||||
|
|
||||||
<Route path="/maintenance" exact component={Maintenance} />
|
<Route path="/maintenance" exact component={Maintenance} />
|
||||||
|
|
||||||
|
|
||||||
<Route path="/markeplace" exact component={Contact} />
|
<Route path="/markeplace" exact component={Contact} />
|
||||||
|
|
||||||
<Route path="/create_account" exact component={CreateAccount} />
|
<Route path="/create_account" exact component={CreateAccount} />
|
||||||
|
@ -185,7 +185,7 @@ function App() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
|
<Route path="/mysy-account-activated/" exact component={AccountUserActivated} />
|
||||||
{/* <Route path="/Produits-Services/" exact component={ProduitsService} />*/}
|
{/* <Route path="/Produits-Services/" exact component={ProduitsService} />*/}
|
||||||
|
@ -223,6 +223,17 @@ function App() {
|
||||||
<Route path="/signup/" exact component={New_Sign_Up_2025} />
|
<Route path="/signup/" exact component={New_Sign_Up_2025} />
|
||||||
<Route path="/tarif/" exact component={New_Tarif_2025} />
|
<Route path="/tarif/" exact component={New_Tarif_2025} />
|
||||||
<Route path="/contact/" exact component={New_Contact_2025} />
|
<Route path="/contact/" exact component={New_Contact_2025} />
|
||||||
|
|
||||||
|
{/*
|
||||||
|
|
||||||
|
09/03/25 : un redirection a été faite dans cloudflaire pour les lignes ci-dessous
|
||||||
|
|
||||||
|
<Route path="/ContactezNous" exact component={New_Contact_2025} />
|
||||||
|
|
||||||
|
*/}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Route path="/display-detail-article/:articleId" exact component={New_Article_Detail_2025} />
|
<Route path="/display-detail-article/:articleId" exact component={New_Article_Detail_2025} />
|
||||||
<Route path="/Display-Detail-Article/:articleId" exact component={New_Article_Detail_2025} />
|
<Route path="/Display-Detail-Article/:articleId" exact component={New_Article_Detail_2025} />
|
||||||
|
|
||||||
|
@ -233,6 +244,15 @@ function App() {
|
||||||
<Route path="/fonctionnalites/" exact component={New_Fonctionnalite_2025} />
|
<Route path="/fonctionnalites/" exact component={New_Fonctionnalite_2025} />
|
||||||
|
|
||||||
<Route path="/apropos/" exact component={New_A_Propos_2025} />
|
<Route path="/apropos/" exact component={New_A_Propos_2025} />
|
||||||
|
{/*
|
||||||
|
|
||||||
|
09/03/25 : un redirection a été faite dans cloudflaire pour les lignes ci-dessous
|
||||||
|
<Route path="/QuiSommesNous" exact component={New_A_Propos_2025} />
|
||||||
|
<Route path="/QuiSommesNous_v3" exact component={New_A_Propos_2025} />
|
||||||
|
<Route path="/qui-sommes-nous" exact component={New_A_Propos_2025} />
|
||||||
|
|
||||||
|
*/}
|
||||||
|
|
||||||
<Route path="/" exact component={New_Home_Page_2025} />
|
<Route path="/" exact component={New_Home_Page_2025} />
|
||||||
|
|
||||||
|
|
||||||
|
@ -260,16 +280,10 @@ function App() {
|
||||||
<Route path="/mysy-user-account" exact component={Account} />
|
<Route path="/mysy-user-account" exact component={Account} />
|
||||||
<Route path="/Ajout-Article-formation" exact component={AddArticle} />
|
<Route path="/Ajout-Article-formation" exact component={AddArticle} />
|
||||||
<Route path="/ResetUserPwd/:token/:accounttype" exact component={ResetUserPwd} />
|
<Route path="/ResetUserPwd/:token/:accounttype" exact component={ResetUserPwd} />
|
||||||
<Route path="/QuiSommesNous" exact component={New_A_Propos_2025} />
|
|
||||||
<Route path="/QuiSommesNous_v3" exact component={New_A_Propos_2025} />
|
|
||||||
<Route path="/qui-sommes-nous" exact component={New_A_Propos_2025} />
|
|
||||||
<Route path="/ContactezNous" exact component={New_Contact_2025} />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
|
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{/* Fin Migration */}
|
{/* Fin Migration */}
|
||||||
|
|
|
@ -70,8 +70,8 @@ import RadioGroup from '@mui/material/RadioGroup';
|
||||||
import FormControlLabel from '@mui/material/FormControlLabel';
|
import FormControlLabel from '@mui/material/FormControlLabel';
|
||||||
import FormControl from '@mui/material/FormControl';
|
import FormControl from '@mui/material/FormControl';
|
||||||
import FormLabel from '@mui/material/FormLabel';
|
import FormLabel from '@mui/material/FormLabel';
|
||||||
|
import { FaUserPen } from "react-icons/fa6";
|
||||||
import allLocales from '@fullcalendar/core/locales-all'
|
import allLocales from '@fullcalendar/core/locales-all';
|
||||||
import listPlugin from '@fullcalendar/list';
|
import listPlugin from '@fullcalendar/list';
|
||||||
import multiMonthPlugin from '@fullcalendar/multimonth'
|
import multiMonthPlugin from '@fullcalendar/multimonth'
|
||||||
|
|
||||||
|
@ -2484,7 +2484,7 @@ const DisplayPartnerSession = (props) => {
|
||||||
|
|
||||||
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
|
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
|
||||||
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
|
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
|
||||||
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState();
|
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState([]);
|
||||||
function Get_List_Partner_Clients(event) {
|
function Get_List_Partner_Clients(event) {
|
||||||
|
|
||||||
var form = new FormData();
|
var form = new FormData();
|
||||||
|
@ -3338,6 +3338,62 @@ const DisplayPartnerSession = (props) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [Update_PresInsc_Data_With_Nb_Personne_By_Client_api, setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_api] = useState();
|
||||||
|
const [Update_PresInsc_Data_With_Nb_Personne_By_Client_message, setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_message] = useState();
|
||||||
|
const [Update_PresInsc_Data_With_Nb_Personne_By_Client_result, setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_result] = useState();
|
||||||
|
function Update_PresInsc_Data_With_Nb_Personne_By_Client() {
|
||||||
|
|
||||||
|
|
||||||
|
var form = new FormData();
|
||||||
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
||||||
|
|
||||||
|
// console.log(" #### local_liste_class = ", local_liste_class)
|
||||||
|
|
||||||
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
|
form.append("token", stored_cookie);
|
||||||
|
form.append("client_id", p_maj_preinsc_client_id);
|
||||||
|
form.append("session_id", selected_session_id);
|
||||||
|
form.append("max_presinscrit", p_maj_preinsc_nb_participant);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_request_For_Preinsciption_Creation_By_Customer/";
|
||||||
|
setLoading(true);
|
||||||
|
axios.post(myurl, form).then(res => {
|
||||||
|
setLoading(false);
|
||||||
|
//console.log(" In Update_PresInsc_Data_With_Nb_Personne_By_Client res.data.status = " + res.data.status);
|
||||||
|
//console.log(" In Update_PresInsc_Data_With_Nb_Personne_By_Client res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
|
if (String(res.data.status) === String("true")) {
|
||||||
|
setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_api("true");
|
||||||
|
setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_result(res.data.message);
|
||||||
|
Dialog_MAJ_Preinsc_Client_handleClose_buton();
|
||||||
|
// alert(res.data.message);
|
||||||
|
setdisplay_alert_mysy("1");
|
||||||
|
setalert_message(res.data.message);
|
||||||
|
setalert_type("success");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_api("false");
|
||||||
|
setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_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('Update_PresInsc_Data_With_Nb_Personne_By_Client : Not good man :( mysearchtext = ' + error);
|
||||||
|
setUpdate_PresInsc_Data_With_Nb_Personne_By_Client_api("false");
|
||||||
|
alert(" Impossible d'envoyer la demande de mise à jour");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const [Refuse_List_Inscritpion_api, setRefuse_List_Inscritpion_api] = useState();
|
const [Refuse_List_Inscritpion_api, setRefuse_List_Inscritpion_api] = useState();
|
||||||
const [Refuse_List_Inscritpion_message, setRefuse_List_Inscritpion_message] = useState();
|
const [Refuse_List_Inscritpion_message, setRefuse_List_Inscritpion_message] = useState();
|
||||||
const [Refuse_List_Inscritpion_result, setRefuse_List_Inscritpion_result] = useState();
|
const [Refuse_List_Inscritpion_result, setRefuse_List_Inscritpion_result] = useState();
|
||||||
|
@ -13960,6 +14016,31 @@ const DisplayPartnerSession = (props) => {
|
||||||
const [dup_p_session_etape, setdup_p_session_etape] = useState("");
|
const [dup_p_session_etape, setdup_p_session_etape] = useState("");
|
||||||
const [dup_p_session_formateur_id, setdup_p_session_formateur_id] = useState("");
|
const [dup_p_session_formateur_id, setdup_p_session_formateur_id] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
const [Dialog_MAJ_Preinsc_Client_message, setDialog_MAJ_Preinsc_Client_message] = React.useState(false);
|
||||||
|
const [Dialog_MAJ_Preinsc_Client_open, setDialog_MAJ_Preinsc_Client_open] = React.useState(false);
|
||||||
|
function Dialog_MAJ_Preinsc_Client_handle_change_participant_session(message) {
|
||||||
|
setDialog_MAJ_Preinsc_Client_message(message);
|
||||||
|
setDialog_MAJ_Preinsc_Client_open(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Dialog_MAJ_Preinsc_Client_handleClose = () => {
|
||||||
|
//alert(" Utiliser le bouton 'fermer' ");
|
||||||
|
//setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Dialog_MAJ_Preinsc_Client_handleClose_buton = () => {
|
||||||
|
setp_maj_preinsc_client_id("");
|
||||||
|
setp_maj_preinsc_nb_participant("");
|
||||||
|
setDialog_MAJ_Preinsc_Client_open(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
const [p_maj_preinsc_client_id, setp_maj_preinsc_client_id] = useState("");
|
||||||
|
const [p_maj_preinsc_nb_participant, setp_maj_preinsc_nb_participant] = useState("1");
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="displaypartnersession">
|
<div className="displaypartnersession">
|
||||||
|
|
||||||
|
@ -14013,7 +14094,6 @@ const DisplayPartnerSession = (props) => {
|
||||||
aria-labelledby="draggable-dialog-title"
|
aria-labelledby="draggable-dialog-title"
|
||||||
|
|
||||||
>
|
>
|
||||||
|
|
||||||
<DialogTitle style={{ cursor: 'move' }} id="draggable-dialog-title"> Dupliquer : <i>{dup_list_session_code} </i> </DialogTitle>
|
<DialogTitle style={{ cursor: 'move' }} id="draggable-dialog-title"> Dupliquer : <i>{dup_list_session_code} </i> </DialogTitle>
|
||||||
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||||
<DialogContentText>
|
<DialogContentText>
|
||||||
|
@ -14166,6 +14246,129 @@ const DisplayPartnerSession = (props) => {
|
||||||
{/* FIN Dialog pour gerer les DUPLIQUER SESSION*/}
|
{/* FIN Dialog pour gerer les DUPLIQUER SESSION*/}
|
||||||
|
|
||||||
|
|
||||||
|
{/* Dialog pour gerer les PREINSCRIPTION PAR CLIENT*/}
|
||||||
|
<Dialog
|
||||||
|
open={Dialog_MAJ_Preinsc_Client_open}
|
||||||
|
// onClose={Dialog_MAJ_Preinsc_Client_handleClose}
|
||||||
|
//className="displaypartnersession"
|
||||||
|
|
||||||
|
className="displaypartnersession"
|
||||||
|
|
||||||
|
static
|
||||||
|
onClose={() => null}
|
||||||
|
|
||||||
|
PaperProps={{
|
||||||
|
|
||||||
|
|
||||||
|
className: classes.paper, // Apply the paper style
|
||||||
|
style: {
|
||||||
|
overflowY: 'unset',
|
||||||
|
position: 'absolute',
|
||||||
|
top: '7rem',
|
||||||
|
margin: "2px",
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
hideBackdrop={true}
|
||||||
|
disableScrollLock
|
||||||
|
classes={{
|
||||||
|
paper: classes.dialog
|
||||||
|
}}
|
||||||
|
|
||||||
|
PaperComponent={PaperComponent}
|
||||||
|
aria-labelledby="draggable-dialog-title"
|
||||||
|
|
||||||
|
>
|
||||||
|
<DialogTitle style={{ cursor: 'move' }} id="draggable-dialog-title"> Préinscription par le client zzz </DialogTitle>
|
||||||
|
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||||
|
<DialogContentText>
|
||||||
|
{Dialog_1_message}
|
||||||
|
</DialogContentText>
|
||||||
|
{New_Get_List_Partner_Clients_result && New_Get_List_Partner_Clients_result.length > 0 && <div className="session_caract_Dialog"> Client <br />
|
||||||
|
<Autocomplete
|
||||||
|
disablePortal
|
||||||
|
name="maj_preinsc_client_id"
|
||||||
|
id="maj_preinsc_client_id"
|
||||||
|
className="disabled_style"
|
||||||
|
|
||||||
|
value={New_Get_List_Partner_Clients_result.filter((data) => (data)._id === String(p_maj_preinsc_client_id))[0].label}
|
||||||
|
options={New_Get_List_Partner_Clients_result}
|
||||||
|
onChange={(event, value) => {
|
||||||
|
if (value && value._id) {
|
||||||
|
setp_maj_preinsc_client_id(value._id);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
setp_maj_preinsc_client_id("");
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||||
|
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||||
|
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
|
||||||
|
<div className="session_caract_Dialog">Maximum préinscription <br />
|
||||||
|
<TextField
|
||||||
|
name="maj_nb_participant"
|
||||||
|
id="maj_nb_participant"
|
||||||
|
|
||||||
|
type="number"
|
||||||
|
InputLabelProps={{
|
||||||
|
shrink: true,
|
||||||
|
}}
|
||||||
|
inputProps={{ min: "1", max: "99", step: "1" }}
|
||||||
|
disabled={false}
|
||||||
|
className="disabled_style"
|
||||||
|
value={p_maj_preinsc_nb_participant}
|
||||||
|
onChange={(e) => {
|
||||||
|
setp_maj_preinsc_nb_participant(e.target.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
|
||||||
|
<IconButton
|
||||||
|
autoFocus
|
||||||
|
onClick={Dialog_MAJ_Preinsc_Client_handleClose_buton}
|
||||||
|
color="primary"
|
||||||
|
className={classes.customizedButton}
|
||||||
|
>
|
||||||
|
<CancelPresentationIcon />
|
||||||
|
</IconButton>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
<div className="div_row_gauche">
|
||||||
|
{String(p_maj_preinsc_client_id).length > 5 && String(p_maj_preinsc_nb_participant) > 0 &&
|
||||||
|
<Button onClick={(e) => {
|
||||||
|
|
||||||
|
Update_PresInsc_Data_With_Nb_Personne_By_Client();
|
||||||
|
}}
|
||||||
|
className="bton_enreg_dialog">Envoyer </Button>}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||||
|
<Button onClick={Dialog_MAJ_Preinsc_Client_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</DialogActions>
|
||||||
|
|
||||||
|
</Dialog>
|
||||||
|
{/* FIN Dialog pour gerer les PREINSCRIPTION PAR CLIENT*/}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{/* Dialog pour gerer les CONVENTIONS ENTREPRISE*/}
|
{/* Dialog pour gerer les CONVENTIONS ENTREPRISE*/}
|
||||||
|
@ -19930,7 +20133,7 @@ const DisplayPartnerSession = (props) => {
|
||||||
onChange={liste_sessions_file_change}
|
onChange={liste_sessions_file_change}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle</a>
|
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle </a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="div_row" ref={myRef_add_session} id="myRef_add_session"> </div>
|
<div className="div_row" ref={myRef_add_session} id="myRef_add_session"> </div>
|
||||||
|
@ -22844,6 +23047,24 @@ const DisplayPartnerSession = (props) => {
|
||||||
<img src={participants} alt="ajout un participant" className="icon_plus" />
|
<img src={participants} alt="ajout un participant" className="icon_plus" />
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
|
<Tooltip className="tooltip_css" id="tooltip_maj_client" />
|
||||||
|
<a data-tooltip-id="tooltip_maj_client" data-tooltip-html=" Demander au client de saisir la liste des participants">
|
||||||
|
|
||||||
|
<Button variant="outlined"
|
||||||
|
onClick={(event) => {
|
||||||
|
setp_maj_preinsc_client_id("");
|
||||||
|
setp_maj_preinsc_nb_participant("1");
|
||||||
|
setDialog_MAJ_Preinsc_Client_open(true);
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
className="detail_class_submenu bton_add_session"
|
||||||
|
id='menu_one_participant' name='menu_one_participant'>MAJ Client zzzz<FaUserPen style={{ fontSize: '16px' }} />
|
||||||
|
|
||||||
|
</Button>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
<a href='/sample/template_import_stagiaires.csv' download>Télécharger un fichier modèle</a>
|
<a href='/sample/template_import_stagiaires.csv' download>Télécharger un fichier modèle</a>
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -20,10 +20,7 @@ import img_met_graphisme from "../mysy_img/metier_graphisme.jpg";
|
||||||
import img_met_autre from "../mysy_img/met_autre.jpg";
|
import img_met_autre from "../mysy_img/met_autre.jpg";
|
||||||
import img_met_digital from "../mysy_img/met_digital.jpg";
|
import img_met_digital from "../mysy_img/met_digital.jpg";
|
||||||
import img_met_management from "../mysy_img/met_management.jpg";
|
import img_met_management from "../mysy_img/met_management.jpg";
|
||||||
import img_met_projet from "../mysy_img/met_projet.jpg";
|
|
||||||
|
|
||||||
import img_met_market from "../mysy_img/met_market.jpg";
|
|
||||||
import img_met_autre2 from "../mysy_img/met_autre2.jpg";
|
|
||||||
import img_met_dev_perso from "../mysy_img/metier_dev_perso.jpg";
|
import img_met_dev_perso from "../mysy_img/metier_dev_perso.jpg";
|
||||||
import img_met_rh from "../mysy_img/met_rh.jpg";
|
import img_met_rh from "../mysy_img/met_rh.jpg";
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,58 @@ import Link from '@mui/material/Link';
|
||||||
import { PiDotsThree } from "react-icons/pi";
|
import { PiDotsThree } from "react-icons/pi";
|
||||||
import Popup from 'reactjs-popup';
|
import Popup from 'reactjs-popup';
|
||||||
import 'reactjs-popup/dist/index.css';
|
import 'reactjs-popup/dist/index.css';
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
import Display_Action_And_Class from "./Display_Action_And_Class";
|
import Display_Action_And_Class from "./Display_Action_And_Class";
|
||||||
|
|
||||||
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
|
||||||
|
import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline';
|
||||||
|
import Dialog from '@mui/material/Dialog';
|
||||||
|
import DialogActions from '@mui/material/DialogActions';
|
||||||
|
import DialogContent from '@mui/material/DialogContent';
|
||||||
|
import DialogContentText from '@mui/material/DialogContentText';
|
||||||
|
import DialogTitle from '@mui/material/DialogTitle';
|
||||||
|
import { IconButton } from '@material-ui/core';
|
||||||
|
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
|
||||||
|
|
||||||
|
import { makeStyles } from "@material-ui/core/styles";
|
||||||
|
import Paper from '@material-ui/core/Paper';
|
||||||
|
import Draggable from 'react-draggable';
|
||||||
|
|
||||||
|
function PaperComponent(props) {
|
||||||
|
return (
|
||||||
|
<Draggable
|
||||||
|
handle="#draggable-dialog-title"
|
||||||
|
cancel={'[class*="MuiDialogContent-root"]'}
|
||||||
|
>
|
||||||
|
<Paper {...props} />
|
||||||
|
</Draggable>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const useStyles = makeStyles((theme) => ({
|
||||||
|
|
||||||
|
dialog: {
|
||||||
|
position: 'absolute',
|
||||||
|
// left: 10,
|
||||||
|
top: 400
|
||||||
|
},
|
||||||
|
|
||||||
|
paper: {
|
||||||
|
overflowY: 'unset',
|
||||||
|
},
|
||||||
|
customizedButton: {
|
||||||
|
position: 'absolute',
|
||||||
|
left: '98%',
|
||||||
|
top: '-3%',
|
||||||
|
backgroundColor: 'lightgray',
|
||||||
|
color: 'gray',
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
function UpdateAttendeeList() {
|
function UpdateAttendeeList() {
|
||||||
|
const classes = useStyles();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const { client_id, session_id, partner_owner_recid } = useParams();
|
const { client_id, session_id, partner_owner_recid } = useParams();
|
||||||
const [isLoading, setLoading] = useState();
|
const [isLoading, setLoading] = useState();
|
||||||
|
@ -74,6 +119,7 @@ function UpdateAttendeeList() {
|
||||||
const columns_preinscrit = [
|
const columns_preinscrit = [
|
||||||
{ field: 'id', headerName: 'id', hide: true },
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
{ field: '_id', headerName: '_id', hide: true },
|
{ field: '_id', headerName: '_id', hide: true },
|
||||||
|
|
||||||
{
|
{
|
||||||
field: 'civilite', headerName: 'Civ.', minWidth: 100, flex: 1, maxWidth: 100, hide: false, editable: true,
|
field: 'civilite', headerName: 'Civ.', minWidth: 100, flex: 1, maxWidth: 100, hide: false, editable: true,
|
||||||
type: "singleSelect",
|
type: "singleSelect",
|
||||||
|
@ -101,10 +147,133 @@ function UpdateAttendeeList() {
|
||||||
{ field: 'prenom', headerName: 'prenom', minWidth: 150, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
{ field: 'prenom', headerName: 'prenom', minWidth: 150, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||||
{ field: 'email', headerName: 'email', minWidth: 150, flex: 1, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
{ field: 'email', headerName: 'email', minWidth: 150, flex: 1, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||||
|
|
||||||
|
{
|
||||||
|
field: 'status', headerName: 'Statut', minWidth: 150, flex: 1, editable: false,
|
||||||
|
renderCell: (cellValues) => {
|
||||||
|
return (
|
||||||
|
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||||
|
|
||||||
|
{cellValues.row.status && String(cellValues.row.status) === "1" && "Validé"}
|
||||||
|
{cellValues.row.status && String(cellValues.row.status) === "0" && "PréIns"}
|
||||||
|
{cellValues.row.pres_dist_hyp && String(cellValues.row.status) !== "0"
|
||||||
|
&& String(cellValues.row.status) === "1" && "N/A"}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
const columns_preinscrit_with_add_delete_bton = [
|
||||||
|
{ field: 'id', headerName: 'id', hide: true },
|
||||||
|
{ field: '_id', headerName: '_id', hide: true },
|
||||||
|
|
||||||
|
{
|
||||||
|
field: 'civilite', headerName: 'Civ.', minWidth: 100, flex: 1, maxWidth: 100, hide: false, editable: true,
|
||||||
|
type: "singleSelect",
|
||||||
|
valueOptions: [
|
||||||
|
{ value: 'm', label: 'M' },
|
||||||
|
{ value: 'mme', label: 'Mme' },
|
||||||
|
{ value: 'neutre', label: 'Neutre' }
|
||||||
|
],
|
||||||
|
renderCell: (params) => {
|
||||||
|
return (
|
||||||
|
|
||||||
|
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||||
|
|
||||||
|
{params.value && String(params.value) === "m" && "M"}
|
||||||
|
{params.value && String(params.value) === "mme" && "Mme"}
|
||||||
|
{params.value && String(params.value) === "neutre" && "Neutre"}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{ field: 'nom', headerName: 'nom', minWidth: 150, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||||
|
{ field: 'prenom', headerName: 'prenom', minWidth: 150, flex: 1, hide: false, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||||
|
{ field: 'email', headerName: 'email', minWidth: 150, flex: 1, editable: true, renderCell: (params) => <ExpandableCell_50 {...params} />, },
|
||||||
|
{
|
||||||
|
field: 'status', headerName: 'Statut', minWidth: 150, flex: 1, editable: false,
|
||||||
|
renderCell: (cellValues) => {
|
||||||
|
return (
|
||||||
|
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
|
||||||
|
|
||||||
|
{cellValues.row.status && String(cellValues.row.status) === "1" && "Validé"}
|
||||||
|
{cellValues.row.status && String(cellValues.row.status) === "0" && "PréIns"}
|
||||||
|
{cellValues.row.pres_dist_hyp && String(cellValues.row.status) !== "0"
|
||||||
|
&& String(cellValues.row.status) === "1" && "N/A"}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
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}>
|
||||||
|
×
|
||||||
|
</button>
|
||||||
|
<div className="gest_header"> MySy Information </div>
|
||||||
|
<div className="gest_content">
|
||||||
|
{' '}
|
||||||
|
|
||||||
|
En confirmant cette opération, la ligne 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_data_grid_line(event, cellValues);
|
||||||
|
//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>
|
||||||
|
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
const [document_checked, setdocument_checked] = useState("0");
|
const [document_checked, setdocument_checked] = useState("0");
|
||||||
|
|
||||||
const [Getall_Client_Communication_Contact_api, setGetall_Client_Communication_Contact_api] = useState();
|
const [Getall_Client_Communication_Contact_api, setGetall_Client_Communication_Contact_api] = useState();
|
||||||
|
@ -124,7 +293,7 @@ function UpdateAttendeeList() {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
|
|
||||||
|
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
//console.log(" In Getall_Client_Communication_Contact res.data.status = " + res.data.status);
|
//console.log(" In Getall_Client_Communication_Contact res.data.status = " + res.data.status);
|
||||||
|
@ -159,6 +328,8 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
const [Partner_Recid, setPartner_Recid] = useState("");
|
const [Partner_Recid, setPartner_Recid] = useState("");
|
||||||
const [class_internal_url, setclass_internal_url] = useState("");
|
const [class_internal_url, setclass_internal_url] = useState("");
|
||||||
|
const [max_presinscrit, setmax_presinscrit] = useState("");
|
||||||
|
const [is_client_preinsc_update_request, setis_client_preinsc_update_request] = useState("");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -186,25 +357,29 @@ function UpdateAttendeeList() {
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
//console.log(" In Getall_TrainingParticipant res.data.status = " + res.data.status);
|
//console.log(" In Getall_TrainingParticipant res.data.status = " + res.data.status);
|
||||||
//console.log(" In Getall_TrainingParticipant res.data.message r_class = " + res.data.message);
|
//console.log(" In Getall_TrainingParticipant res.data.message r_class = " + res.data.message, " -- message_global_data = ", res.data.message_global_data);
|
||||||
setGetall_TrainingParticipant_api("true");
|
setGetall_TrainingParticipant_api("true");
|
||||||
setGetall_TrainingParticipant_result(res.data.message);
|
setGetall_TrainingParticipant_result(res.data.message);
|
||||||
setRows_preinsc(res.data.message);
|
setRows_preinsc(res.data.message);
|
||||||
|
|
||||||
|
setmax_presinscrit(String(JSON.parse(res.data.message_global_data).max_presinscrit))
|
||||||
|
setis_client_preinsc_update_request(String(JSON.parse(res.data.message_global_data).is_client_preinsc_update_request))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var new_data2 = [];
|
var new_data2 = [];
|
||||||
const new_data = res.data.message.map((x) => {
|
const new_data = res.data.message.map((x) => {
|
||||||
|
|
||||||
//---
|
//---
|
||||||
var localid = JSON.parse(x).id;
|
var localid = JSON.parse(x).id;
|
||||||
var local_id = JSON.parse(x)._id;
|
var local_id = JSON.parse(x)._id;
|
||||||
|
var local_status = JSON.parse(x).status;
|
||||||
var local_nom = JSON.parse(x).nom;
|
var local_nom = JSON.parse(x).nom;
|
||||||
var local_prenom = JSON.parse(x).prenom;
|
var local_prenom = JSON.parse(x).prenom;
|
||||||
var local_email = JSON.parse(x).email;
|
var local_email = JSON.parse(x).email;
|
||||||
var local_civilite = JSON.parse(x).civilite;
|
var local_civilite = JSON.parse(x).civilite;
|
||||||
|
|
||||||
setPartner_Recid(String(JSON.parse(x).partner_owner_recid))
|
setPartner_Recid(String(JSON.parse(x).partner_owner_recid));
|
||||||
setclass_internal_url(String(JSON.parse(x).class_internal_url))
|
setclass_internal_url(String(JSON.parse(x).class_internal_url));
|
||||||
|
|
||||||
//---
|
//---
|
||||||
var node = {
|
var node = {
|
||||||
|
@ -214,6 +389,7 @@ function UpdateAttendeeList() {
|
||||||
"prenom": local_prenom,
|
"prenom": local_prenom,
|
||||||
"email": local_email,
|
"email": local_email,
|
||||||
"civilite": local_civilite,
|
"civilite": local_civilite,
|
||||||
|
"status": local_status,
|
||||||
};
|
};
|
||||||
new_data2.push(node);
|
new_data2.push(node);
|
||||||
|
|
||||||
|
@ -261,7 +437,7 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
|
|
||||||
// params = la nouvelle lignes
|
// params = la nouvelle lignes
|
||||||
|
|
||||||
|
|
||||||
var num_line = params.id; // ==> Id de la ligne changé
|
var num_line = params.id; // ==> Id de la ligne changé
|
||||||
var colomn = params.field; // ==> colonne de la ligne changé
|
var colomn = params.field; // ==> colonne de la ligne changé
|
||||||
|
@ -281,7 +457,7 @@ function UpdateAttendeeList() {
|
||||||
tmp['prenom'] = (x).prenom;
|
tmp['prenom'] = (x).prenom;
|
||||||
tmp['email'] = (x).email;
|
tmp['email'] = (x).email;
|
||||||
tmp['civilite'] = (x).civilite;
|
tmp['civilite'] = (x).civilite;
|
||||||
|
tmp['status'] = (x).status;
|
||||||
return tmp;
|
return tmp;
|
||||||
|
|
||||||
|
|
||||||
|
@ -295,6 +471,7 @@ function UpdateAttendeeList() {
|
||||||
tmp['prenom'] = new_value;
|
tmp['prenom'] = new_value;
|
||||||
tmp['email'] = (x).email;
|
tmp['email'] = (x).email;
|
||||||
tmp['civilite'] = (x).civilite;
|
tmp['civilite'] = (x).civilite;
|
||||||
|
tmp['status'] = (x).status;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
@ -307,6 +484,7 @@ function UpdateAttendeeList() {
|
||||||
tmp['prenom'] = (x).prenom;
|
tmp['prenom'] = (x).prenom;
|
||||||
tmp['email'] = (x).email;
|
tmp['email'] = (x).email;
|
||||||
tmp['civilite'] = new_value;
|
tmp['civilite'] = new_value;
|
||||||
|
tmp['status'] = (x).status;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
@ -319,6 +497,7 @@ function UpdateAttendeeList() {
|
||||||
tmp['prenom'] = (x).prenom;
|
tmp['prenom'] = (x).prenom;
|
||||||
tmp['email'] = new_value;
|
tmp['email'] = new_value;
|
||||||
tmp['civilite'] = (x).civilite;
|
tmp['civilite'] = (x).civilite;
|
||||||
|
tmp['status'] = (x).status;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
@ -331,6 +510,7 @@ function UpdateAttendeeList() {
|
||||||
tmp['prenom'] = (x).prenom;
|
tmp['prenom'] = (x).prenom;
|
||||||
tmp['email'] = (x).email;
|
tmp['email'] = (x).email;
|
||||||
tmp['civilite'] = (x).civilite;
|
tmp['civilite'] = (x).civilite;
|
||||||
|
tmp['status'] = (x).status;
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
|
|
||||||
|
@ -359,7 +539,7 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
const new_attende_dat_JSON = JSON.stringify(New_Getall_TrainingParticipant_result);
|
const new_attende_dat_JSON = JSON.stringify(New_Getall_TrainingParticipant_result);
|
||||||
|
|
||||||
// console.log(" Record_New_Attendee_Data New_Getall_TrainingParticipant_result = ", New_Getall_TrainingParticipant_result);
|
// console.log(" Record_New_Attendee_Data New_Getall_TrainingParticipant_result = ", New_Getall_TrainingParticipant_result);
|
||||||
|
|
||||||
const stored_cookie = getCookie('tokenmysypart');
|
const stored_cookie = getCookie('tokenmysypart');
|
||||||
form.append("client_id", client_id);
|
form.append("client_id", client_id);
|
||||||
|
@ -371,8 +551,8 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
axios.post(myurl, form).then(res => {
|
axios.post(myurl, form).then(res => {
|
||||||
console.log(" In Record_New_Attendee_Data res.data.status = " + res.data.status);
|
// console.log(" In Record_New_Attendee_Data res.data.status = " + res.data.status);
|
||||||
console.log(" In Record_New_Attendee_Data res.data.message r_class = " + res.data.message);
|
// console.log(" In Record_New_Attendee_Data res.data.message r_class = " + res.data.message);
|
||||||
|
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
if (String(res.data.status) === String("true")) {
|
if (String(res.data.status) === String("true")) {
|
||||||
|
@ -387,7 +567,7 @@ function UpdateAttendeeList() {
|
||||||
else {
|
else {
|
||||||
setRecord_New_Attendee_Data_api("false");
|
setRecord_New_Attendee_Data_api("false");
|
||||||
setRecord_New_Attendee_Data_message(res.data.message);
|
setRecord_New_Attendee_Data_message(res.data.message);
|
||||||
// alert(res.data.message);
|
// alert(res.data.message);
|
||||||
setdisplay_alert_mysy("1");
|
setdisplay_alert_mysy("1");
|
||||||
setalert_message(res.data.message);
|
setalert_message(res.data.message);
|
||||||
setalert_type("error");
|
setalert_type("error");
|
||||||
|
@ -416,6 +596,132 @@ function UpdateAttendeeList() {
|
||||||
setdisplay_alert_mysy("");
|
setdisplay_alert_mysy("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function add_one_ligne_to_datagrid() {
|
||||||
|
|
||||||
|
if (New_Getall_TrainingParticipant_result.length >= String(max_presinscrit)) {
|
||||||
|
setdisplay_alert_mysy("1");
|
||||||
|
setalert_message("Vous avez atteint le nombre maximum d'inscriptions autorisé");
|
||||||
|
setalert_type("warning");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (String(is_client_preinsc_update_request) === "1" && New_Getall_TrainingParticipant_result.length < String(max_presinscrit)) {
|
||||||
|
var new_data2 = [];
|
||||||
|
const new_data = New_Getall_TrainingParticipant_result.map((x) => {
|
||||||
|
//---
|
||||||
|
var localid = (x).id;
|
||||||
|
var local_id = (x)._id;
|
||||||
|
var local_nom = (x).nom;
|
||||||
|
var local_prenom = (x).prenom;
|
||||||
|
var local_email = (x).email;
|
||||||
|
var local_civilite = (x).civilite;
|
||||||
|
var local_status = (x).status;
|
||||||
|
|
||||||
|
|
||||||
|
//---
|
||||||
|
var node = {
|
||||||
|
"_id": local_id,
|
||||||
|
"id": localid,
|
||||||
|
"nom": local_nom,
|
||||||
|
"prenom": local_prenom,
|
||||||
|
"email": local_email,
|
||||||
|
"civilite": local_civilite,
|
||||||
|
"status": local_status,
|
||||||
|
};
|
||||||
|
new_data2.push(node);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//---
|
||||||
|
var node = {
|
||||||
|
"_id": "",
|
||||||
|
"id": String(New_Getall_TrainingParticipant_result.length),
|
||||||
|
"nom": "new_nom",
|
||||||
|
"prenom": "new_prenom",
|
||||||
|
"email": "new_email@email.com",
|
||||||
|
"civilite": "neutre",
|
||||||
|
"status": "0",
|
||||||
|
};
|
||||||
|
new_data2.push(node);
|
||||||
|
|
||||||
|
if (new_data2.length > 0) {
|
||||||
|
setNew_Getall_TrainingParticipant_result(new_data2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function delete_data_grid_line(event, cellValues) {
|
||||||
|
|
||||||
|
if (cellValues.row.status !== "0") {
|
||||||
|
setdisplay_alert_mysy("1");
|
||||||
|
setalert_message("Le statut soit être à 'Preins' pour être supprimable. Merci de contacter le gestionnaire de formation");
|
||||||
|
setalert_type("warning");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (String(is_client_preinsc_update_request) === "1" && New_Getall_TrainingParticipant_result.length <= String(max_presinscrit)) {
|
||||||
|
var new_data2 = [];
|
||||||
|
const new_data = New_Getall_TrainingParticipant_result.map((x) => {
|
||||||
|
|
||||||
|
|
||||||
|
if ((x).id != cellValues.row.id) {
|
||||||
|
//---
|
||||||
|
var localid = (x).id;
|
||||||
|
var local_id = (x)._id;
|
||||||
|
var local_nom = (x).nom;
|
||||||
|
var local_prenom = (x).prenom;
|
||||||
|
var local_email = (x).email;
|
||||||
|
var local_civilite = (x).civilite;
|
||||||
|
var local_status = (x).status;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//---
|
||||||
|
var node = {
|
||||||
|
"_id": local_id,
|
||||||
|
"id": localid,
|
||||||
|
"nom": local_nom,
|
||||||
|
"prenom": local_prenom,
|
||||||
|
"email": local_email,
|
||||||
|
"civilite": local_civilite,
|
||||||
|
"status": local_status,
|
||||||
|
};
|
||||||
|
new_data2.push(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (new_data2.length > 0) {
|
||||||
|
setNew_Getall_TrainingParticipant_result(new_data2);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const [Dialog_preinscrit_message, setDialog_preinscrit_message] = React.useState(false);
|
||||||
|
const [Dialog_preinscrit_open, setDialog_preinscrit_open] = React.useState(false);
|
||||||
|
function Dialog_preinscrit_handle_change_participant_session(message) {
|
||||||
|
setDialog_preinscrit_message(message);
|
||||||
|
setDialog_preinscrit_open(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Dialog_preinscrit_handleClose = () => {
|
||||||
|
//alert(" Utiliser le bouton 'fermer' ");
|
||||||
|
//setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const Dialog_preinscrit_handleClose_buton = () => {
|
||||||
|
|
||||||
|
setDialog_preinscrit_open(false);
|
||||||
|
};
|
||||||
|
const [Dialog_1_message, setDialog_1_message] = React.useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="updateattendeelist">
|
<div className="updateattendeelist">
|
||||||
|
|
||||||
|
@ -424,7 +730,7 @@ function UpdateAttendeeList() {
|
||||||
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
|
||||||
</div>}
|
</div>}
|
||||||
|
|
||||||
{/*** Affichage des messages d'alerte*/}
|
{/*** Affichage des messages d'alerte*/}
|
||||||
{display_alert_mysy && String(display_alert_mysy) === "1" &&
|
{display_alert_mysy && String(display_alert_mysy) === "1" &&
|
||||||
<Module_Alert_Confirmation alert_message={alert_message}
|
<Module_Alert_Confirmation alert_message={alert_message}
|
||||||
alert_type={alert_type}
|
alert_type={alert_type}
|
||||||
|
@ -435,41 +741,196 @@ function UpdateAttendeeList() {
|
||||||
}
|
}
|
||||||
{/*** FIN Affichage des messages d'alerte*/}
|
{/*** FIN Affichage des messages d'alerte*/}
|
||||||
|
|
||||||
<div className="div_row">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{Getall_Client_Communication_Contact_result && Getall_Client_Communication_Contact_result.length > 0 && <div className="div_row" style={{ "width": "90%", "marginLeft": "5%", "background": "white", }}>
|
|
||||||
<div style={{ textAlign: 'left' }}>
|
|
||||||
|
|
||||||
|
|
||||||
<nav style={{ textAlign: 'left' }}>
|
{/* Dialog pour gerer Un PRE/INSCRIT */}
|
||||||
<b> Bonjour {JSON.parse(Getall_Client_Communication_Contact_result).civilite} {JSON.parse(Getall_Client_Communication_Contact_result).nom} </b>
|
<Dialog
|
||||||
|
open={Dialog_preinscrit_open}
|
||||||
|
// onClose={Dialog_preinscrit_handleClose}
|
||||||
|
//className="displaypartnersession"
|
||||||
|
|
||||||
</nav>
|
className="displaypartnersession"
|
||||||
|
|
||||||
|
static
|
||||||
|
onClose={() => null}
|
||||||
|
|
||||||
|
PaperProps={{
|
||||||
|
|
||||||
|
|
||||||
|
className: classes.paper, // Apply the paper style
|
||||||
|
style: {
|
||||||
|
overflowY: 'unset',
|
||||||
|
position: 'absolute',
|
||||||
|
top: '7rem',
|
||||||
|
margin: "2px",
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
hideBackdrop={true}
|
||||||
|
disableScrollLock
|
||||||
|
classes={{
|
||||||
|
paper: classes.dialog
|
||||||
|
}}
|
||||||
|
|
||||||
|
PaperComponent={PaperComponent}
|
||||||
|
aria-labelledby="draggable-dialog-title"
|
||||||
|
|
||||||
|
>
|
||||||
|
<DialogTitle style={{ cursor: 'move' }} id="draggable-dialog-title"> Apprenant </DialogTitle>
|
||||||
|
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
|
||||||
|
<DialogContentText>
|
||||||
|
{Dialog_1_message}
|
||||||
|
</DialogContentText>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="session_caract_Dialog">Etape <br />
|
||||||
|
|
||||||
|
{/*<Autocomplete
|
||||||
|
disablePortalNew
|
||||||
|
name="duplicate_session_etape"
|
||||||
|
id="duplicate_session_etape"
|
||||||
|
className="disabled_style"
|
||||||
|
options={New_Getall_Parter_OR_Default_Session_Steps_result}
|
||||||
|
value={New_Getall_Parter_OR_Default_Session_Steps_result.filter((data) => (data).session_step_name === String(dup_p_session_etape))[0].session_step_name}
|
||||||
|
|
||||||
|
onChange={(event, value) => {
|
||||||
|
if (value && value.session_step_name) {
|
||||||
|
setdup_p_session_etape(value.session_step_name);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
setdup_p_session_etape("");
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
|
||||||
|
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
|
||||||
|
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
|
||||||
|
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
/>*/}
|
||||||
|
|
||||||
|
|
||||||
Merci de completer les informations des participants à session de formation ci-dessous. <br />
|
|
||||||
</div>
|
|
||||||
<br />
|
|
||||||
{Getall_TrainingParticipant_result && Getall_TrainingParticipant_result.length > 0 &&
|
|
||||||
<div style={{ textAlign: 'left' }}>
|
|
||||||
<b> Formation : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).title} <br />
|
|
||||||
<b> Code Session : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).title} <br />
|
|
||||||
<b> Titre Session : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).session_titre} <br />
|
|
||||||
<b> Date début : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).date_du} <br />
|
|
||||||
<b> Date fin : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).date_au} <br />
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
}
|
|
||||||
|
|
||||||
<br />
|
|
||||||
</div>}
|
{/*
|
||||||
|
|
||||||
|
<div className="session_caract_Dialog" > Date Session<br />
|
||||||
|
<div style={{ width: "45%", float: "left", textAlign: "left" }}>
|
||||||
|
<DatePicker
|
||||||
|
name="date_du"
|
||||||
|
id="date_du"
|
||||||
|
selected={new Date(moment(dup_p_date_du, "DD/MM/YYYY"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setdup_p_date_du(format(date, 'd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style enable_style datepicker_complement"
|
||||||
|
locale='fr-FR'
|
||||||
|
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div style={{ float: "left", textAlign: "center", paddingTop: "20px", fontSize: "12px" }}>
|
||||||
|
Au
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div style={{ width: "45%", float: "left", textAlign: "right" }}>
|
||||||
|
|
||||||
|
<DatePicker
|
||||||
|
name="date_du"
|
||||||
|
id="date_du"
|
||||||
|
selected={new Date(moment(dup_p_date_au, "DD/MM/YYYY"))}
|
||||||
|
onChange={(date) => {
|
||||||
|
setdup_p_date_au(format(date, 'd/MM/yyyy'));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
showTimeSelect={false}
|
||||||
|
dateFormat="dd/MM/yyyy"
|
||||||
|
className="disabled_style enable_style datepicker_complement"
|
||||||
|
locale='fr-FR'
|
||||||
|
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div> */}
|
||||||
|
|
||||||
|
</DialogContent>
|
||||||
|
|
||||||
|
<DialogActions>
|
||||||
|
|
||||||
|
<IconButton
|
||||||
|
autoFocus
|
||||||
|
onClick={Dialog_preinscrit_handleClose_buton}
|
||||||
|
color="primary"
|
||||||
|
className={classes.customizedButton}
|
||||||
|
>
|
||||||
|
<CancelPresentationIcon />
|
||||||
|
</IconButton>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
<div className="div_row_gauche">
|
||||||
|
<Button onClick={(e) => {
|
||||||
|
|
||||||
|
}}
|
||||||
|
className="bton_enreg_dialog">Dupliquer </Button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
|
||||||
|
<Button onClick={Dialog_preinscrit_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</DialogActions>
|
||||||
|
|
||||||
|
</Dialog>
|
||||||
|
{/* FIN Dialog pour gerer Un PRE/INSCRIT */}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div className="div_row">
|
<div className="div_row">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
{New_Getall_TrainingParticipant_result && New_Getall_TrainingParticipant_result.length > 0 && <div style={{ "width": "90%", "marginLeft": "5%", "background": "white", }}>
|
|
||||||
|
{Getall_Client_Communication_Contact_result && Getall_Client_Communication_Contact_result.length > 0 &&
|
||||||
|
<div className="div_row" style={{ "width": "90%", "marginLeft": "5%", "background": "white", }}>
|
||||||
|
<div style={{ textAlign: 'left' }}>
|
||||||
|
|
||||||
|
|
||||||
|
<nav style={{ textAlign: 'left' }}>
|
||||||
|
<b> Bonjour {JSON.parse(Getall_Client_Communication_Contact_result).civilite} {JSON.parse(Getall_Client_Communication_Contact_result).nom} </b>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
Merci de completer les informations des participants à session de formation ci-dessous. <br />
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
{Getall_TrainingParticipant_result && Getall_TrainingParticipant_result.length > 0 &&
|
||||||
|
<div style={{ textAlign: 'left' }}>
|
||||||
|
<b> Formation : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).title} <br />
|
||||||
|
<b> Code Session : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).title} <br />
|
||||||
|
<b> Titre Session : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).session_titre} <br />
|
||||||
|
<b> Date début : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).date_du} <br />
|
||||||
|
<b> Date fin : </b> {JSON.parse(Getall_TrainingParticipant_result[0]).date_au} <br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
<br />
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{String(is_client_preinsc_update_request) !== "1" && New_Getall_TrainingParticipant_result && New_Getall_TrainingParticipant_result.length > 0 && <div style={{ "width": "90%", "marginLeft": "5%", "background": "white", }}>
|
||||||
|
|
||||||
|
|
||||||
<div className="session_data" >
|
<div className="session_data" >
|
||||||
|
@ -484,7 +945,7 @@ function UpdateAttendeeList() {
|
||||||
[`& .${gridClasses.cell}`]: {
|
[`& .${gridClasses.cell}`]: {
|
||||||
py: 1,
|
py: 1,
|
||||||
},
|
},
|
||||||
'& .line--statut--invoiced': {
|
'& .line--inscription--done': {
|
||||||
backgroundColor: '#EAFAF1',
|
backgroundColor: '#EAFAF1',
|
||||||
color: '#239B56',
|
color: '#239B56',
|
||||||
fontWeight: '700'
|
fontWeight: '700'
|
||||||
|
@ -518,10 +979,12 @@ function UpdateAttendeeList() {
|
||||||
{
|
{
|
||||||
id: index,
|
id: index,
|
||||||
_id: item._id,
|
_id: item._id,
|
||||||
|
_id: item._id,
|
||||||
nom: item.nom,
|
nom: item.nom,
|
||||||
prenom: (item).prenom,
|
prenom: (item).prenom,
|
||||||
email: (item).email,
|
email: (item).email,
|
||||||
civilite: (item).civilite,
|
civilite: (item).civilite,
|
||||||
|
status: (item).status,
|
||||||
}
|
}
|
||||||
))}
|
))}
|
||||||
|
|
||||||
|
@ -534,6 +997,17 @@ function UpdateAttendeeList() {
|
||||||
components={{
|
components={{
|
||||||
Toolbar: GridToolbar,
|
Toolbar: GridToolbar,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
getRowClassName={(params) => {
|
||||||
|
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.status) === "1") {
|
||||||
|
return 'line--inscription--done';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
getEstimatedRowHeight={() => 200}
|
getEstimatedRowHeight={() => 200}
|
||||||
getRowHeight={() => "auto"}
|
getRowHeight={() => "auto"}
|
||||||
sx={{
|
sx={{
|
||||||
|
@ -554,7 +1028,162 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<br />
|
<br />
|
||||||
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
<div className="div_row">
|
||||||
|
{String(is_client_preinsc_update_request) !== "1" && String(document_checked) === "1" && (!Getall_TrainingParticipant_result || Getall_TrainingParticipant_result.length <= 0) && <div style={{
|
||||||
|
height: "40vh", "width": "100%",
|
||||||
|
"background": "#F2F4F4", overflow: "auto", "paddingBottom": "1rem",
|
||||||
|
"marginTop": "5rem", "color": "red", fontWeight: '700', "fontSize": "20px"
|
||||||
|
}}>
|
||||||
|
|
||||||
|
Le document est invalide
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
{String(is_client_preinsc_update_request) === "1" && String(max_presinscrit) > "0" &&
|
||||||
|
<div>
|
||||||
|
<div className="div_row" style={{ "width": "90%", "marginLeft": "5%", "background": "white", "textAlign": 'left', "marginBottom": "2rem" }}>
|
||||||
|
<b> Inscrire ou mettre à jour les participants à la formation. Maxium autorisé : {max_presinscrit} </b><br />
|
||||||
|
Procedure : <br />
|
||||||
|
Pour mettre à jour une cellule : Double cliquer sur la cellule et modifier l'information. <br />
|
||||||
|
Pour ajouter ou supprimer une ligne : Utiliser les boutons.
|
||||||
|
<br />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{New_Getall_TrainingParticipant_result && New_Getall_TrainingParticipant_result.length > 0 && <div style={{ "width": "90%", "marginLeft": "5%", "background": "white", }}>
|
||||||
|
|
||||||
|
<div className="session_data" >
|
||||||
|
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
|
||||||
|
<Box
|
||||||
|
sx={{
|
||||||
|
height: 500,
|
||||||
|
width: '100%',
|
||||||
|
paddingRight: '2px',
|
||||||
|
|
||||||
|
|
||||||
|
[`& .${gridClasses.cell}`]: {
|
||||||
|
py: 1,
|
||||||
|
},
|
||||||
|
'& .line--inscription--done': {
|
||||||
|
backgroundColor: '#EAFAF1',
|
||||||
|
color: '#239B56',
|
||||||
|
fontWeight: '700'
|
||||||
|
|
||||||
|
},
|
||||||
|
"& .MuiDataGrid-columnHeaders": {
|
||||||
|
backgroundColor: "#c8cfd5",
|
||||||
|
color: "black",
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
>
|
||||||
|
<DataGrid
|
||||||
|
|
||||||
|
onCellEditCommit={OnchangeCellDataGrid}
|
||||||
|
editMode="cell"
|
||||||
|
|
||||||
|
|
||||||
|
checkboxSelection
|
||||||
|
onSelectionModelChange={(newSelectionModel) => {
|
||||||
|
setselectionModel_preinsc(newSelectionModel);
|
||||||
|
//console.log("ch selected--" + newSelectionModel);
|
||||||
|
}}
|
||||||
|
selectionModel={selectionModel_preinsc}
|
||||||
|
|
||||||
|
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
||||||
|
rows={New_Getall_TrainingParticipant_result.map((item, index) => (
|
||||||
|
{
|
||||||
|
id: index,
|
||||||
|
_id: item._id,
|
||||||
|
nom: item.nom,
|
||||||
|
prenom: (item).prenom,
|
||||||
|
email: (item).email,
|
||||||
|
civilite: (item).civilite,
|
||||||
|
status: (item).status,
|
||||||
|
}
|
||||||
|
))}
|
||||||
|
|
||||||
|
columns={columns_preinscrit_with_add_delete_bton}
|
||||||
|
|
||||||
|
isCellEditable={(params) => params.row.status === "0"}
|
||||||
|
|
||||||
|
pageSize={10}
|
||||||
|
className="datagridclass"
|
||||||
|
|
||||||
|
|
||||||
|
rowsPerPageOptions={[10]}
|
||||||
|
disableSelectionOnClick
|
||||||
|
components={{
|
||||||
|
Toolbar: GridToolbar,
|
||||||
|
}}
|
||||||
|
|
||||||
|
getRowClassName={(params) => {
|
||||||
|
|
||||||
|
// Pour la gestion de la couleur de zone double cliquée
|
||||||
|
if (String(params.row.status) === "1") {
|
||||||
|
return 'line--inscription--done';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}}
|
||||||
|
|
||||||
|
getEstimatedRowHeight={() => 200}
|
||||||
|
getRowHeight={() => "auto"}
|
||||||
|
sx={{
|
||||||
|
"& .MuiDataGrid-cellContent": {
|
||||||
|
minHeight: 50,
|
||||||
|
|
||||||
|
},
|
||||||
|
[`& .${gridClasses.cell}`]: {
|
||||||
|
py: 1,
|
||||||
|
},
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
|
|
||||||
|
<br />
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row" style={{ "border": "None", marginBottom: "1rem" }}>
|
||||||
|
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
|
||||||
|
<nav style={{
|
||||||
|
"textAlign": 'right', width: '15rem', color: '#1976d2',
|
||||||
|
boxSizing: 'border-box', border: 'none', margin: 'auto', 'marginRight': '10px',
|
||||||
|
'cursor': 'pointer'
|
||||||
|
}} onClick={(event) => {
|
||||||
|
add_one_ligne_to_datagrid();
|
||||||
|
}}> <AddCircleOutlineIcon />1 ligne </nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
<div className="div_row" style={{ width: '90%', marginLeft: '5%', marginTop: '1rem' }}>
|
||||||
|
<div className="div_row_gauche" style={{ "textAlign": 'left', }}>
|
||||||
|
|
||||||
<Popup
|
<Popup
|
||||||
trigger={
|
trigger={
|
||||||
|
@ -605,44 +1234,34 @@ function UpdateAttendeeList() {
|
||||||
|
|
||||||
</div>
|
</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={(event) => {
|
<Button variant="contained" className="bton_annule" onClick={(event) => {
|
||||||
history.push("/");
|
history.push("/");
|
||||||
}} >Annuler
|
}} >Annuler
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="div_row" style={{ "border": "None" }}>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style={{ "width": "100%", "background": "#F2F4F4", overflow: "auto", "paddingBottom": "1rem" }}>
|
|
||||||
<br />
|
|
||||||
|
|
||||||
{class_internal_url && String(class_internal_url).length > 2 && <div className="question_box_entete">
|
|
||||||
<Display_Action_And_Class classId={class_internal_url} action={""} />
|
|
||||||
|
|
||||||
</div>}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>}
|
|
||||||
|
|
||||||
<div className="div_row">
|
|
||||||
{String(document_checked) === "1" && (!Getall_TrainingParticipant_result || Getall_TrainingParticipant_result.length <= 0) && <div style={{
|
|
||||||
height: "40vh", "width": "100%",
|
|
||||||
"background": "#F2F4F4", overflow: "auto", "paddingBottom": "1rem",
|
|
||||||
"marginTop":"5rem", "color":"red", fontWeight:'700', "fontSize":"20px"
|
|
||||||
}}>
|
|
||||||
|
|
||||||
Le document est invalide
|
|
||||||
|
|
||||||
</div>}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div className="div_row">
|
<div className="div_row">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="div_row" style={{ "border": "None" }}>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style={{ "width": "100%", "background": "#F2F4F4", overflow: "auto", "paddingBottom": "1rem" }}>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
{class_internal_url && String(class_internal_url).length > 2 && <div className="question_box_entete">
|
||||||
|
<Display_Action_And_Class classId={class_internal_url} action={""} />
|
||||||
|
|
||||||
|
</div>}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useRef, useState, useEffect } from "react";
|
import React, { useRef, useState, useEffect } from "react";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import "./new_homepage.css";
|
import "./new_homepage.css";
|
||||||
|
import { Helmet } from "react-helmet";
|
||||||
import WhyUsLayout from './WhyUsLayout.js';
|
import WhyUsLayout from './WhyUsLayout.js';
|
||||||
import LogoCloud from './LogoCloud.js';
|
import LogoCloud from './LogoCloud.js';
|
||||||
import VisionSection from './VisionSection.js';
|
import VisionSection from './VisionSection.js';
|
||||||
|
@ -25,6 +25,14 @@ const New_C_A_Propos_2025 = (props) => {
|
||||||
return (
|
return (
|
||||||
|
|
||||||
<div className="new_homepage_2025">
|
<div className="new_homepage_2025">
|
||||||
|
<Helmet>
|
||||||
|
<title>Éditeur Français de logiciels de gestion pour organismes de formation - Gestion administrative, CRM, E-Learning, Marketplace</title>
|
||||||
|
<meta name="description" content="Éditeur Français de logiciels pour organismes de formation. Avec notre solution Tout-en-Un, Nous automatisons les étapes Qualiopi (Inscription, Documents personnalisés, Les émargements sécurisés, Les évaluations, etc). Votre Le bilan pédagogique et financier est généré automatiquement." />
|
||||||
|
<meta name="robots" content="index,follow" />
|
||||||
|
<meta name="title" content="Éditeur Français de logiciels de gestion pour organismes de formation - Gestion administrative, CRM, E-Learning, Marketplace" />
|
||||||
|
<link rel="canonical" href={window.location.href} />
|
||||||
|
|
||||||
|
</Helmet>
|
||||||
<div className="fonctionnalite_Background">
|
<div className="fonctionnalite_Background">
|
||||||
<div className="title_and_cat">
|
<div className="title_and_cat">
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue