branche_01062025
Cherif 2026-07-16 21:45:09 +02:00
parent 7f58f2b35e
commit d1310c2e9a
2 changed files with 145 additions and 8 deletions

View File

@ -29344,6 +29344,8 @@ const DisplayPartnerSession = (props) => {
id='menu_import_participant' name='menu_import_participant'>Importer des participants excel  
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button>
<Button variant="outlined"
onClick={(event) => {

View File

@ -4,6 +4,7 @@ import MenuItem from '@mui/material/MenuItem';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import excel_icone from "../mysy_img/excel_icone.png";
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import MoreVertIcon from '@mui/icons-material/MoreVert';
@ -2403,7 +2404,7 @@ const Session_Admission_FI = (props) => {
]
const New_Option_Piece_Identite = [
{ "id": "cni", "label": "CNI", "value": "cni" },
{ "id": "cni", "label": "CNI", "value": "cni" },
{ "id": "permis", "label": "Permis Conduire", "value": "permis" },
{ "id": "passport", "label": "Passport", "value": "passport" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
@ -2868,7 +2869,7 @@ const Session_Admission_FI = (props) => {
}
const [p_detail_inscrit_nom, setp_detail_inscrit_nom] = useState("");
const [p_detail_inscrit_nom_fille, setp_detail_inscrit_nom_fille] = useState("");
const [p_detail_inscrit_nom_fille, setp_detail_inscrit_nom_fille] = useState("");
const [p_detail_inscrit_prenom, setp_detail_inscrit_prenom] = useState("");
const [p_detail_inscrit_email, setp_detail_inscrit_email] = useState("");
const [p_detail_inscrit_telephone, setp_detail_inscrit_telephone] = useState("");
@ -2949,7 +2950,7 @@ const Session_Admission_FI = (props) => {
}
if (tmp.nom_fille) {
if (tmp.nom_fille) {
setp_detail_inscrit_nom_fille(tmp.nom_fille);
} else {
setp_detail_inscrit_nom_fille("");
@ -3481,6 +3482,109 @@ const Session_Admission_FI = (props) => {
}
const hiddenFileInput_session = React.useRef(null);
const [session_file_name, setsession_file_name] = useState();
function submenu_import_session() {
setsession_file_name();
setAdd_Admission_Inscrit_Mass_api();
hiddenFileInput_session.current.click();
}
const [participant_file_name, setparticipant_file_name] = useState();
function submenu_import_participant() {
setparticipant_file_name();
setAdd_Admission_Inscrit_Mass_api();
hiddenFileInput.current.click();
}
const hiddenFileInput = React.useRef(null);
const [Add_Admission_Inscrit_Mass_api, setAdd_Admission_Inscrit_Mass_api] = useState();
const [Add_Admission_Inscrit_Mass_result, setAdd_Admission_Inscrit_Mass_result] = useState();
const [Add_Admission_Inscrit_Mass_message, setAdd_Admission_Inscrit_Mass_message] = useState();
const Add_Admission_Inscrit_Mass = 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 > 10000000) {
setdisplay_alert_mysy("1");
setalert_message("Le fichier ne doit pas dépasser un 1 Méga octets");
setalert_type("error");
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("admission_session_id", selected_id);
//formData.append("session_id", selected_session_id);
//formData.append("class_internal_url", selected_internal_url);
//console.log("token = " + stored_cookie);
setLoading(true);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/Add_Admission_Candidat_mass_for_One_Session/",
{
method: 'POST',
body: formData,
}
)
.then((response) => response.json())
.then((result) => {
if (String(result['status']) === String("true")) {
setLoading(false);
//console.log('Success:', result['message']);
setAdd_Admission_Inscrit_Mass_result(result['message']);
setAdd_Admission_Inscrit_Mass_api("true");
Getall_Partner_Session_Inscrit();
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("success");
} else if (String(result['status']) === String("Err_Connexion")) {
setLoading(false);
// alert('Erreur: ' + result['message']);
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("error");
history.push("/Connexion");
}
else {
setLoading(false);
setAdd_Admission_Inscrit_Mass_message(result['message']);
setAdd_Admission_Inscrit_Mass_api("false");
// alert(result['message']);
setdisplay_alert_mysy("1");
setalert_message(result['message']);
setalert_type("error");
}
})
.catch((error) => {
setLoading(false);
console.error('Error:', error);
setAdd_Admission_Inscrit_Mass_api("false");
alert(" Impossible d'importer la liste des candidats");
});
};
const [Add_Update_Inscrit_To_Session_Admiss_api, setAdd_Update_Inscrit_To_Session_Admiss_api] = useState();
const [Add_Update_Inscrit_To_Session_Admiss_message, setAdd_Update_Inscrit_To_Session_Admiss_message] = useState();
@ -3557,7 +3661,7 @@ const Session_Admission_FI = (props) => {
form.append("date_naissance", format(p_detail_inscrit_date_naissance, 'dd/MM/yyyy'));
form.append("nom", p_detail_inscrit_nom);
form.append("nom_fille", p_detail_inscrit_nom_fille);
form.append("nom_fille", p_detail_inscrit_nom_fille);
form.append("prenom", p_detail_inscrit_prenom);
form.append("email", p_detail_inscrit_email);
form.append("telephone", p_detail_inscrit_telephone);
@ -6989,7 +7093,7 @@ const Session_Admission_FI = (props) => {
componentsProps={{ toolbar: { data_colums: columns_inscrit } }}
onSelectionModelChange={(newSelectionModel) => {
setselectionModel_grp_apprenant(newSelectionModel);
setselectionModel_inscrit(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
@ -7006,7 +7110,7 @@ const Session_Admission_FI = (props) => {
id: index,
_id: JSON.parse(item)._id,
nom: JSON.parse(item).nom,
nom_fille: JSON.parse(item).nom_fille,
nom_fille: JSON.parse(item).nom_fille,
prenom: JSON.parse(item).prenom,
email: JSON.parse(item).email,
date_naissance: JSON.parse(item).date_naissance,
@ -7239,6 +7343,37 @@ const Session_Admission_FI = (props) => {
</Button>}
<Button variant="outlined"
onClick={(event) => {
submenu_import_participant()
}}
className="detail_class_submenu bton_import_excel" style={{
"background": "#c8cfd5",
"color": "black", "width": "auto", maxWidth: '20rem'
}}
id='menu_import_participant' name='menu_import_participant'>Importer des candidats excel &nbsp;
<img src={excel_icone} alt="ajout csv" className="icon_excel" />
</Button>
<br />
{session_file_name && <nav><i>{session_file_name}</i></nav>}
{String(Add_Admission_Inscrit_Mass_api) === String("true") && <nav className="okUpdateData"> Les sessions ont été correctement importées</nav>}
{String(Add_Admission_Inscrit_Mass_api) === String("false") && <nav className="koUpdateData"> {Add_Admission_Inscrit_Mass_message} </nav>}
<input type="file"
accept=".csv"
ref={hiddenFileInput}
style={{ display: 'none' }}
name="liste_sessions_file"
onChange={Add_Admission_Inscrit_Mass}
/>
<a href='/sample/template_import_session_formation.csv' download>Télécharger un fichier modèle </a>
&nbsp;
@ -7482,7 +7617,7 @@ const Session_Admission_FI = (props) => {
</div>
{p_detail_inscrit_civilite !== "m" && <div className="session_caract"> Nom jeune fille <br />
{p_detail_inscrit_civilite !== "m" && <div className="session_caract"> Nom jeune fille <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -8090,7 +8225,7 @@ const Session_Admission_FI = (props) => {
</div>
{p_detail_inscrit_civilite !== "m" && <div className="session_caract"> Nom jeune fille <br />
{p_detail_inscrit_civilite !== "m" && <div className="session_caract"> Nom jeune fille <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required