3259 lines
138 KiB
JavaScript
3259 lines
138 KiB
JavaScript
import React, { useState, useEffect, useRef } from "react";
|
|
import { useForm } from "react-hook-form";
|
|
import { getCookie, setCookie } from 'react-use-cookie';
|
|
import Box from '@mui/material/Box';
|
|
import { useParams } from 'react-router-dom'
|
|
import { Helmet } from "react-helmet";
|
|
import Footer from "./Fotter";
|
|
import Header from "./Header";
|
|
import { Button, } from "reactstrap";
|
|
import axios from "axios";
|
|
import TextField from '@mui/material/TextField';
|
|
import MenuItem from '@mui/material/MenuItem';
|
|
import { AiOutlineEdit } from "react-icons/ai";
|
|
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint } from "react-icons/fc";
|
|
import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid';
|
|
import Popup from 'reactjs-popup';
|
|
import 'reactjs-popup/dist/index.css';
|
|
import DatePicker from "react-datepicker";
|
|
import "react-datepicker/dist/react-datepicker.css";
|
|
import setHours from "date-fns/setHours";
|
|
import setMinutes from "date-fns/setMinutes";
|
|
import ToggleSwitch from "./ToggleSwitch";
|
|
import { format } from 'date-fns'
|
|
import moment from "moment";
|
|
import fileDownload from 'js-file-download'
|
|
import { ConsoleView } from "react-device-detect";
|
|
import { confirmAlert } from 'react-confirm-alert';
|
|
import SendIcon from '@mui/icons-material/Send';
|
|
import { FcViewDetails } from "react-icons/fc";
|
|
import parse from 'html-react-parser'
|
|
import { Editor } from '@tinymce/tinymce-react';
|
|
|
|
|
|
function GestionAdministrative(props) {
|
|
|
|
const { internal_url } = useParams();
|
|
const [mypresence, setmypresence] = useState("");
|
|
const [mypublished, setmypublished] = useState("");
|
|
const [mydistance, setmydistance] = useState("");
|
|
|
|
const [classtitle, setclasstitle] = useState("");
|
|
|
|
const columns_preinscrit = [
|
|
{ field: 'id', headerName: 'id', hide: true },
|
|
{ field: 'email', headerName: 'email', width: 200, hideable: false, flex: 1 },
|
|
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
|
|
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: true },
|
|
{ field: 'employeur', headerName: 'Employeur', width: 200, hide: false, editable: true },
|
|
{ field: 'opco', headerName: 'Centre Opco', width: 150, hide: false, editable: true },
|
|
{ field: 'modefinancement', headerName: 'Financement', width: 150, hide: false, editable: true },
|
|
{ field: 'amount', headerName: 'Montant Formation', width: 150, type: 'number', hideable: false, flex: 1, editable: true },
|
|
{
|
|
field: "update", headerName: 'Mise à jour',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Popup
|
|
trigger={<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_accept(event, cellValues);
|
|
}}
|
|
>
|
|
<FcAcceptDatabase />
|
|
|
|
</Button>}
|
|
modal
|
|
nested
|
|
position="center center"
|
|
>
|
|
{close => (
|
|
<div>
|
|
<button className="gest_close" onClick={close}>
|
|
×
|
|
</button>
|
|
<div className="gest_header"> MySy Info </div>
|
|
<div className="gest_content">
|
|
{' '}
|
|
|
|
Confirmer la mise à jour des informations du stagiaire
|
|
</div>
|
|
<div className="gest_actions">
|
|
<div style={{ "width": "45%", "float": "left" }}>
|
|
<button className="gest_bton_popup" onClick={(event) => {
|
|
handleClick_update_data(event, cellValues);
|
|
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>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
{
|
|
field: "valide", headerName: 'Valider',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Popup
|
|
trigger={<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_accept(event, cellValues);
|
|
}}
|
|
>
|
|
<FcApproval />
|
|
|
|
</Button>}
|
|
modal
|
|
nested
|
|
position="center center"
|
|
>
|
|
{close => (
|
|
<div>
|
|
<button className="gest_close" onClick={close}>
|
|
×
|
|
</button>
|
|
<div className="gest_header"> MySy Info </div>
|
|
<div className="gest_content">
|
|
{' '}
|
|
|
|
En confirmant cette opération, l'inscription du stagiaire sera définitivement validée. <br />
|
|
Il (le stagiaire) sera automatiquement notifié par email de la validation de son inscription. <br />
|
|
Le stagiaire passera de l'onglet "préinscrit" vers l'onglet "inscription".<br />
|
|
</div>
|
|
<div className="gest_actions">
|
|
<div style={{ "width": "45%", "float": "left" }}>
|
|
<button className="gest_bton_popup" onClick={(event) => {
|
|
handleClick_accept(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>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
{
|
|
field: "refuse", headerName: 'Refuser',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Popup
|
|
trigger={<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_refuse(event, cellValues);
|
|
}}
|
|
>
|
|
<FcCancel />
|
|
|
|
</Button>}
|
|
modal
|
|
nested
|
|
position="center center"
|
|
>
|
|
{close => (
|
|
<div>
|
|
<button className="gest_close" onClick={close}>
|
|
×
|
|
</button>
|
|
<div className="gest_header"> MySy Info </div>
|
|
<div className="gest_content">
|
|
{' '}
|
|
|
|
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> refusée</font></i>. <br />
|
|
Il (le stagiaire) sera automatiquement <i><font color="red"> notifié par email du refus de son inscription. </font></i> <br />
|
|
<br /> Motif du refus : <br />
|
|
<textarea name='motif_refus' id="motif_refus" style={{ "width": "80%" }}
|
|
rows="3" maxlength="180" />
|
|
|
|
</div>
|
|
<div className="gest_actions">
|
|
<div style={{ "width": "45%", "float": "left" }}>
|
|
<button className="gest_bton_popup" onClick={(event) => {
|
|
handleClick_refuse(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 columns_inscrit = [
|
|
{ field: 'id', headerName: 'id', hide: true },
|
|
{ field: 'email', headerName: 'emails', width: 200, hideable: false, flex: 1, minWidth: 150, maxWidth: 300 },
|
|
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true, resizable: true },
|
|
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: true },
|
|
{ field: 'employeur', headerName: 'Employeur', width: 200, hide: false, editable: true },
|
|
{ field: 'opco', headerName: 'Centre Opco', width: 150, hide: false, editable: true },
|
|
{ field: 'modefinancement', headerName: 'Financement', width: 150, hide: false, editable: true },
|
|
{ field: 'amount', headerName: 'Montant Formation', width: 150, type: 'number', hideable: false, flex: 1, editable: true },
|
|
{
|
|
field: "sendmail", headerName: 'Email Confirmation',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_resend_conf_mail(event, cellValues);
|
|
}}
|
|
>
|
|
<FcApproval />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
{
|
|
field: "valide", headerName: 'Valider',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_accept(event, cellValues);
|
|
}}
|
|
>
|
|
<FcApproval />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
{
|
|
field: "Detail", headerName: 'Voir detail',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
Display_Detail_Inscription(event, cellValues);
|
|
}}
|
|
>
|
|
<FcViewDetails />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
{
|
|
field: "Imprimer", headerName: 'Imprimer detail',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
Print_Detail_Inscription(event, cellValues);
|
|
}}
|
|
>
|
|
<FcPrint />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
|
|
|
|
]
|
|
|
|
const columns_list_emargement = [
|
|
{ field: 'id', headerName: 'id', hide: true },
|
|
{ field: 'date', headerName: 'date', width: 100, hideable: false, flex: 1 },
|
|
{ field: 'email', headerName: 'email', width: 250, hideable: false, flex: 1 },
|
|
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
|
|
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: false },
|
|
{ field: 'matin', headerName: 'Matin', width: 100, hide: false, editable: true, type: 'boolean', },
|
|
{ field: 'apresmidi', headerName: 'Apres midi', width: 100, hide: false, editable: true, type: 'boolean', },
|
|
{
|
|
field: "valide", headerName: 'Valider',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_valide_emargement(event, cellValues);
|
|
}}
|
|
>
|
|
<FcApproval />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
]
|
|
|
|
const columns_list_evaluation = [
|
|
{ field: 'id', headerName: 'id', hide: true },
|
|
{ field: 'email', headerName: 'email', width: 250, hideable: false, flex: 1 },
|
|
{ field: 'nom', headerName: 'nom', width: 150, hide: false, editable: true },
|
|
{ field: 'prenom', headerName: 'prenom', width: 150, hide: false, editable: false },
|
|
{ field: 'eval_eval', headerName: 'Evaluation', width: 100, editable: false, },
|
|
{ field: 'eval_note', headerName: 'Note', width: 100, editable: false, },
|
|
{ field: 'eval_date', headerName: 'Date evalution', width: 100, editable: false, },
|
|
{
|
|
field: "valide", headerName: 'Valider',
|
|
renderCell: (cellValues) => {
|
|
return (
|
|
|
|
<Button
|
|
|
|
onClick={(event) => {
|
|
handleClick_valide_emargement(event, cellValues);
|
|
}}
|
|
>
|
|
<FcApproval />
|
|
|
|
</Button>
|
|
|
|
);
|
|
}
|
|
},
|
|
|
|
]
|
|
|
|
|
|
const [UpdateStagiaireEmargement_api, setUpdateStagiaireEmargement_api] = useState();
|
|
const [UpdateStagiaireEmargement_message, setUpdateStagiaireEmargement_message] = useState();
|
|
const [UpdateStagiaireEmargement_result, setUpdateStagiaireEmargement_result] = useState();
|
|
function handleClick_valide_emargement(event, cellValues) {
|
|
|
|
var date = cellValues.row.date;
|
|
var email = cellValues.row.email;
|
|
var matin = cellValues.row.matin;
|
|
var matin_val = "";
|
|
var apresmidi = cellValues.row.apresmidi;
|
|
var apresmidi_val = "";
|
|
|
|
if (matin === true) {
|
|
matin_val = "1"
|
|
} else if (matin === false) {
|
|
matin_val = "0"
|
|
}
|
|
|
|
if (apresmidi === true) {
|
|
apresmidi_val = "1"
|
|
} else if (apresmidi === false) {
|
|
apresmidi_val = "0"
|
|
}
|
|
console.log(" ### date , email, matin,matin_val, apresmidi, apresmidi_val = ",
|
|
date, email, matin, matin_val, apresmidi, apresmidi_val);
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("session_id", mysession);
|
|
form.append("email", email);
|
|
form.append("date", date);
|
|
form.append("matin", matin_val);
|
|
form.append("apresmidi", apresmidi_val);
|
|
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/UpdateUserEmargementDate/";
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (String(res.data.status) !== "false") {
|
|
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
|
|
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
|
|
setUpdateStagiaireEmargement_api("true");
|
|
setUpdateStagiaireEmargement_result(res.data.message);
|
|
GetListeEmargement(mysession);
|
|
}
|
|
else {
|
|
setUpdateStagiaireEmargement_api("false");
|
|
setUpdateStagiaireEmargement_message(res.data.message);
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('handleClick_valide_emargement : Not good man :( mysearchtext = ' + error);
|
|
setUpdateStagiaireEmargement_api("false");
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
# status : 0 ==> Preinscription
|
|
# status : 1 ==> Inscription validée
|
|
# status : -1 ==> Inscription annulée
|
|
"""
|
|
*/
|
|
function handleClick_accept(event, cellValues) {
|
|
|
|
var montant = String(cellValues.row.amount);
|
|
if (parseFloat(montant).toFixed(2) <= 0) {
|
|
alert(" Le montant de la formation est incorrect");
|
|
return;
|
|
|
|
}
|
|
|
|
var nom = cellValues.row.nom;
|
|
var email = cellValues.row.email;
|
|
var prenom = cellValues.row.prenom;
|
|
var opco = cellValues.row.opco;
|
|
var modefinancement = cellValues.row.modefinancement;
|
|
var status = "1";
|
|
var employeur = cellValues.row.employeur;
|
|
|
|
UpdateStagiaireData(nom, prenom, email, status, montant, opco, modefinancement, employeur);
|
|
}
|
|
|
|
function handleClick_update_data(event, cellValues) {
|
|
|
|
var montant = String(cellValues.row.amount);
|
|
var nom = cellValues.row.nom;
|
|
var email = cellValues.row.email;
|
|
var prenom = cellValues.row.prenom;
|
|
var opco = cellValues.row.opco;
|
|
var modefinancement = cellValues.row.modefinancement;
|
|
var status = "0";
|
|
var employeur = cellValues.row.employeur;
|
|
var comment = "";
|
|
|
|
UpdateStagiaireData(nom, prenom, email, status, montant, opco, modefinancement, employeur, comment);
|
|
}
|
|
|
|
function handleClick_refuse(event, cellValues) {
|
|
// Recuperation du motif du refus :
|
|
var motif_refus = document.getElementById("motif_refus").value;
|
|
|
|
var montant = String(cellValues.row.amount);
|
|
var nom = cellValues.row.nom;
|
|
var email = cellValues.row.email;
|
|
var prenom = cellValues.row.prenom;
|
|
var opco = cellValues.row.opco;
|
|
var modefinancement = cellValues.row.modefinancement;
|
|
var status = "-1";
|
|
var employeur = cellValues.row.employeur;
|
|
|
|
UpdateStagiaireData(nom, prenom, email, status, montant, opco, modefinancement, employeur, motif_refus);
|
|
}
|
|
|
|
const [submenu, setsubmenu] = useState("preinscrit");
|
|
function submenu_preinscrit() {
|
|
setsubmenu("preinscrit");
|
|
setCreateListEmargement_api();
|
|
setActionMassListEmargement_api();
|
|
setliste_participants_file_change_api();
|
|
setliste_sessions_file_change_api();
|
|
setCreateSessionFormation_api();
|
|
}
|
|
|
|
function submenu_inscrit() {
|
|
setsubmenu("inscrit");
|
|
setCreateListEmargement_api();
|
|
setActionMassListEmargement_api();
|
|
setliste_participants_file_change_api();
|
|
setliste_sessions_file_change_api();
|
|
setCreateSessionFormation_api();
|
|
}
|
|
|
|
function submenu_divers() {
|
|
setsubmenu("divers");
|
|
setCreateListEmargement_api();
|
|
setActionMassListEmargement_api();
|
|
setliste_participants_file_change_api();
|
|
setliste_sessions_file_change_api();
|
|
setCreateSessionFormation_api();
|
|
}
|
|
|
|
function submenu_emargement() {
|
|
setsubmenu("emargement");
|
|
setCreateListEmargement_api();
|
|
setActionMassListEmargement_api();
|
|
setliste_participants_file_change_api();
|
|
setliste_sessions_file_change_api();
|
|
setCreateSessionFormation_api();
|
|
}
|
|
|
|
function submenu_evaluation() {
|
|
setsubmenu("evaluation");
|
|
setCreateListEmargement_api();
|
|
setActionMassListEmargement_api();
|
|
setliste_participants_file_change_api();
|
|
setliste_sessions_file_change_api();
|
|
setCreateSessionFormation_api();
|
|
}
|
|
|
|
|
|
|
|
const [UpdateStagiaireData_api, setUpdateStagiaireData_api] = useState();
|
|
const [UpdateStagiaireData_message, setUpdateStagiaireData_message] = useState();
|
|
const [UpdateStagiaireData_result, setUpdateStagiaireData_result] = useState();
|
|
function UpdateStagiaireData(nom, prenom, email, status, price, opco, modefinancement, employeur, comment) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
|
|
if (mysession.length <= 0) {
|
|
alert(" Vous devez choisir une session");
|
|
return;
|
|
}
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", mysession);
|
|
form.append("nom", nom);
|
|
form.append("prenom", prenom);
|
|
form.append("email", email);
|
|
form.append("employeur", employeur);
|
|
form.append("status", status);
|
|
form.append("price", price);
|
|
form.append("opco", opco);
|
|
form.append("modefinancement", modefinancement);
|
|
form.append("comment", comment);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/UpdateStagiairetoClass/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
|
|
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
|
|
setUpdateStagiaireData_api("true");
|
|
setUpdateStagiaireData_result(res.data.message);
|
|
GetListePreinscrit(mysession);
|
|
GetListeInscrit(mysession);
|
|
}
|
|
else {
|
|
setUpdateStagiaireData_api("false");
|
|
setUpdateStagiaireData_message(res.data.message);
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('UpdateStagiaireData : Not good man :( mysearchtext = ' + error);
|
|
setUpdateStagiaireData_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
|
|
//const [GetCurrentClass_session, setGetCurrentClass_session] = useState();
|
|
|
|
//const data = [];
|
|
//const [mydata, setmydata] = useState([]);
|
|
|
|
|
|
const [GetCurrentClass_api, setGetCurrentClass_api] = useState();
|
|
const [GetCurrentClass_message, setGetCurrentClass_message] = useState();
|
|
const [GetCurrentClass_result, setGetCurrentClass_result] = useState();
|
|
function GetCurrentClass(event) {
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("internal_url", internal_url);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In GetCurrentClass res.data.status = " + res.data.status);
|
|
//console.log(" In GetCurrentClass res.data.message r_class = " + res.data.message);
|
|
setGetCurrentClass_api("true");
|
|
setGetCurrentClass_result(res.data.message);
|
|
var mylocaltraining = JSON.parse(res.data.message);
|
|
|
|
if (mylocaltraining.external_code)
|
|
document.getElementsByName("external_code")[0].value = mylocaltraining.external_code;
|
|
|
|
if (mylocaltraining.title)
|
|
document.getElementsByName("title")[0].value = mylocaltraining.title;
|
|
setclasstitle(mylocaltraining.title);
|
|
|
|
|
|
if (mylocaltraining.trainer)
|
|
document.getElementsByName("trainer")[0].value = mylocaltraining.trainer;
|
|
|
|
|
|
|
|
}
|
|
else {
|
|
setGetCurrentClass_api("false");
|
|
setGetCurrentClass_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( mysearchtext = ', error);
|
|
setGetCurrentClass_api("false");
|
|
//setmyApimyApiMessage("")
|
|
})
|
|
}
|
|
|
|
const [selectionModel, setSelectionModel] = React.useState([]);
|
|
const [rowss, setRows] = useState([]);
|
|
const [GetListePreinscrit_api, setGetListePreinscrit_api] = useState();
|
|
const [GetListePreinscrit_meassage, setGetListePreinscrit_meassage] = useState();
|
|
const [GetListePreinscrit_result, setGetListePreinscrit_result] = useState([])
|
|
function GetListePreinscrit(localsessionid) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", localsessionid);
|
|
form.append("status", "0");
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllClassStagiaire/";
|
|
|
|
fetch(myurl,
|
|
{
|
|
method: 'POST',
|
|
body: form,
|
|
})
|
|
.then((data) => data.json())
|
|
.then((data) => {
|
|
//console.log('Success:', data['message'], "data['status'] = ", data['status']);
|
|
setGetListePreinscrit_result(data['message']);
|
|
setRows(data['message']);
|
|
if (String(data['status']) === String("false")) {
|
|
//console.log("erreur rrrr:" + data['status'])
|
|
setGetListePreinscrit_api("false");
|
|
|
|
}
|
|
else {
|
|
setGetListePreinscrit_api("true");
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
setGetListePreinscrit_api("false");
|
|
});
|
|
|
|
}
|
|
|
|
|
|
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;
|
|
alert(" confirmation email = " + email);
|
|
SendInscriptionConfirmation(email);
|
|
}
|
|
|
|
|
|
const [SendInscriptionConfirmation_api, setSendInscriptionConfirmation_api] = useState();
|
|
const [SendInscriptionConfirmation_message, setSendInscriptionConfirmation_message] = useState();
|
|
const [SendInscriptionConfirmation_result, setSendInscriptionConfirmation_result] = useState();
|
|
function SendInscriptionConfirmation(email) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
|
|
if (mysession.length <= 0) {
|
|
alert(" Vous devez choisir une session");
|
|
return;
|
|
}
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", mysession);
|
|
form.append("email", email);
|
|
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/SendInscriptionConfirmation/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
|
|
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
|
|
setSendInscriptionConfirmation_api("true");
|
|
setSendInscriptionConfirmation_result(res.data.message);
|
|
|
|
}
|
|
else {
|
|
setSendInscriptionConfirmation_api("false");
|
|
setSendInscriptionConfirmation_message(res.data.message);
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('SendInscriptionConfirmation : Not good man :( mysearchtext = ' + error);
|
|
setSendInscriptionConfirmation_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
/* Recuperation de la liste des inscrits */
|
|
const [selectionModel_insc, setSelectionModel_insc] = React.useState([]);
|
|
const [rowss_insc, setRows_insc] = useState([]);
|
|
const [GetListePreinscrit_insc_api, setGetListePreinscrit_insc_api] = useState();
|
|
const [GetListePreinscrit_insc_meassage, setGetListePreinscrit_insc_meassage] = useState();
|
|
const [GetListePreinscrit_insc_result, setGetListePreinscrit_insc_result] = useState([])
|
|
function GetListeInscrit(localsessionid) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", localsessionid);
|
|
form.append("status", "1");
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAllClassStagiaire/";
|
|
|
|
fetch(myurl,
|
|
{
|
|
method: 'POST',
|
|
body: form,
|
|
})
|
|
.then((data) => data.json())
|
|
.then((data) => {
|
|
//console.log(' GetListeInscrit : Success:', data['message'], "data['status'] = ", data['status']);
|
|
setGetListePreinscrit_insc_result(data['message']);
|
|
setRows_insc(data['message']);
|
|
if (String(data['status']) === String("false")) {
|
|
//console.log("erreur rrrr:" + data['status'])
|
|
setGetListePreinscrit_insc_api("false");
|
|
|
|
}
|
|
else {
|
|
setGetListePreinscrit_insc_api("true");
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
setGetListePreinscrit_insc_api("false");
|
|
});
|
|
|
|
}
|
|
|
|
/* Recuperation de la liste d'emargement */
|
|
const [selectionModel_emarg, setSelectionModel_emarg] = React.useState([]);
|
|
const [rowss_emarg, setRows_emarg] = useState([]);
|
|
const [GetListePreinscrit_emarg_api, setGetListePreinscrit_emarg_api] = useState();
|
|
const [GetListePreinscrit_emarg_meassage, setGetListePreinscrit_emarg_meassage] = useState();
|
|
const [GetListePreinscrit_emarg_result, setGetListePreinscrit_emarg_result] = useState([])
|
|
function GetListeEmargement(localsessionid) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", localsessionid);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetTableauEmargement/";
|
|
|
|
fetch(myurl,
|
|
{
|
|
method: 'POST',
|
|
body: form,
|
|
})
|
|
.then((data) => data.json())
|
|
.then((data) => {
|
|
//console.log('Success:', data['message'], "data['status'] = ", data['status']);
|
|
setGetListePreinscrit_emarg_result(data['message']);
|
|
setRows_emarg(data['message']);
|
|
if (String(data['status']) === String("false")) {
|
|
//console.log("erreur rrrr:" + data['status'])
|
|
setGetListePreinscrit_emarg_api("false");
|
|
|
|
}
|
|
else {
|
|
setGetListePreinscrit_emarg_api("true");
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
setGetListePreinscrit_emarg_api("false");
|
|
});
|
|
|
|
}
|
|
|
|
|
|
/* Recuperation des evaluations */
|
|
const [selectionModel_evaluation, setSelectionModel_evaluation] = React.useState([]);
|
|
const [rowss_evaluation, setRows_evaluation] = useState([]);
|
|
const [GetListePreinscrit_evaluation_api, setGetListePreinscrit_evaluation_api] = useState();
|
|
const [GetListePreinscrit_evaluation_meassage, setGetListePreinscrit_evaluation_meassage] = useState();
|
|
const [GetListePreinscrit_evaluation_result, setGetListePreinscrit_evaluation_result] = useState([])
|
|
function GetListeEvaluation(localsessionid) {
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("session_id", localsessionid);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetListEvaluation_Session/";
|
|
|
|
fetch(myurl,
|
|
{
|
|
method: 'POST',
|
|
body: form,
|
|
})
|
|
.then((data) => data.json())
|
|
.then((data) => {
|
|
console.log('Success:', data['message'], "data['status'] = ", data['status']);
|
|
setGetListePreinscrit_evaluation_result(data['message']);
|
|
setRows_evaluation(data['message']);
|
|
if (String(data['status']) === String("false")) {
|
|
console.log("GetListeEvaluation rrrr:" + data['status'])
|
|
setGetListePreinscrit_evaluation_api("false");
|
|
|
|
}
|
|
else {
|
|
setGetListePreinscrit_evaluation_api("true");
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
setGetListePreinscrit_evaluation_api("false");
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
GetCurrentClass();
|
|
GetCurrentClass_trainingsession();
|
|
GetAttestation_Certif();
|
|
|
|
window.scrollTo(0, 0);
|
|
|
|
}, []);
|
|
|
|
const [mysession, setmysession] = useState("");
|
|
const [allmysession_info, setallmysession_info] = useState("");
|
|
const [selectedsession_date_du, setselectedsession_date_du] = useState(new Date());
|
|
const [selectedsession_date_au, setselectedsession_date_au] = useState(new Date());
|
|
function handleChangeSession(event) {
|
|
|
|
setsessionChanged(false);
|
|
clearSessionFields();
|
|
setselectedCertif();
|
|
seturlpreview_certif();
|
|
setdisplay_detail_insc();
|
|
|
|
|
|
var tab_date = [];
|
|
|
|
setmysession(event.target.value);
|
|
GetListePreinscrit(event.target.value);
|
|
GetListeInscrit(event.target.value);
|
|
GetListeEmargement(event.target.value);
|
|
GetListeEvaluation(event.target.value);
|
|
|
|
var el = document.getElementById('session_liste');
|
|
var text = el.options[el.selectedIndex].innerHTML;
|
|
setallmysession_info(text);
|
|
|
|
// Recuperation de l'adresse
|
|
const words_adresse = text.split(' à');
|
|
if (words_adresse.length === 2) {
|
|
var regex = /^[0-9]{2}[\/][0-9]{2}[\/][0-9]{4}$/g;
|
|
const words = text.split(' ');
|
|
//Iterate array
|
|
words.forEach(
|
|
function (date) {
|
|
|
|
if (regex.test(date))
|
|
//console.log(date + " => "+regex.test(date));
|
|
tab_date.push(date)
|
|
});
|
|
|
|
//alert("words_adresse[1] = "+words_adresse[1].trim());
|
|
const words_adresse2 = String(words_adresse[1]).trim().split(' ');
|
|
//console.log("words_adresse2 = ",words_adresse2);
|
|
var taille = words_adresse2.length;
|
|
var CP = words_adresse2[words_adresse2.length - 1]
|
|
var ville = words_adresse2[words_adresse2.length - 2]
|
|
|
|
var local_adress = ""
|
|
var i = 0;
|
|
while (i < words_adresse2.length - 2) {
|
|
local_adress = local_adress + " " + words_adresse2[i]
|
|
i = i + 1;
|
|
|
|
}
|
|
//console.log(" CP = ",CP+" ville = ",ville+" local_adress = ",local_adress);
|
|
document.getElementsByName("adresse")[0].value = local_adress;
|
|
document.getElementsByName("ville")[0].value = ville;
|
|
document.getElementsByName("code_postal")[0].value = CP;
|
|
|
|
}
|
|
|
|
if (tab_date.length === 2) {
|
|
var date_du = new Date(moment(tab_date[0], "DD/MM/YYYY")).setHours(8, 0, 0);
|
|
var date_au = new Date(moment(tab_date[1], "DD/MM/YYYY")).setHours(18, 0, 0);
|
|
setSessionstartDate(date_du);
|
|
setSessionendDate(date_au)
|
|
}
|
|
|
|
GetCurrentSession(event.target.value);
|
|
};
|
|
|
|
const [CreateListEmargement_api, setCreateListEmargement_api] = useState();
|
|
const [CreateListEmargement_message, setCreateListEmargement_message] = useState();
|
|
const [CreateListEmargement_result, setCreateListEmargement_result] = useState();
|
|
function CreateListEmargement() {
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("session_id", mysession);
|
|
|
|
//alert(" mysession = "+mysession);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/CreateTableauEmargement/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (String(res.data.status) !== "false") {
|
|
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
|
|
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
|
|
setCreateListEmargement_api("true");
|
|
setCreateListEmargement_result(res.data.message);
|
|
GetListeEmargement(mysession);
|
|
|
|
}
|
|
else {
|
|
setCreateListEmargement_api("false");
|
|
setCreateListEmargement_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('CreateListEmargement : Not good man :( mysearchtext = ' + error);
|
|
setCreateListEmargement_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
|
|
const [CreateSessionFormation_api, setCreateSessionFormation_api] = useState();
|
|
const [CreateSessionFormation_message, setCreateSessionFormation_message] = useState();
|
|
const [CreateSessionFormation_result, setCreateSessionFormation_result] = useState();
|
|
function CreateSessionFormation() {
|
|
var form = new FormData();
|
|
var nb_participant = "0";
|
|
|
|
if (mysession.length <= 0) {
|
|
alert(" Vous devez choisir une session");
|
|
return;
|
|
}
|
|
|
|
nb_participant = ""
|
|
if (document.getElementById("nb_participant") && document.getElementById("nb_participant").value != "") {
|
|
nb_participant = document.getElementById("nb_participant").value;
|
|
}
|
|
if (nb_participant.trim() == "") {
|
|
alert(" Le nombre de participants est obligatoire");
|
|
return;
|
|
}
|
|
|
|
var presentiel = "0"
|
|
presentiel = ""
|
|
if (document.getElementById("presentiel") && document.getElementById("presentiel").value != "") {
|
|
presentiel = document.getElementById("presentiel").value;
|
|
}
|
|
if (presentiel.trim() == "") {
|
|
alert(" Vous devez preciser si la session est en présentiel");
|
|
return;
|
|
}
|
|
|
|
var distantiel = "0"
|
|
distantiel = ""
|
|
if (document.getElementById("distantiel") && document.getElementById("distantiel").value != "") {
|
|
distantiel = document.getElementById("distantiel").value;
|
|
}
|
|
if (distantiel.trim() == "") {
|
|
alert(" Vous devez preciser si la session est en distantiel");
|
|
return;
|
|
}
|
|
|
|
|
|
|
|
if (String(document.getElementById("sessiondatedebutinscription").value).trim() == "") {
|
|
alert(" La date de debut des inscriptions est obligatoire");
|
|
return;
|
|
}
|
|
|
|
if (String(document.getElementById("sessiondatefininscription").value).trim() == "") {
|
|
alert(" La date de fin des inscriptions est obligatoire");
|
|
return;
|
|
}
|
|
|
|
var adress = "";
|
|
if (document.getElementById("adresse") && document.getElementById("adresse").value != "")
|
|
adress = document.getElementById("adresse").value;
|
|
|
|
var codepostal = "";
|
|
if (document.getElementById("code_postal") && document.getElementById("code_postal").value != "")
|
|
codepostal = document.getElementById("code_postal").value;
|
|
|
|
|
|
var ville = "";
|
|
if (document.getElementById("ville") && document.getElementById("ville").value != "")
|
|
ville = document.getElementById("ville").value;
|
|
|
|
var code_session = "";
|
|
if (document.getElementById("code_session") && document.getElementById("code_session").value != "")
|
|
code_session = document.getElementById("code_session").value;
|
|
|
|
var formateur = "";
|
|
if (document.getElementById("formateur") && document.getElementById("formateur").value != "")
|
|
formateur = document.getElementById("formateur").value;
|
|
|
|
|
|
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("formation_session_id", mysession);
|
|
form.append("date_debut", format(SessionstartDate, 'dd/MM/yyyy kk:mm:ss'));
|
|
form.append("date_fin", format(SessionendDate, 'dd/MM/yyyy kk:mm:ss'));
|
|
form.append("nb_participant", nb_participant);
|
|
form.append("presentiel", presentiel);
|
|
form.append("distantiel", distantiel);
|
|
form.append("adresse", adress);
|
|
form.append("code_postal", codepostal);
|
|
form.append("ville", ville);
|
|
form.append("code_session", code_session);
|
|
form.append("formateur", formateur);
|
|
form.append("session_status", sessionStatus);
|
|
form.append("date_debut_inscription", format(SessionstartDateInscription, 'dd/MM/yyyy kk:mm:ss'));
|
|
form.append("date_fin_inscription", format(SessionendDateInscription, 'dd/MM/yyyy kk:mm:ss'));
|
|
form.append("attestation_certif", selectedCertif);
|
|
|
|
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Update_SessionFormation/";
|
|
|
|
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
console.log(" In CreateSessionFormation res.data.status = " + res.data.status);
|
|
console.log(" In CreateSessionFormation res.data.message r_class = " + res.data.message);
|
|
|
|
if (String(res.data.status) !== "false") {
|
|
setCreateSessionFormation_api("true");
|
|
setCreateSessionFormation_result(res.data.message);
|
|
setsessionChanged(false);
|
|
desableSessionFields();
|
|
|
|
}
|
|
else {
|
|
setCreateSessionFormation_api("false");
|
|
setCreateSessionFormation_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('CreateSessionFormation : Not good man :( mysearchtext = ' + error);
|
|
setCreateSessionFormation_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
const [GetCurrentSession_api, setGetCurrentSession_api] = useState();
|
|
const [GetCurrentSession_message, setGetCurrentSession_message] = useState();
|
|
const [GetCurrentSession_result, setGetCurrentSession_result] = useState();
|
|
function GetCurrentSession(localsession_id) {
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("class_internal_url", internal_url);
|
|
form.append("formation_session_id", localsession_id);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetSessionFormation/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In GetCurrentSession res.data.status = " + res.data.status);
|
|
//console.log(" In GetCurrentSession res.data.message r_class = " + res.data.message);
|
|
setGetCurrentSession_api("true");
|
|
setGetCurrentSession_result(res.data.message);
|
|
var mylocaltraining = JSON.parse(res.data.message);
|
|
|
|
|
|
if (mylocaltraining.date_debut) {
|
|
var date_du = new Date(moment(mylocaltraining.date_debut, "DD/MM/YYYY HH:mm:ss"));
|
|
setSessionstartDate(date_du);
|
|
}
|
|
|
|
if (mylocaltraining.date_fin) {
|
|
var date_fin = new Date(moment(mylocaltraining.date_fin, "DD/MM/YYYY HH:mm:ss"));
|
|
setSessionendDate(date_fin);
|
|
}
|
|
|
|
if (mylocaltraining.date_debut_inscription) {
|
|
var date_du_inscript = new Date(moment(mylocaltraining.date_debut_inscription, "DD/MM/YYYY HH:mm:ss"));
|
|
setSessionstartDateInscription(date_du_inscript);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (mylocaltraining.date_fin_inscription) {
|
|
var date_fin_inscript = new Date(moment(mylocaltraining.date_fin_inscription, "DD/MM/YYYY HH:mm:ss"));
|
|
setSessionendDateInscription(date_fin_inscript);
|
|
}
|
|
|
|
document.getElementsByName("certif_liste")[0].value = "";
|
|
if (mylocaltraining.attestation_certif) {
|
|
|
|
setselectedCertif(mylocaltraining.attestation_certif);
|
|
GetSpecificAttestation_Certif(mylocaltraining.attestation_certif);
|
|
|
|
}
|
|
|
|
|
|
document.getElementsByName("code_session")[0].value = "";
|
|
if (mylocaltraining.code_session)
|
|
document.getElementsByName("code_session")[0].value = mylocaltraining.code_session;
|
|
|
|
document.getElementsByName("nb_participant")[0].value = "";
|
|
if (mylocaltraining.nb_participant)
|
|
document.getElementsByName("nb_participant")[0].value = mylocaltraining.nb_participant;
|
|
|
|
document.getElementsByName("distantiel")[0].value = "";
|
|
if (mylocaltraining.distantiel)
|
|
document.getElementsByName("distantiel")[0].value = mylocaltraining.distantiel;
|
|
|
|
document.getElementsByName("presentiel")[0].value = "";
|
|
if (mylocaltraining.presentiel)
|
|
document.getElementsByName("presentiel")[0].value = mylocaltraining.presentiel;
|
|
|
|
|
|
|
|
document.getElementsByName("adresse")[0].value = "";
|
|
if (mylocaltraining.adresse)
|
|
document.getElementsByName("adresse")[0].value = mylocaltraining.adresse;
|
|
|
|
document.getElementsByName("ville")[0].value = "";
|
|
if (mylocaltraining.ville) {
|
|
document.getElementsByName("ville")[0].value = mylocaltraining.ville;
|
|
}
|
|
|
|
document.getElementsByName("formateur")[0].value = "";
|
|
if (mylocaltraining.formateur) {
|
|
document.getElementsByName("formateur")[0].value = mylocaltraining.formateur;
|
|
}
|
|
|
|
document.getElementsByName("code_postal")[0].value = "";
|
|
if (mylocaltraining.code_postal)
|
|
document.getElementsByName("code_postal")[0].value = mylocaltraining.code_postal;
|
|
|
|
|
|
if (String(mylocaltraining.session_status) === "true")
|
|
setsessionStatus(true);
|
|
else if (String(mylocaltraining.session_status) === "false")
|
|
setsessionStatus(false);
|
|
|
|
|
|
}
|
|
else {
|
|
setGetCurrentSession_api("false");
|
|
setGetCurrentSession_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( GetCurrentSession = ', error);
|
|
setGetCurrentSession_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
|
|
function annuleSessionUpdate() {
|
|
GetCurrentSession(mysession);
|
|
setsessionChanged(false);
|
|
desableSessionFields();
|
|
setCreateSessionFormation_api();
|
|
setCreateSessionFormation_message();
|
|
|
|
}
|
|
const [SessionstartDate, setSessionstartDate] = useState();
|
|
const filterPassedTime_start = (time) => {
|
|
const currentDate = new Date();
|
|
const selectedDate = new Date(time);
|
|
|
|
return currentDate.getTime() < selectedDate.getTime();
|
|
};
|
|
|
|
|
|
const [SessionendDate, setSessionendDate] = useState();
|
|
const filterPassedTime_end = (time) => {
|
|
const currentDate = new Date();
|
|
const selectedDate = new Date(time);
|
|
|
|
return currentDate.getTime() < selectedDate.getTime();
|
|
};
|
|
|
|
const [detailuser_date_inscription, setdetailuser_date_inscription] = useState();
|
|
const [detailuser_date_evaluation, setdetailuser_date_evaluation] = useState();
|
|
const [detailuser_date_certification, setdetailuser_date_certification] = useState();
|
|
|
|
|
|
|
|
const [SessionstartDateInscription, setSessionstartDateInscription] = useState();
|
|
|
|
|
|
const filterPassedTime_start_Inscription = (time) => {
|
|
const currentDate = new Date();
|
|
const selectedDate = new Date(time);
|
|
|
|
return currentDate.getTime() < selectedDate.getTime();
|
|
};
|
|
|
|
|
|
const [SessionendDateInscription, setSessionendDateInscription] = useState();
|
|
const filterPassedTime_end_Inscription = (time) => {
|
|
const currentDate = new Date();
|
|
const selectedDate = new Date(time);
|
|
|
|
return currentDate.getTime() < selectedDate.getTime();
|
|
};
|
|
|
|
|
|
function toggleSessionStatus() {
|
|
|
|
if (sessionStatus === true)
|
|
setsessionStatus(false);
|
|
else
|
|
setsessionStatus(true);
|
|
|
|
enableSessionFields();
|
|
setsessionChanged(true);
|
|
}
|
|
|
|
let [sessionStatus, setsessionStatus] = useState(false);
|
|
|
|
let [sessionChanged, setsessionChanged] = useState(false);
|
|
|
|
function IssessionChanged() {
|
|
setsessionChanged(true);
|
|
}
|
|
|
|
let [fields1desabled, setfields1desabled] = useState(true);
|
|
|
|
|
|
function desableAttendeeDetailFields() {
|
|
document.getElementsByName("date_evaluation")[0].disabled = true;
|
|
document.getElementsByName("date_evaluation")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
|
|
document.getElementsByName("detail_incr_date")[0].disabled = true;
|
|
document.getElementsByName("detail_incr_date")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
|
|
document.getElementsByName("certif_date")[0].disabled = true;
|
|
document.getElementsByName("certif_date")[0].style.backgroundColor = "#ECEFF1";
|
|
}
|
|
|
|
|
|
function desableSessionFields() {
|
|
|
|
document.getElementsByName("code_session")[0].disabled = true;
|
|
document.getElementsByName("code_session")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("sessiondatedebut")[0].disabled = true;
|
|
document.getElementsByName("sessiondatedebut")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("sessiondatefin")[0].disabled = true;
|
|
document.getElementsByName("sessiondatefin")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("adresse")[0].disabled = true;
|
|
document.getElementsByName("adresse")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("code_postal")[0].disabled = true;
|
|
document.getElementsByName("code_postal")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("ville")[0].disabled = true;
|
|
document.getElementsByName("ville")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("formateur")[0].disabled = true;
|
|
document.getElementsByName("formateur")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("nb_participant")[0].disabled = true;
|
|
document.getElementsByName("nb_participant")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("presentiel")[0].disabled = true;
|
|
document.getElementsByName("presentiel")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("distantiel")[0].disabled = true;
|
|
document.getElementsByName("distantiel")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("sessiondatedebutinscription")[0].disabled = true;
|
|
document.getElementsByName("sessiondatedebutinscription")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
document.getElementsByName("sessiondatefininscription")[0].disabled = true;
|
|
document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#ECEFF1";
|
|
|
|
setfields1desabled(true);
|
|
|
|
}
|
|
|
|
function enableSessionFields() {
|
|
|
|
|
|
//setfields1desabled(true);
|
|
document.getElementsByName("sessiondatedebut")[0].disabled = false;
|
|
document.getElementsByName("sessiondatedebut")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("sessiondatefin")[0].disabled = false;
|
|
document.getElementsByName("sessiondatefin")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("adresse")[0].disabled = false;
|
|
document.getElementsByName("adresse")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("code_postal")[0].disabled = false;
|
|
document.getElementsByName("code_postal")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("ville")[0].disabled = false;
|
|
document.getElementsByName("ville")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("formateur")[0].disabled = false;
|
|
document.getElementsByName("formateur")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("nb_participant")[0].disabled = false;
|
|
document.getElementsByName("nb_participant")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("presentiel")[0].disabled = false;
|
|
document.getElementsByName("presentiel")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("distantiel")[0].disabled = false;
|
|
document.getElementsByName("distantiel")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("sessiondatedebutinscription")[0].disabled = false;
|
|
document.getElementsByName("sessiondatedebutinscription")[0].style.backgroundColor = "#FFFFFF";
|
|
|
|
document.getElementsByName("sessiondatefininscription")[0].disabled = false;
|
|
document.getElementsByName("sessiondatefininscription")[0].style.backgroundColor = "#FFFFFF ";
|
|
|
|
setfields1desabled(false);
|
|
}
|
|
|
|
function clearSessionFields() {
|
|
document.getElementsByName("adresse")[0].value = "";
|
|
document.getElementsByName("ville")[0].value = "";
|
|
document.getElementsByName("code_postal")[0].value = "";
|
|
|
|
document.getElementsByName("nb_participant")[0].value = "";
|
|
|
|
document.getElementsByName("presentiel")[0].value = "";
|
|
|
|
document.getElementsByName("distantiel")[0].value = "";
|
|
|
|
|
|
setSessionstartDateInscription();
|
|
setSessionendDateInscription();
|
|
setSessionendDate();
|
|
setSessionstartDate();
|
|
}
|
|
|
|
function DownloadListEmargement(event) {
|
|
|
|
var trainer = ""
|
|
if (document.getElementsByName("formateur")[0])
|
|
trainer = document.getElementsByName("formateur")[0].value;
|
|
|
|
if( trainer == ""){
|
|
alert(" Aucun formateur pour cette session ");
|
|
return;
|
|
}
|
|
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
|
|
var nom_liste_emarge = "Liste_Emargement.pdf";
|
|
|
|
var url = process.env.REACT_APP_API_URL + "myclass/api/GerneratePDFEmargementList/" + stored_cookie + "/" + mysession + "/" + internal_url;
|
|
|
|
|
|
|
|
axios.get(url, { responseType: 'blob', },)
|
|
.then((res) => {
|
|
fileDownload(res.data, nom_liste_emarge)
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
|
|
});
|
|
}
|
|
|
|
|
|
const [selectedattendeeemail, setselectedattendeeemail] = useState([])
|
|
function DownloadAttendeeDetail(event) {
|
|
|
|
|
|
var trainer = ""
|
|
if (document.getElementsByName("formateur")[0])
|
|
trainer = document.getElementsByName("formateur")[0].value;
|
|
|
|
if( trainer == ""){
|
|
alert(" Aucun formateur pour cette session ");
|
|
return;
|
|
}
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
|
|
var nom_fiche_detaillee = "Fiche_Detaillee.pdf";
|
|
|
|
var url = process.env.REACT_APP_API_URL + "myclass/api/PrintAttendeeDetail_perSession/" + stored_cookie + "/" + mysession + "/" + selectedattendeeemail;
|
|
|
|
|
|
axios.get(url, { responseType: 'blob', },)
|
|
.then((res) => {
|
|
fileDownload(res.data, nom_fiche_detaillee)
|
|
}).catch((error) => {
|
|
console.error('Error:', error);
|
|
|
|
});
|
|
}
|
|
|
|
|
|
function DownloadAttendeeAttestation(event) {
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
|
|
var nom_fiche_detaillee = "Attestation.pdf";
|
|
|
|
var url = process.env.REACT_APP_API_URL + "myclass/api/PrintAttendeeCertification/" + stored_cookie + "/" + mysession + "/" + selectedattendeeemail;
|
|
|
|
|
|
|
|
axios.get(url, { responseType: 'blob', },)
|
|
.then((res) => {
|
|
fileDownload(res.data, nom_fiche_detaillee)
|
|
})
|
|
}
|
|
|
|
|
|
useEffect(() => {
|
|
desableSessionFields();
|
|
setCreateListEmargement_api();
|
|
}, [])
|
|
|
|
const [selectedemargement, setselectedemargement] = useState([])
|
|
function GetSelectedRowsEmargement() {
|
|
|
|
var tab_tmp = []
|
|
|
|
|
|
for (var i = 0; i < selectionModel_emarg.length; i++) {
|
|
var myid = parseInt(String(selectionModel_emarg[i]));
|
|
tab_tmp.push(JSON.parse(rowss_emarg[myid])._id);
|
|
|
|
}
|
|
setselectedemargement(tab_tmp);
|
|
return tab_tmp;
|
|
}
|
|
|
|
const [ActionMassListEmargement_api, setActionMassListEmargement_api] = useState();
|
|
const [ActionMassListEmargement_message, setActionMassListEmargement_message] = useState();
|
|
const [ActionMassListEmargement_result, setActionMassListEmargement_result] = useState();
|
|
function ActionMassListEmargement(e) {
|
|
|
|
if (selectionModel_emarg.length <= 0) {
|
|
alert(" Selectionnez un enregistrement pour envoyer la demande d'emargement");
|
|
return;
|
|
}
|
|
|
|
var actionenmasse = ""
|
|
if (document.getElementById("actionmass_emarge")) {
|
|
actionenmasse = document.getElementById("actionmass_emarge").value;
|
|
}
|
|
|
|
var liste_emargement_id = GetSelectedRowsEmargement();
|
|
|
|
console.log("liste_formation = " + liste_emargement_id);
|
|
|
|
var form = new FormData();
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("tab_ids", liste_emargement_id);
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/EmargementMail/";
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (String(res.data.status) !== "false") {
|
|
//console.log(" In UpdateStagiaireData res.data.status = " + res.data.status);
|
|
//console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message);
|
|
setActionMassListEmargement_api("true");
|
|
setActionMassListEmargement_result(res.data.message);
|
|
}
|
|
else {
|
|
setActionMassListEmargement_api("false");
|
|
setActionMassListEmargement_message(res.data.message);
|
|
|
|
}
|
|
|
|
}).catch((error) => {
|
|
|
|
console.warn('ActionMassListEmargement : Not good man :( mysearchtext = ' + error);
|
|
setActionMassListEmargement_api("false");
|
|
|
|
})
|
|
|
|
|
|
|
|
if (String(actionenmasse) === String("depublier")) {
|
|
|
|
alert("depublier");
|
|
}
|
|
|
|
else if (String(actionenmasse) === String("publier")) {
|
|
alert("publier");
|
|
}
|
|
|
|
else if (String(actionenmasse) === String("supprimer")) {
|
|
alert("supprimer");
|
|
}
|
|
}
|
|
|
|
function ConfirmInitListEmargement() {
|
|
confirmAlert({
|
|
message: "Confirmez la (re)initialisation de la liste d'emargement ? Toutes les confirmations seront perdues",
|
|
|
|
buttons: [
|
|
{
|
|
label: 'Oui',
|
|
onClick: () => { CreateListEmargement() }
|
|
},
|
|
{
|
|
label: 'Non',
|
|
onClick: () => { return }
|
|
|
|
}
|
|
],
|
|
closeOnEscape: false,
|
|
closeOnClickOutside: false,
|
|
keyCodeForClose: [8, 32],
|
|
willUnmount: () => { },
|
|
afterClose: () => { },
|
|
onClickOutside: () => { },
|
|
onKeypress: () => { },
|
|
onKeypressEscape: () => { },
|
|
});
|
|
}
|
|
|
|
|
|
function PrintSesssionDetail() {
|
|
|
|
var filedetail = "detail_session.xlsx"
|
|
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
|
|
|
|
var url = process.env.REACT_APP_API_URL + "myclass/api/DownloadParticipantsList/" + stored_cookie + "/" + mysession;
|
|
|
|
|
|
|
|
axios.get(url, { responseType: 'blob', },)
|
|
.then((res) => {
|
|
fileDownload(res.data, filedetail)
|
|
})
|
|
}
|
|
|
|
|
|
function ConfirmEnvoiListEmargement() {
|
|
confirmAlert({
|
|
message: "Confirmez l'envoi des demandes d'emargement aux participants",
|
|
|
|
buttons: [
|
|
{
|
|
label: 'Oui',
|
|
onClick: () => { ActionMassListEmargement() }
|
|
},
|
|
{
|
|
label: 'Non',
|
|
onClick: () => { return }
|
|
|
|
}
|
|
],
|
|
closeOnEscape: false,
|
|
closeOnClickOutside: false,
|
|
keyCodeForClose: [8, 32],
|
|
willUnmount: () => { },
|
|
afterClose: () => { },
|
|
onClickOutside: () => { },
|
|
onKeypress: () => { },
|
|
onKeypressEscape: () => { },
|
|
});
|
|
}
|
|
|
|
|
|
const [participant_file_name, setparticipant_file_name] = useState();
|
|
function submenu_import_participant() {
|
|
setparticipant_file_name();
|
|
setliste_participants_file_change_api();
|
|
hiddenFileInput.current.click();
|
|
}
|
|
|
|
const hiddenFileInput = React.useRef(null);
|
|
|
|
const [liste_participants_file_change_api, setliste_participants_file_change_api] = useState();
|
|
const [liste_participants_file_change_result, setliste_participants_file_change_result] = useState();
|
|
const [liste_participants_file_change_message, setliste_participants_file_change_message] = useState();
|
|
const liste_participants_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;
|
|
}
|
|
|
|
setparticipant_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("session_id", mysession);
|
|
//console.log("token = " + stored_cookie);
|
|
|
|
fetch(
|
|
process.env.REACT_APP_API_URL + "myclass/api/AddStagiairetoClass_mass/",
|
|
{
|
|
method: 'POST',
|
|
body: formData,
|
|
}
|
|
)
|
|
.then((response) => response.json())
|
|
.then((result) => {
|
|
if (String(result['status']) === String("true")) {
|
|
//console.log('Success:', result['message']);
|
|
setliste_participants_file_change_result(result['message']);
|
|
setliste_participants_file_change_api("true");
|
|
GetListePreinscrit(mysession);
|
|
GetListeInscrit(mysession);
|
|
GetListeEmargement(mysession);
|
|
GetListeEvaluation(mysession);
|
|
}
|
|
else {
|
|
setliste_participants_file_change_message(result['message']);
|
|
setliste_participants_file_change_api("false");
|
|
}
|
|
|
|
})
|
|
.catch((error) => {
|
|
console.error('Error:', error);
|
|
setliste_participants_file_change_api("false");
|
|
});
|
|
|
|
};
|
|
|
|
|
|
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");
|
|
});
|
|
|
|
};
|
|
|
|
|
|
const [print_detail_insc, setprint_detail_insc] = React.useState();
|
|
function Print_Detail_Inscription(event, cellValues) {
|
|
|
|
setprint_detail_insc("1")
|
|
|
|
var email = cellValues.row.email;
|
|
setselectedattendeeemail(email);
|
|
DownloadAttendeeDetail();
|
|
|
|
}
|
|
|
|
|
|
|
|
const [display_detail_insc, setdisplay_detail_insc] = React.useState();
|
|
function Display_Detail_Inscription(event, cellValues) {
|
|
|
|
setdisplay_detail_insc("1")
|
|
var montant = String(cellValues.row.amount);
|
|
var nom = cellValues.row.nom;
|
|
var email = cellValues.row.email;
|
|
setselectedattendeeemail(email);
|
|
var prenom = cellValues.row.prenom;
|
|
GetAttendee_Data(email, mysession);
|
|
|
|
}
|
|
|
|
|
|
// Cette fonction remplit la zone detail de la personne inscrite
|
|
const [GetAttendee_api, setGetAttendee_api] = useState();
|
|
const [GetAttendee_message, setGetAttendee_message] = useState();
|
|
const [GetAttendee_result, setGetAttendee_result] = useState();
|
|
function GetAttendee_Data(attendee_email, session_id) {
|
|
var form = new FormData();
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("session_id", session_id);
|
|
form.append("attendee_email", attendee_email);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetAttendeeDetail_perSession/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In GetAttendee res.data.status = " + res.data.status);
|
|
console.log(" In GetAttendee res.data.message r_class = " + res.data.message);
|
|
setGetAttendee_api("true");
|
|
setGetAttendee_result(res.data.message);
|
|
var mylocalattendee = JSON.parse(res.data.message);
|
|
|
|
|
|
if (mylocalattendee.inscription_validation_date) {
|
|
var date_du = new Date(moment(mylocalattendee.inscription_validation_date, "DD/MM/YYYY HH:mm:ss"));
|
|
setdetailuser_date_inscription(date_du);
|
|
}
|
|
|
|
|
|
|
|
document.getElementsByName("detail_nom")[0].value = "";
|
|
if (mylocalattendee.nom)
|
|
document.getElementsByName("detail_nom")[0].value = mylocalattendee.nom;
|
|
|
|
document.getElementsByName("detail_prenom")[0].value = "";
|
|
if (mylocalattendee.prenom)
|
|
document.getElementsByName("detail_prenom")[0].value = mylocalattendee.prenom;
|
|
|
|
document.getElementsByName("detail_mail")[0].value = "";
|
|
if (mylocalattendee.email) {
|
|
document.getElementsByName("detail_mail")[0].value = mylocalattendee.email;
|
|
}
|
|
|
|
|
|
document.getElementsByName("detail_tel")[0].value = "";
|
|
if (mylocalattendee.telephone) {
|
|
document.getElementsByName("detail_tel")[0].value = mylocalattendee.telephone;
|
|
}
|
|
|
|
document.getElementsByName("detail_adresse")[0].value = "";
|
|
if (mylocalattendee.adresse) {
|
|
document.getElementsByName("detail_adresse")[0].value = mylocalattendee.adresse;
|
|
}
|
|
|
|
document.getElementsByName("detail_code_postal")[0].value = "";
|
|
if (mylocalattendee.code_postal) {
|
|
document.getElementsByName("detail_code_postal")[0].value = mylocalattendee.code_postal;
|
|
}
|
|
|
|
document.getElementsByName("detail_ville")[0].value = "";
|
|
if (mylocalattendee.ville) {
|
|
document.getElementsByName("detail_ville")[0].value = mylocalattendee.ville;
|
|
}
|
|
|
|
|
|
document.getElementsByName("detail_cout")[0].value = "";
|
|
if (mylocalattendee.price) {
|
|
document.getElementsByName("detail_cout")[0].value = mylocalattendee.price;
|
|
}
|
|
|
|
|
|
document.getElementsByName("detail_mode_fin")[0].value = "";
|
|
if (mylocalattendee.modefinancement) {
|
|
document.getElementsByName("detail_mode_fin")[0].value = mylocalattendee.modefinancement;
|
|
}
|
|
|
|
|
|
document.getElementsByName("detail_employeur")[0].value = "";
|
|
if (mylocalattendee.employeur) {
|
|
document.getElementsByName("detail_employeur")[0].value = mylocalattendee.employeur;
|
|
}
|
|
|
|
document.getElementsByName("date_evaluation")[0].value = "";
|
|
if (mylocalattendee.eval_date) {
|
|
|
|
var date_eval = new Date(moment(mylocalattendee.eval_date, "YYYY/MM/DD"));
|
|
setdetailuser_date_evaluation(date_eval);
|
|
}
|
|
|
|
document.getElementsByName("date_evaluation")[0].value = "";
|
|
if (mylocalattendee.certification_send_date) {
|
|
//alert(" certification_send_date = ", mylocalattendee.certification_send_date);
|
|
|
|
var date_eval = new Date(moment(mylocalattendee.certification_send_date, "DD/MM/YYYY"));
|
|
setdetailuser_date_certification(date_eval);
|
|
}
|
|
|
|
|
|
|
|
document.getElementsByName("note_eval")[0].value = "";
|
|
if (mylocalattendee.eval_note) {
|
|
document.getElementsByName("note_eval")[0].value = mylocalattendee.eval_note;
|
|
}
|
|
|
|
|
|
if (mylocalattendee.eval_eval) {
|
|
setfield_evaluation(mylocalattendee.eval_eval);
|
|
|
|
}
|
|
|
|
desableAttendeeDetailFields();
|
|
|
|
}
|
|
else {
|
|
setGetAttendee_api("false");
|
|
setGetAttendee_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( GetAttendee = ', error);
|
|
setGetAttendee_api("false");
|
|
//setmyApimyApiMessage("")
|
|
})
|
|
}
|
|
|
|
const [selectedCertif, setselectedCertif] = useState();
|
|
const [urlpreview_certif, seturlpreview_certif] = useState();
|
|
function handleChangeselectedCertif(event) {
|
|
|
|
var val = event.target.value
|
|
console.log(val);
|
|
GetSpecificAttestation_Certif(val)
|
|
|
|
setselectedCertif(val);
|
|
|
|
//seturlpreview_certif(val[1]);
|
|
}
|
|
|
|
|
|
|
|
const [GetAttestation_Certif_api, setGetAttestation_Certif_api] = useState();
|
|
const [GetAttestation_Certif_message, setGetAttestation_Certif_message] = useState();
|
|
const [GetAttestation_Certif_result, setGetAttestation_Certif_result] = useState();
|
|
function GetAttestation_Certif(event) {
|
|
|
|
var form = new FormData();
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetPartnerAttestation_Certificat/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In GetAttestation_Certif res.data.status = " + res.data.status);
|
|
//console.log(" In GetAttestation_Certif res.data.message r_class = " + res.data.message);
|
|
setGetAttestation_Certif_api("true");
|
|
setGetAttestation_Certif_result(res.data.message);
|
|
}
|
|
else {
|
|
setGetAttestation_Certif_api("false");
|
|
setGetAttestation_Certif_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( GetAttestation_Certif = ', error);
|
|
setGetAttestation_Certif_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
|
|
const [GetSpecificAttestation_Certif_api, setGetSpecificAttestation_Certif_api] = useState();
|
|
const [GetSpecificAttestation_Certif_message, setGetSpecificAttestation_Certif_message] = useState();
|
|
const [GetSpecificAttestation_Certif_result, setGetSpecificAttestation_Certif_result] = useState();
|
|
function GetSpecificAttestation_Certif(nom) {
|
|
|
|
var form = new FormData();
|
|
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("nom", nom);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/GetSpecificPartnerAttestation_Certificat/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (res.data.status != "false") {
|
|
//console.log(" In GetSpecificAttestation_Certif res.data.status = " + res.data.status);
|
|
//console.log(" In GetSpecificAttestation_Certif res.data.message r_class = " + res.data.message);
|
|
setGetSpecificAttestation_Certif_api("true");
|
|
setGetSpecificAttestation_Certif_result(res.data.message);
|
|
|
|
var mylocal = JSON.parse(res.data.message);
|
|
console.log(mylocal);
|
|
seturlpreview_certif(mylocal.preview_url);
|
|
|
|
|
|
}
|
|
else {
|
|
setGetSpecificAttestation_Certif_api("false");
|
|
setGetSpecificAttestation_Certif_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( GetSpecificAttestation_Certif = ', error);
|
|
setGetSpecificAttestation_Certif_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
|
|
const editorRef_evaluation = useRef(null);
|
|
const [field_evaluation, setfield_evaluation] = useState("");
|
|
function editor_keyup() {
|
|
|
|
}
|
|
|
|
|
|
|
|
const [SendEvaluationEmail_api, setSendEvaluationEmail_api] = useState();
|
|
const [SendEvaluationEmail_message, setSendEvaluationEmail_message] = useState();
|
|
const [SendEvaluationEmail_result, setSendEvaluationEmail_result] = useState();
|
|
function SendEvaluationEmail() {
|
|
|
|
var form = new FormData();
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("session_id", mysession);
|
|
form.append("attendee_email", selectedattendeeemail);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/SendTrainingEvaluationEmail/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (String(res.data.status) == "true") {
|
|
console.log(" In SendEvaluationEmail res.data.status = " + res.data.status);
|
|
console.log(" In SendEvaluationEmail res.data.message r_class = " + res.data.message);
|
|
setSendEvaluationEmail_api("true");
|
|
setSendEvaluationEmail_result(res.data.message);
|
|
|
|
}
|
|
else {
|
|
setSendEvaluationEmail_api("false");
|
|
setSendEvaluationEmail_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( SendEvaluationEmail = ', error);
|
|
setSendEvaluationEmail_api("false");
|
|
|
|
})
|
|
}
|
|
|
|
const [SendAttendeeAttestation_api, setSendAttendeeAttestation_api] = useState();
|
|
const [SendAttendeeAttestation_message, setSendAttendeeAttestation_message] = useState();
|
|
const [SendAttendeeAttestation_result, setSendAttendeeAttestation_result] = useState();
|
|
function SendAttendeeAttestation() {
|
|
|
|
var form = new FormData();
|
|
const stored_cookie = getCookie('tokenmysypart');
|
|
form.append("token", stored_cookie);
|
|
form.append("session_id", mysession);
|
|
form.append("attendee_email", selectedattendeeemail);
|
|
|
|
var myurl = process.env.REACT_APP_API_URL + "myclass/api/SendAttendeeCertification/";
|
|
|
|
axios.post(myurl, form).then(res => {
|
|
|
|
if (String(res.data.status) == "true") {
|
|
console.log(" In SendAttendeeAttestation res.data.status = " + res.data.status);
|
|
console.log(" In SendAttendeeAttestation res.data.message r_class = " + res.data.message);
|
|
setSendAttendeeAttestation_api("true");
|
|
setSendAttendeeAttestation_result(res.data.message);
|
|
|
|
}
|
|
else {
|
|
setSendAttendeeAttestation_api("false");
|
|
setSendAttendeeAttestation_message(res.data.message);
|
|
}
|
|
|
|
}).catch((error) => {
|
|
console.warn('Not good man :( SendAttendeeAttestation = ', error);
|
|
setSendAttendeeAttestation_api("false");
|
|
|
|
})
|
|
|
|
}
|
|
|
|
const [sessionpresence, setsessionpresence] = useState("");
|
|
const [sessiondistance, setsessiondistance] = useState("");
|
|
const handleChangeSessionPresentiel = (event) => {
|
|
const value = event.target.value;
|
|
setsessionpresence(value);
|
|
|
|
}
|
|
|
|
const handleChangeSessionDistanciel = (event) => {
|
|
const value = event.target.value;
|
|
setsessiondistance(value);
|
|
|
|
}
|
|
|
|
return (
|
|
<div className='gestionadministrative'>
|
|
<Helmet>
|
|
<title>Partenaires editeurs formations</title>
|
|
<meta name="description" content="backoffice partenaire editeurs formation" />
|
|
<meta name="robots" content="index,follow" />
|
|
</Helmet>
|
|
<Header />
|
|
|
|
<div className="div_mobile">
|
|
|
|
<div className="zone_data">
|
|
<h4> Gestion Administrative de : <i><u> {classtitle} </u> </i>
|
|
</h4>
|
|
|
|
|
|
<div className="div_row session_data" style={{ "border": "None" }}>
|
|
<div className="training_data">
|
|
<div className="training_caract">
|
|
<TextField
|
|
required
|
|
name="external_code"
|
|
label="Code"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={true}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="training_caract">
|
|
<TextField
|
|
required
|
|
name="title"
|
|
label="Titre"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={true}
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
<div className="training_caract">
|
|
<TextField
|
|
required
|
|
name="trainer"
|
|
label="Formateur"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={true}
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<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_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">
|
|
|
|
|
|
<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).distantiel) === "1" && " A Distance - "}
|
|
{(JSON.parse(session).presentiel) === "1" && " En Présentiel - "+(JSON.parse(session).adresse)} {(JSON.parse(session).code_postal) }
|
|
|
|
|
|
</option>
|
|
))}
|
|
</select>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
|
|
<div className="session_data" onChange={IssessionChanged}>
|
|
|
|
{mysession && <div className="div_row" style={{ "border": "None" }}>
|
|
|
|
<div className="session_caract" style={{ "float": "right" }}>
|
|
<nav onChange={toggleSessionStatus} id="toggleSwitchNav" name="toggleSwitchNav">
|
|
<ToggleSwitch label="Activation Session " id="toggleSwitch" name="toggleSwitch" checked={sessionStatus} />
|
|
</nav>
|
|
|
|
</div>
|
|
|
|
<div className="session_caract" style={{ "float": "right" }}>
|
|
<Button className="bton_envoyer" onClick={PrintSesssionDetail}> Télécharger les details </Button>
|
|
|
|
</div>
|
|
|
|
|
|
</div>}
|
|
|
|
<div className="session_caract"> Code Session<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="code_session"
|
|
id="code_session"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={true}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract">
|
|
Date Debut
|
|
<DatePicker
|
|
name="sessiondatedebut"
|
|
id="sessiondatedebut"
|
|
selected={SessionstartDate}
|
|
onChange={(date) => {
|
|
setSessionstartDate(date);
|
|
setsessionChanged(true);
|
|
}
|
|
}
|
|
showTimeSelect
|
|
filterTime={filterPassedTime_start}
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
locale='fr-FR'
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Date Fin
|
|
<DatePicker
|
|
name="sessiondatefin"
|
|
id="sessiondatefin"
|
|
selected={SessionendDate}
|
|
onChange={(date) => {
|
|
setSessionendDate(date);
|
|
setsessionChanged(true);
|
|
}
|
|
}
|
|
showTimeSelect
|
|
filterTime={filterPassedTime_end}
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract">Présentiel*<br />
|
|
<TextField
|
|
name="presentiel"
|
|
id="presentiel"
|
|
type="number"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
inputProps={{ min: "0", max: "1", step: "1" }}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
>
|
|
|
|
</TextField>
|
|
</div>
|
|
|
|
<div className="session_caract">A distance*<br />
|
|
<TextField
|
|
name="distantiel"
|
|
id="distantiel"
|
|
type="number"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
inputProps={{ min: "0", max: "1", step: "1" }}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
>
|
|
|
|
</TextField>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Adresse<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="adresse"
|
|
id="adresse"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
<div className="session_caract"> Code postal<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="code_postal"
|
|
id="code_postal"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
<div className="session_caract"> Ville<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="ville"
|
|
id="ville"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Formateur<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="formateur"
|
|
id="formateur"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Nombre participants *<br />
|
|
<TextField sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="nb_participant"
|
|
id="nb_participant"
|
|
type="number"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
inputProps={{ min: "1", max: "1000", step: "1" }}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
<div className="session_caract"> Date Debut des inscriptions *
|
|
<DatePicker
|
|
required
|
|
name="sessiondatedebutinscription"
|
|
id="sessiondatedebutinscription"
|
|
selected={SessionstartDateInscription}
|
|
onChange={(date) => {
|
|
setSessionstartDateInscription(date);
|
|
setsessionChanged(true);
|
|
}
|
|
|
|
}
|
|
showTimeSelect
|
|
//filterTime={filterPassedTime_start}
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
locale='fr-FR'
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Date Fin des inscriptions *
|
|
<DatePicker
|
|
required
|
|
name="sessiondatefininscription"
|
|
id="sessiondatefininscription"
|
|
selected={SessionendDateInscription}
|
|
onChange={(date) => {
|
|
setSessionendDateInscription(date);
|
|
setsessionChanged(true);
|
|
}
|
|
}
|
|
showTimeSelect
|
|
//filterTime={filterPassedTime_end}
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
<div className="session_caract">Choisir un certificat
|
|
<select id="certif_liste" name="certif_liste" value={selectedCertif} onChange={handleChangeselectedCertif} className="selectsession">
|
|
<option value="">Choisir un certificat </option>
|
|
{GetAttestation_Certif_result &&
|
|
GetAttestation_Certif_result.map((certificat) => (
|
|
<option value={JSON.parse(certificat).nom}>
|
|
{JSON.parse(certificat).nom}
|
|
|
|
</option>
|
|
))}
|
|
</select> <br />
|
|
<img className="preview_certif" src={urlpreview_certif} />
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
|
|
</div>
|
|
|
|
|
|
{sessionChanged && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
|
/!\ Pensez à enregistrer les modifications
|
|
</div>}
|
|
|
|
{!sessionChanged && String(CreateSessionFormation_api) === "true" &&
|
|
<div className="div_row okUpdateData" style={{ "textAlign": "center" }}>
|
|
La session de formation à été bien mise à jour.
|
|
</div>}
|
|
|
|
{String(CreateSessionFormation_api) === "false" &&
|
|
<div className="div_row koUpdateData" style={{ "textAlign": "center" }}>
|
|
{CreateSessionFormation_message}
|
|
</div>}
|
|
|
|
|
|
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
|
|
|
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
|
|
|
{sessionChanged && mysession &&
|
|
<Button variant="contained" className="bton_envoyer" onClick={CreateSessionFormation}>Enregistrer les modifications
|
|
</Button>}
|
|
</div>
|
|
|
|
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
|
{!sessionChanged && mysession &&
|
|
<Button variant="contained" className="bton_fermer" onClick={enableSessionFields}>Editer
|
|
</Button>}
|
|
|
|
{sessionChanged && mysession &&
|
|
<Button variant="contained" className="bton_fermer" onClick={annuleSessionUpdate}>Annuler les modifications
|
|
</Button>}
|
|
|
|
|
|
</div>
|
|
|
|
</div>}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
{String(UpdateStagiaireData_api) === "true" && <div className="okUpdateData"> la mise à jour a été correctement faite</div>}
|
|
|
|
{String(UpdateStagiaireData_api) === "false" && <div className="koUpdateData"> {UpdateStagiaireData_message}</div>}
|
|
{ }
|
|
|
|
<div style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
|
|
<Button variant="outlined" onClick={submenu_preinscrit} className="detail_class_submenu" id='menu_preinscrit' name='menu_preinscrit'>Preinscription</Button>
|
|
<Button variant="outlined" onClick={submenu_inscrit} className="detail_class_submenu" id='menu_inscrit' name='menu_inscrit'>Inscription</Button>
|
|
<Button variant="outlined" onClick={submenu_emargement} className="detail_class_submenu" id='menu_divers' name='menu_divers'>Liste émargement</Button>
|
|
<Button variant="outlined" onClick={submenu_evaluation} className="detail_class_submenu" id='menu_divers' name='menu_divers'>Les avis</Button>
|
|
|
|
{/*<hr className="hr_height" />*/}
|
|
|
|
<div className="session_data">
|
|
{String(submenu) === String("preinscrit") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
|
|
|
|
<div style={{ height: 500, width: '100%' }}>
|
|
<DataGrid
|
|
checkboxSelection
|
|
onSelectionModelChange={(newSelectionModel) => {
|
|
setSelectionModel(newSelectionModel);
|
|
//console.log("ch selected--" + newSelectionModel);
|
|
}}
|
|
selectionModel={selectionModel}
|
|
|
|
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
|
rows={rowss.map((item, index) => (
|
|
{
|
|
id: index,
|
|
nom: JSON.parse(item).nom,
|
|
prenom: JSON.parse(item).prenom,
|
|
employeur: JSON.parse(item).employeur,
|
|
email: JSON.parse(item).email,
|
|
amount: JSON.parse(item).price,
|
|
opco: JSON.parse(item).opco,
|
|
modefinancement: JSON.parse(item).modefinancement,
|
|
|
|
|
|
}
|
|
))}
|
|
|
|
columns={columns_preinscrit}
|
|
pageSize={10}
|
|
className="datagridclass"
|
|
|
|
rowsPerPageOptions={[10]}
|
|
disableSelectionOnClick
|
|
components={{
|
|
Toolbar: GridToolbar,
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<br />
|
|
{/* <Button variant="contained" onClick={GetAllClass_new}>Contained</Button>*/}
|
|
</div>
|
|
|
|
</div>}
|
|
|
|
{String(submenu) === String("inscrit") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
|
|
|
|
<div style={{ height: 500, width: '100%' }}>
|
|
<DataGrid
|
|
checkboxSelection
|
|
onSelectionModelChange={(newSelectionModel_insc) => {
|
|
setSelectionModel(newSelectionModel_insc);
|
|
//console.log("ch selected--" + newSelectionModel);
|
|
}}
|
|
selectionModel={selectionModel_insc}
|
|
|
|
|
|
|
|
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
|
rows={rowss_insc.map((item, index) => (
|
|
{
|
|
id: index,
|
|
nom: JSON.parse(item).nom,
|
|
prenom: JSON.parse(item).prenom,
|
|
employeur: JSON.parse(item).employeur,
|
|
email: JSON.parse(item).email,
|
|
amount: JSON.parse(item).price,
|
|
opco: JSON.parse(item).opco,
|
|
modefinancement: JSON.parse(item).modefinancement,
|
|
|
|
|
|
}
|
|
))}
|
|
|
|
columns={columns_inscrit}
|
|
pageSize={10}
|
|
className="datagridclass"
|
|
|
|
rowsPerPageOptions={[10]}
|
|
disableSelectionOnClick
|
|
components={{
|
|
Toolbar: GridToolbar,
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<br />
|
|
{/* <Button variant="contained" onClick={GetAllClass_new}>Contained</Button>*/}
|
|
</div>
|
|
</div>}
|
|
|
|
|
|
{String(submenu) === String("emargement") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
|
|
|
|
|
|
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
|
|
<Button className="bton_emarge" onClick={ConfirmInitListEmargement}>Initaliser la liste emargement</Button>
|
|
<Button className="bton_emarge" onClick={DownloadListEmargement}>Imprimer la liste emargement</Button>
|
|
<Button className="bton_emarge" onClick={ConfirmEnvoiListEmargement}>Envoyer les demandes d'emargement</Button><br />
|
|
|
|
</div>
|
|
|
|
{String(CreateListEmargement_api) === "true" && <div className="okUpdateData">
|
|
La liste d'emargement a été créée
|
|
</div>}
|
|
|
|
{String(CreateListEmargement_api) === "false" && <div className="koUpdateData">
|
|
{CreateListEmargement_message}
|
|
</div>}
|
|
|
|
{String(ActionMassListEmargement_api) === "true" && <div className="okUpdateData">
|
|
Les demandes d'emargement ont bien été envoyées
|
|
</div>}
|
|
|
|
{String(ActionMassListEmargement_api) === "false" && <div className="koUpdateData">
|
|
{CreateListEmargement_message}
|
|
</div>}
|
|
|
|
|
|
|
|
<div style={{ height: 500, width: '100%' }}>
|
|
<DataGrid
|
|
checkboxSelection
|
|
onSelectionModelChange={(newSelectionModel_emarg) => {
|
|
setSelectionModel_emarg(newSelectionModel_emarg);
|
|
console.log("ch selected--" + newSelectionModel_emarg);
|
|
|
|
}}
|
|
|
|
selectionModel={selectionModel_emarg}
|
|
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
|
rows={rowss_emarg.map((item, index) => (
|
|
{
|
|
id: index,
|
|
nom: JSON.parse(item).nom,
|
|
prenom: JSON.parse(item).prenom,
|
|
email: JSON.parse(item).email,
|
|
date: JSON.parse(item).date,
|
|
matin: JSON.parse(item).matin,
|
|
apresmidi: JSON.parse(item).apresmidi,
|
|
|
|
}
|
|
))}
|
|
|
|
columns={columns_list_emargement}
|
|
pageSize={10}
|
|
className="datagridclass"
|
|
|
|
rowsPerPageOptions={[10]}
|
|
disableSelectionOnClick
|
|
components={{
|
|
Toolbar: GridToolbar,
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<br />
|
|
<Button className="bton_emarge" onClick={ActionMassListEmargement}>Envoyer les demandes d'emargement</Button><br />
|
|
|
|
|
|
|
|
</div>
|
|
</div>}
|
|
|
|
|
|
{String(submenu) === String("evaluation") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
|
|
|
|
|
|
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
|
|
<Button className="bton_emarge" onClick={"ConfirmInitListEmargement"}>Initaliser les evaluation</Button>
|
|
<Button className="bton_emarge" onClick={"DownloadListEmargement"}>Imprimer les evaluation</Button>
|
|
<Button className="bton_emarge" onClick={"ConfirmEnvoiListEmargement"}>Envoyer les demandes d'evaluation</Button><br />
|
|
|
|
</div>
|
|
|
|
{String(CreateListEmargement_api) === "true" && <div className="okUpdateData">
|
|
La liste d'emargement a été créée
|
|
</div>}
|
|
|
|
{String(CreateListEmargement_api) === "false" && <div className="koUpdateData">
|
|
{CreateListEmargement_message}
|
|
</div>}
|
|
|
|
{String(ActionMassListEmargement_api) === "true" && <div className="okUpdateData">
|
|
Les demandes d'emargement ont bien été envoyées
|
|
</div>}
|
|
|
|
{String(ActionMassListEmargement_api) === "false" && <div className="koUpdateData">
|
|
{CreateListEmargement_message}
|
|
</div>}
|
|
|
|
|
|
|
|
<div style={{ height: 500, width: '100%' }}>
|
|
<DataGrid
|
|
checkboxSelection
|
|
onSelectionModelChange={(newSelectionModel_evaluation) => {
|
|
setSelectionModel_emarg(newSelectionModel_evaluation);
|
|
//console.log("ch selected--" + newSelectionModel_emarg);
|
|
|
|
}}
|
|
|
|
selectionModel={selectionModel_evaluation}
|
|
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
|
|
rows={rowss_emarg.map((item, index) => (
|
|
{
|
|
id: index,
|
|
nom: JSON.parse(item).nom,
|
|
prenom: JSON.parse(item).prenom,
|
|
email: JSON.parse(item).email,
|
|
eval_date: String(JSON.parse(item).eval_date).substring(0, 10),
|
|
eval_eval: String(JSON.parse(item).eval_eval).replace(/(<([^>]+)>)/ig, ''),
|
|
eval_note: JSON.parse(item).eval_note,
|
|
|
|
}
|
|
))}
|
|
|
|
columns={columns_list_evaluation}
|
|
pageSize={10}
|
|
className="datagridclass"
|
|
|
|
rowsPerPageOptions={[10]}
|
|
disableSelectionOnClick
|
|
components={{
|
|
Toolbar: GridToolbar,
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
<br />
|
|
<Button className="bton_emarge" onClick={ActionMassListEmargement}>Envoyer les demandes d'emargement</Button><br />
|
|
|
|
|
|
|
|
</div>
|
|
</div>}
|
|
|
|
{String(submenu) === String("divers") && <div className="detail_class_submenu_data" style={{ "border": "None" }}>
|
|
|
|
</div>}
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
{mysession && (String(submenu) === "preinscrit" || String(submenu) === "inscrit") && <div style={{ "textAlign": "left", "float": "left", "width": "100%" }}>
|
|
|
|
<Button variant="outlined" onClick={submenu_import_participant} 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 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("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"
|
|
ref={hiddenFileInput}
|
|
style={{ display: 'none' }}
|
|
name="liste_participants_file"
|
|
onChange={liste_participants_file_change}
|
|
/>
|
|
|
|
|
|
</div>}
|
|
</div>
|
|
|
|
{String(display_detail_insc) === "1" && mysession && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
|
|
Detail inscription
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
|
|
<div className="session_data" >
|
|
|
|
<div className="session_caract"> Nom<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_nom"
|
|
id="detail_nom"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Prenom<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_prenom"
|
|
id="detail_prenom"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Email<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_mail"
|
|
id="detail_mail"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Téléphone <br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_tel"
|
|
id="detail_tel"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Adresse<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_adresse"
|
|
id="detail_adresse"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
<div className="session_caract"> Code postal<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_code_postal"
|
|
id="detail_code_postal"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
<div className="session_caract"> Ville<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_ville"
|
|
id="detail_ville"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract">
|
|
Date Inscription
|
|
<DatePicker
|
|
name="detail_incr_date"
|
|
id="detail_incr_date"
|
|
selected={detailuser_date_inscription}
|
|
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
locale='fr-FR'
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Cout <br />
|
|
<TextField sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_cout"
|
|
id="detail_cout"
|
|
type="number"
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
inputProps={{ min: "1", max: "999999", step: "1" }}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
|
|
|
|
<div className="session_caract"> Mode Financement<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_mode_fin"
|
|
id="detail_mode_fin"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="session_caract"> Employeur<br />
|
|
<TextField
|
|
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="detail_employeur"
|
|
id="detail_employeur"
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
disabled={false}
|
|
className="disabled_style"
|
|
|
|
/>
|
|
</div>
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
Evaluation
|
|
|
|
</div>
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
<div className="session_caract">
|
|
Date Evaluation
|
|
<DatePicker
|
|
name="date_evaluation"
|
|
id="date_evaluation"
|
|
selected={detailuser_date_evaluation}
|
|
|
|
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
locale='fr-FR'
|
|
|
|
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Note Evaluation<br />
|
|
<TextField sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
|
|
required
|
|
name="note_eval"
|
|
id="note_eval"
|
|
type="number"
|
|
|
|
|
|
InputLabelProps={{
|
|
shrink: true,
|
|
}}
|
|
inputProps={{ min: "0", max: "5", step: "1", readOnly: true, }}
|
|
|
|
className="disabled_style"
|
|
/>
|
|
</div>
|
|
|
|
<div className="session_caract"> Evaluation<br />
|
|
<Editor
|
|
onInit={(evt, editor) => editorRef_evaluation.current = editor}
|
|
initialValue={field_evaluation}
|
|
onKeyUp={editor_keyup}
|
|
disabled={true}
|
|
|
|
init={{
|
|
resize: false,
|
|
|
|
height: 100,
|
|
menubar: false,
|
|
plugins: [
|
|
'advlist autolink lists link image charmap print preview anchor',
|
|
'searchreplace visualblocks code fullscreen',
|
|
'insertdatetime media table paste code help wordcount'
|
|
],
|
|
toolbar: false,
|
|
content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px; }'
|
|
}}
|
|
/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
|
|
</div>
|
|
|
|
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
|
|
|
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
|
|
|
{String(SendEvaluationEmail_api) === "false" && <div className="div_row koUpdateData" style={{ "textAlign": "center" }}>
|
|
{SendEvaluationEmail_message}</div>}
|
|
|
|
|
|
{String(SendEvaluationEmail_api) === "true" && <div className="div_row okUpdateData" style={{ "textAlign": "center" }}>
|
|
La demande d'evaluation ete envoyée par emaiil </div>}
|
|
|
|
|
|
<Button variant="contained" className="bton_envoyer" onClick={SendEvaluationEmail}>Envoi demande evaluation
|
|
</Button>
|
|
|
|
</div>
|
|
|
|
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
|
|
|
<Button variant="contained" className="bton_fermer" onClick={DownloadAttendeeDetail}>Imprimer fiche detaillée
|
|
</Button>
|
|
|
|
</div>
|
|
|
|
</div>}
|
|
|
|
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
certificat / Attestation
|
|
|
|
</div>
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
<div className="session_caract">
|
|
Date certification
|
|
<DatePicker
|
|
name="certif_date"
|
|
id="certif_date"
|
|
selected={detailuser_date_certification}
|
|
|
|
dateFormat="dd/MM/yyyy HH:mm"
|
|
className="disabled_style"
|
|
locale='fr-FR'
|
|
|
|
|
|
/>
|
|
</div>
|
|
|
|
</div>
|
|
<div className="div_row" style={{ "border": "None" }}>
|
|
|
|
</div>
|
|
|
|
{sessionChanged && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
|
/!\ Pensez à enregistrer les modifications
|
|
</div>}
|
|
|
|
{!sessionChanged && String(CreateSessionFormation_api) === "true" &&
|
|
<div className="div_row okUpdateData" style={{ "textAlign": "center" }}>
|
|
La session de formation à été bien mise à jour.
|
|
</div>}
|
|
|
|
{!sessionChanged && String(CreateSessionFormation_api) === "false" &&
|
|
<div className="div_row koUpdateData" style={{ "textAlign": "center" }}>
|
|
{CreateSessionFormation_message}
|
|
</div>}
|
|
|
|
|
|
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
|
|
|
|
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
|
|
|
|
|
|
{String(SendAttendeeAttestation_api) === "true" &&
|
|
<div className="div_row okUpdateData" style={{ "textAlign": "center" }}>
|
|
L'attestation a été bien envoyée par email
|
|
</div>}
|
|
|
|
{String(SendAttendeeAttestation_api) === "false" &&
|
|
<div className="div_row koUpdateData" style={{ "textAlign": "center" }}>
|
|
{SendAttendeeAttestation_message}
|
|
</div>}
|
|
|
|
|
|
<Button variant="contained" className="bton_envoyer" onClick={SendAttendeeAttestation}>Delivrer certificat
|
|
</Button>
|
|
</div>
|
|
|
|
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
|
|
|
|
<Button variant="contained" className="bton_fermer" onClick={DownloadAttendeeAttestation}>Imprimer certificat
|
|
</Button>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>}
|
|
</div>
|
|
<div className="pieddepage">
|
|
<Footer />
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</div >
|
|
);
|
|
}
|
|
export default GestionAdministrative;
|