10/12/22 - 16h30

recette2
cherif 2022-12-10 16:34:26 +01:00
parent 481a72929e
commit 442ea793c9
4 changed files with 188 additions and 166 deletions

View File

@ -0,0 +1,2 @@
date_debut;date_fin;nb_participant;adresse;code_postal;ville;session_status;date_debut_inscription;date_fin_inscription
01/01/2023;05/01/2023;12;2 place de la republique;77680;roissy en brie;1;10/12/2022;30/12/2022
1 date_debut date_fin nb_participant adresse code_postal ville session_status date_debut_inscription date_fin_inscription
2 01/01/2023 05/01/2023 12 2 place de la republique 77680 roissy en brie 1 10/12/2022 30/12/2022

View File

@ -0,0 +1,2 @@
prenom;nom;employeur;telephone;email;modefinancement;opco;status;prix
sekou;balde;employeur;telephone;billardman1@yahoo.fr;modefinancement;opco;1;12
1 prenom nom employeur telephone email modefinancement opco status prix
2 sekou balde employeur telephone billardman1@yahoo.fr modefinancement opco 1 12

View File

@ -653,6 +653,39 @@ function GestionAdministrative(props) {
} }
const [GetCurrentClass_trainingsession_api, setGetCurrentClass_trainingsession_api] = useState();
const [GetCurrentClass_trainingsession_message, setGetCurrentClass_trainingsession_message] = useState();
const [GetCurrentClass_trainingsession_result, setGetCurrentClass_trainingsession_result] = useState();
function GetCurrentClass_trainingsession(event) {
var form = new FormData();
form.append("class_internal_url", internal_url);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllValideSessionFormation_List/";
axios.post(myurl, form).then(res => {
if (res.data.status != "false") {
console.log(" In GetCurrentClass_trainingsession res.data.status = " + res.data.status);
console.log(" In GetCurrentClass_trainingsession res.data.message r_class = " + res.data.message);
setGetCurrentClass_trainingsession_api("true");
setGetCurrentClass_trainingsession_result(res.data.message);
}
else {
setGetCurrentClass_trainingsession_api("false");
setGetCurrentClass_trainingsession_message(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( GetCurrentClass_trainingsession = ', error);
setGetCurrentClass_trainingsession_api("false");
//setmyApimyApiMessage("")
})
}
/* Envoi de l'envoi de l'email de confirmation de la validation de l'inscription */ /* Envoi de l'envoi de l'email de confirmation de la validation de l'inscription */
function handleClick_resend_conf_mail(event, cellValues) { function handleClick_resend_conf_mail(event, cellValues) {
var email = cellValues.row.email; var email = cellValues.row.email;
@ -798,6 +831,7 @@ function GestionAdministrative(props) {
useEffect(() => { useEffect(() => {
GetCurrentClass(); GetCurrentClass();
GetCurrentClass_trainingsession();
window.scrollTo(0, 0); window.scrollTo(0, 0);
@ -1384,6 +1418,8 @@ function GestionAdministrative(props) {
const [participant_file_name, setparticipant_file_name] = useState(); const [participant_file_name, setparticipant_file_name] = useState();
function submenu_import_participant() { function submenu_import_participant() {
setparticipant_file_name();
setliste_participants_file_change_api();
hiddenFileInput.current.click(); hiddenFileInput.current.click();
} }
@ -1423,7 +1459,7 @@ function GestionAdministrative(props) {
) )
.then((response) => response.json()) .then((response) => response.json())
.then((result) => { .then((result) => {
if (String(result['message']) === String("true")) { if (String(result['status']) === String("true")) {
//console.log('Success:', result['message']); //console.log('Success:', result['message']);
setliste_participants_file_change_result(result['message']); setliste_participants_file_change_result(result['message']);
setliste_participants_file_change_api("true"); setliste_participants_file_change_api("true");
@ -1441,6 +1477,72 @@ function GestionAdministrative(props) {
}; };
const [session_file_name, setsession_file_name] = useState();
function submenu_import_session() {
setsession_file_name();
setliste_sessions_file_change_api();
hiddenFileInput_session.current.click();
}
const hiddenFileInput_session = React.useRef(null);
const [liste_sessions_file_change_api, setliste_sessions_file_change_api] = useState();
const [liste_sessions_file_change_result, setliste_sessions_file_change_result] = useState();
const [liste_sessions_file_change_message, setliste_sessions_file_change_message] = useState();
const liste_sessions_file_change = event => {
const fileUploaded = event.target.files[0];
let file_size = event.target.files[0].size;
let file_type = event.target.files[0].type;
//console.log("file_size = ",file_size," file_type = ",file_type);
if (file_size > 1000000) {
alert("Le fichier ne doit pas depasser un 1 Méga octets");
return;
}
setsession_file_name(event.target.files[0].name);
const formData = new FormData();
formData.append('File', fileUploaded);
//formData.append('token', 'K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA');
const stored_cookie = getCookie('tokenmysypart');
formData.append("token", stored_cookie);
formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation_mass/",
{
method: 'POST',
body: formData,
}
)
.then((response) => response.json())
.then((result) => {
console.log(" ## result['status'] = ", result['status'])
if (String(result['status']) === String("true")) {
//console.log('Success:', result['message']);
setliste_sessions_file_change_result(result['message']);
setliste_sessions_file_change_api("true");
GetCurrentClass_trainingsession();
}
else {
setliste_sessions_file_change_message(result['message']);
setliste_sessions_file_change_api("false");
}
})
.catch((error) => {
console.error('Error:', error);
setliste_sessions_file_change_api("false");
});
};
return ( return (
<div className='gestionadministrative'> <div className='gestionadministrative'>
<Helmet> <Helmet>
@ -1453,8 +1555,8 @@ function GestionAdministrative(props) {
<div className="div_mobile"> <div className="div_mobile">
<div className="zone_data"> <div className="zone_data">
<h3> Gestion Administrative de {classtitle} <h4> Gestion Administrative de : <i><u> {classtitle} </u> </i>
</h3> </h4>
<div className="div_row session_data" style={{ "border": "None" }}> <div className="div_row session_data" style={{ "border": "None" }}>
@ -1499,178 +1601,71 @@ function GestionAdministrative(props) {
/> />
</div> </div>
<div className="training_caract">
<TextField
name="published"
select
label="Publié"
value={mypublished}
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
>
</TextField>
</div>
<div className="training_caract">
<TextField
name="presentiel"
select
label="Présentiel"
value={mypresence}
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
>
</TextField>
</div>
<div className="training_caract">
<TextField
name="distentiel"
select
label="A distance"
value={mydistance}
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
>
</TextField>
</div>
<div className="training_caract">
<TextField
required
name="domaine"
label="Domaine"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="training_caract">
<TextField
name="price"
label="Prix"
type="number"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="training_caract">
<TextField
name="duree"
label="Duree (jour)"
type="number"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="training_caract">
<TextField
name="url"
label="site web"
type="text"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="training_caract">
<TextField
name="metier"
label="metier"
type="text"
InputLabelProps={{
shrink: true,
}}
disabled={true}
className="disabled_style"
/>
</div>
<div className="training_caract">
<TextField
name="note"
id="note"
label="Note"
type="number"
InputLabelProps={{
shrink: true,
}}
inputProps={{ min: "1", max: "5", step: "0.5" }}
disabled={true}
className="disabled_style"
/>
</div>
</div> </div>
</div> </div>
<div className="div_row" style={{ "border": "None" }}> <div className="div_row" style={{ "border": "None", "background":'#F8F9F9', "padding":'5px'}}>
<div className="div_row" style={{ "border": "None" }}> <div className="div_row" style={{ "border": "None" }}>
<div className="div_row" style={{ "border": "None" }}> <div className="div_row" style={{ "border": "None" }}>
&nbsp; <br /> &nbsp; <br />
<div className="div_row_gauche" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
Importer des sessions de formation <br />
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle</a>
</div>
<div className="div_row_droite">
<Button variant="outlined" onClick={submenu_import_session} className="detail_class_submenu" style={{
"background": "#c8cfd5",
"minWidth": "15rem", "color": "black", "width": "auto"
}}
id='menu_import_participant' name='menu_import_participant'>Choisir un fichier et importer des Sessions &nbsp; <SendIcon />
</Button> <br />
<i>{session_file_name}</i><br />
{String(liste_sessions_file_change_api) === String("true") && <nav className="okUpdateData"> Les Sessions ont été correctement importés</nav>}
{String(liste_sessions_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_sessions_file_change_message} </nav>}
<input type="file"
accept=".csv"
ref={hiddenFileInput_session}
style={{ display: 'none' }}
name="liste_sessions_file"
onChange={liste_sessions_file_change}
/>
</div>
</div> </div>
<div className="div_row_gauche">
<div className="div_row_gauche" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
Choisir une session Choisir une session
</div> </div>
<div className="div_row_droite"> <div className="div_row_droite">
{GetCurrentClass_result &&
GetCurrentClass_result.map((formation) => (
<div style={{
display: "inline-block", width: "100%",
textAlign: "right", paddingLeft: "0.5rem"
}} >
<select id="session_liste" value={mysession} onChange={handleChangeSession} className="selectsession">
<option value="">Choisir</option>
{
JSON.parse(formation).datelieu.map((session) => <option value={session.session_id}>
{session.date_du} - {session.date_au} à {session.adresse} {session.ville} {session.code_postal} <div className="field_droite">
<select id="session_liste" value={mysession} onChange={handleChangeSession} className="selectsession">
<option value="">Choisir </option>
{GetCurrentClass_trainingsession_result &&
GetCurrentClass_trainingsession_result.map((session) => (
<option value={(JSON.parse(session).formation_session_id)}>
{(JSON.parse(session).date_debut).substring(0, 10)} au {(JSON.parse(session).date_fin).substring(0, 10)}
- {(JSON.parse(session).adresse)} &nbsp;{(JSON.parse(session).code_postal)}
</option>)
}
</select>
</div> </option>
))} ))}
</select>
</div>
</div> </div>
@ -1702,7 +1697,11 @@ function GestionAdministrative(props) {
name="sessiondatedebut" name="sessiondatedebut"
id="sessiondatedebut" id="sessiondatedebut"
selected={SessionstartDate} selected={SessionstartDate}
onChange={(date) => setSessionstartDate(date)} onChange={(date) => {
setSessionstartDate(date);
setsessionChanged(true);
}
}
showTimeSelect showTimeSelect
filterTime={filterPassedTime_start} filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy HH:mm" dateFormat="dd/MM/yyyy HH:mm"
@ -1718,7 +1717,11 @@ function GestionAdministrative(props) {
name="sessiondatefin" name="sessiondatefin"
id="sessiondatefin" id="sessiondatefin"
selected={SessionendDate} selected={SessionendDate}
onChange={(date) => setSessionendDate(date)} onChange={(date) => {
setSessionendDate(date);
setsessionChanged(true);
}
}
showTimeSelect showTimeSelect
filterTime={filterPassedTime_end} filterTime={filterPassedTime_end}
dateFormat="dd/MM/yyyy HH:mm" dateFormat="dd/MM/yyyy HH:mm"
@ -1793,7 +1796,12 @@ function GestionAdministrative(props) {
name="sessiondatedebutinscription" name="sessiondatedebutinscription"
id="sessiondatedebutinscription" id="sessiondatedebutinscription"
selected={SessionstartDateInscription} selected={SessionstartDateInscription}
onChange={(date) => setSessionstartDateInscription(date)} onChange={(date) => {
setSessionstartDateInscription(date);
setsessionChanged(true);
}
}
showTimeSelect showTimeSelect
//filterTime={filterPassedTime_start} //filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy HH:mm" dateFormat="dd/MM/yyyy HH:mm"
@ -1810,7 +1818,11 @@ function GestionAdministrative(props) {
name="sessiondatefininscription" name="sessiondatefininscription"
id="sessiondatefininscription" id="sessiondatefininscription"
selected={SessionendDateInscription} selected={SessionendDateInscription}
onChange={(date) => setSessionendDateInscription(date)} onChange={(date) => {
setSessionendDateInscription(date);
setsessionChanged(true);
}
}
showTimeSelect showTimeSelect
//filterTime={filterPassedTime_end} //filterTime={filterPassedTime_end}
dateFormat="dd/MM/yyyy HH:mm" dateFormat="dd/MM/yyyy HH:mm"
@ -2070,14 +2082,16 @@ function GestionAdministrative(props) {
<Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu" style={{ <Button variant="outlined" onClick={submenu_import_participant} className="detail_class_submenu" style={{
"background": "#c8cfd5", "background": "#c8cfd5",
"width": "15rem", "color": "black" "minWidth": "15rem", "color": "black", "width": "auto"
}} }}
id='menu_import_participant' name='menu_import_participant'>Import participants &nbsp; <SendIcon /> id='menu_import_participant' name='menu_import_participant'>Choisir une fichier et Importer les participants &nbsp; <SendIcon />
</Button> <br /> </Button> <br />
<a href='/sample/template_import_stagiaires.csv' download>Télécharger un fichier modèle</a>
<br />
<i>{participant_file_name}</i><br /> <i>{participant_file_name}</i><br />
{String(liste_participants_file_change_api) === String("false") && <nav className="okUpdateData"> Les participants ont été correctement importés</nav>} {String(liste_participants_file_change_api) === String("true") && <nav className="okUpdateData"> Les participants ont été correctement importés</nav>}
{String(liste_participants_file_change_api) !== String("false") && <nav className="koUpdateData"> {liste_participants_file_change_message} </nav>} {String(liste_participants_file_change_api) === String("false") && <nav className="koUpdateData"> {liste_participants_file_change_message} </nav>}
<input type="file" <input type="file"
accept=".csv" accept=".csv"

View File

@ -36,6 +36,7 @@
//border-width:0.01rem; //border-width:0.01rem;
width: 65%; width: 65%;
border-radius: 1rem; border-radius: 1rem;
text-align: right;
} }
.selectsession { .selectsession {
@ -245,6 +246,7 @@
//border-width:0.01rem; //border-width:0.01rem;
width: 45%; width: 45%;
border-radius: 1rem; border-radius: 1rem;
text-align: right;
} }
.selectsession { .selectsession {
@ -456,6 +458,7 @@
//border-width:0.01rem; //border-width:0.01rem;
width: 45%; width: 45%;
border-radius: 1rem; border-radius: 1rem;
text-align: right;
} }
.selectsession { .selectsession {
@ -670,6 +673,7 @@
//border-width:0.01rem; //border-width:0.01rem;
width: 45%; width: 45%;
border-radius: 1rem; border-radius: 1rem;
text-align: right;
} }
.selectsession { .selectsession {