10/12/22 - 16h30
parent
481a72929e
commit
442ea793c9
|
@ -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
|
|
|
@ -0,0 +1,2 @@
|
|||
prenom;nom;employeur;telephone;email;modefinancement;opco;status;prix
|
||||
sekou;balde;employeur;telephone;billardman1@yahoo.fr;modefinancement;opco;1;12
|
|
|
@ -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 */
|
||||
function handleClick_resend_conf_mail(event, cellValues) {
|
||||
var email = cellValues.row.email;
|
||||
|
@ -798,6 +831,7 @@ function GestionAdministrative(props) {
|
|||
|
||||
useEffect(() => {
|
||||
GetCurrentClass();
|
||||
GetCurrentClass_trainingsession();
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
|
@ -1384,6 +1418,8 @@ function GestionAdministrative(props) {
|
|||
|
||||
const [participant_file_name, setparticipant_file_name] = useState();
|
||||
function submenu_import_participant() {
|
||||
setparticipant_file_name();
|
||||
setliste_participants_file_change_api();
|
||||
hiddenFileInput.current.click();
|
||||
}
|
||||
|
||||
|
@ -1423,7 +1459,7 @@ function GestionAdministrative(props) {
|
|||
)
|
||||
.then((response) => response.json())
|
||||
.then((result) => {
|
||||
if (String(result['message']) === String("true")) {
|
||||
if (String(result['status']) === String("true")) {
|
||||
//console.log('Success:', result['message']);
|
||||
setliste_participants_file_change_result(result['message']);
|
||||
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 (
|
||||
<div className='gestionadministrative'>
|
||||
<Helmet>
|
||||
|
@ -1453,8 +1555,8 @@ function GestionAdministrative(props) {
|
|||
<div className="div_mobile">
|
||||
|
||||
<div className="zone_data">
|
||||
<h3> Gestion Administrative de {classtitle}
|
||||
</h3>
|
||||
<h4> Gestion Administrative de : <i><u> {classtitle} </u> </i>
|
||||
</h4>
|
||||
|
||||
|
||||
<div className="div_row session_data" style={{ "border": "None" }}>
|
||||
|
@ -1499,178 +1601,71 @@ function GestionAdministrative(props) {
|
|||
/>
|
||||
</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 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" }}>
|
||||
<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_gauche">
|
||||
<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 <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 className="div_row_gauche" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
|
||||
Choisir une session
|
||||
</div>
|
||||
|
||||
<div className="div_row_droite">
|
||||
|
||||
|
||||
{GetCurrentClass_result &&
|
||||
GetCurrentClass_result.map((formation) => (
|
||||
|
||||
<div style={{
|
||||
display: "inline-block", width: "100%",
|
||||
textAlign: "right", paddingLeft: "0.5rem"
|
||||
}} >
|
||||
|
||||
<div className="field_droite">
|
||||
<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}>
|
||||
<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)} {(JSON.parse(session).code_postal)}
|
||||
|
||||
|
||||
{session.date_du} - {session.date_au} à {session.adresse} {session.ville} {session.code_postal}
|
||||
|
||||
|
||||
</option>)
|
||||
}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
))}
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -1702,7 +1697,11 @@ function GestionAdministrative(props) {
|
|||
name="sessiondatedebut"
|
||||
id="sessiondatedebut"
|
||||
selected={SessionstartDate}
|
||||
onChange={(date) => setSessionstartDate(date)}
|
||||
onChange={(date) => {
|
||||
setSessionstartDate(date);
|
||||
setsessionChanged(true);
|
||||
}
|
||||
}
|
||||
showTimeSelect
|
||||
filterTime={filterPassedTime_start}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
|
@ -1718,7 +1717,11 @@ function GestionAdministrative(props) {
|
|||
name="sessiondatefin"
|
||||
id="sessiondatefin"
|
||||
selected={SessionendDate}
|
||||
onChange={(date) => setSessionendDate(date)}
|
||||
onChange={(date) => {
|
||||
setSessionendDate(date);
|
||||
setsessionChanged(true);
|
||||
}
|
||||
}
|
||||
showTimeSelect
|
||||
filterTime={filterPassedTime_end}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
|
@ -1793,7 +1796,12 @@ function GestionAdministrative(props) {
|
|||
name="sessiondatedebutinscription"
|
||||
id="sessiondatedebutinscription"
|
||||
selected={SessionstartDateInscription}
|
||||
onChange={(date) => setSessionstartDateInscription(date)}
|
||||
onChange={(date) => {
|
||||
setSessionstartDateInscription(date);
|
||||
setsessionChanged(true);
|
||||
}
|
||||
|
||||
}
|
||||
showTimeSelect
|
||||
//filterTime={filterPassedTime_start}
|
||||
dateFormat="dd/MM/yyyy HH:mm"
|
||||
|
@ -1810,7 +1818,11 @@ function GestionAdministrative(props) {
|
|||
name="sessiondatefininscription"
|
||||
id="sessiondatefininscription"
|
||||
selected={SessionendDateInscription}
|
||||
onChange={(date) => setSessionendDateInscription(date)}
|
||||
onChange={(date) => {
|
||||
setSessionendDateInscription(date);
|
||||
setsessionChanged(true);
|
||||
}
|
||||
}
|
||||
showTimeSelect
|
||||
//filterTime={filterPassedTime_end}
|
||||
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={{
|
||||
"background": "#c8cfd5",
|
||||
"width": "15rem", "color": "black"
|
||||
"minWidth": "15rem", "color": "black", "width": "auto"
|
||||
}}
|
||||
id='menu_import_participant' name='menu_import_participant'>Import participants <SendIcon />
|
||||
id='menu_import_participant' name='menu_import_participant'>Choisir une fichier et Importer les participants <SendIcon />
|
||||
</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 />
|
||||
{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("false") && <nav className="koUpdateData"> {liste_participants_file_change_message} </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>}
|
||||
|
||||
<input type="file"
|
||||
accept=".csv"
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
//border-width:0.01rem;
|
||||
width: 65%;
|
||||
border-radius: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.selectsession {
|
||||
|
@ -245,6 +246,7 @@
|
|||
//border-width:0.01rem;
|
||||
width: 45%;
|
||||
border-radius: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.selectsession {
|
||||
|
@ -456,6 +458,7 @@
|
|||
//border-width:0.01rem;
|
||||
width: 45%;
|
||||
border-radius: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.selectsession {
|
||||
|
@ -670,6 +673,7 @@
|
|||
//border-width:0.01rem;
|
||||
width: 45%;
|
||||
border-radius: 1rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.selectsession {
|
||||
|
|
Loading…
Reference in New Issue