17/12/2023 - 21h12

recette2
cherif 2023-12-17 21:06:45 +01:00
parent 906ff4aad7
commit 49334cee17
5 changed files with 466 additions and 185 deletions

View File

@ -1200,6 +1200,13 @@ const AddParnerClient = (props) => {
if (document.getElementsByName("client_email")) {
client_email = document.getElementsByName("client_email")[0].value;
}
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!client_email.match(validRegex)) {
alert("L'adresse email est invalide.");
return;
}
form.append("email", client_email);
@ -1208,6 +1215,11 @@ const AddParnerClient = (props) => {
client_nom = document.getElementsByName("client_nom")[0].value;
}
form.append("nom", client_nom);
if (String(client_nom).trim() === "") {
alert("Le nom du client est invalide.");
return;
}
var client_raison_sociale = ""
if (document.getElementsByName("client_raison_sociale")) {
@ -1332,6 +1344,12 @@ const AddParnerClient = (props) => {
if (document.getElementsByName("client_email")) {
client_email = document.getElementsByName("client_email")[0].value;
}
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!client_email.match(validRegex)) {
alert("L'adresse email est invalide.");
return;
}
form.append("email", client_email);
@ -1339,6 +1357,11 @@ const AddParnerClient = (props) => {
if (document.getElementsByName("client_nom")) {
client_nom = document.getElementsByName("client_nom")[0].value;
}
if (String(client_nom).trim() === "") {
alert("Le nom du client est invalide.");
return;
}
form.append("nom", client_nom);
var client_raison_sociale = ""
@ -2151,39 +2174,6 @@ const AddParnerClient = (props) => {
<Button variant="outlined" onClick={submenu_donnee_client} className="detail_submenu" id='submenu_donnee_client' name='submenu_donnee_client'>Données Client</Button>
</div>
<div className="session_caract">
Email <br />
<TextField
required
name="client_email"
//label="Email"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_email}
onChange={(e) => setclient_email(e.target.value)}
/>
</div>
<div className="session_caract"> Nom <br />
<TextField
required
name="client_nom"
//label="Nom"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_nom}
onChange={(e) => setclient_nom(e.target.value)}
/>
</div>
<div className="session_caract"> Raison sociale <br />
@ -2200,6 +2190,24 @@ const AddParnerClient = (props) => {
onChange={(e) => setclient_raison_sociale(e.target.value)}
/>
</div>
<div className="session_caract"> <b>Nom </b> <br />
<TextField
required
name="client_nom"
//label="Nom"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_nom}
onChange={(e) => setclient_nom(e.target.value)}
/>
</div>
<div className="session_caract"> Type client <br />
<TextField
@ -2262,6 +2270,22 @@ const AddParnerClient = (props) => {
/>
</div>
<div className="session_caract">
<b>Email</b> <br />
<TextField
required
name="client_email"
//label="Email"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_email}
onChange={(e) => setclient_email(e.target.value)}
/>
</div>
<div className="session_caract"> Adresse <br />
<TextField
required
@ -2426,24 +2450,24 @@ const AddParnerClient = (props) => {
{String(submenu).trim() === "submenu_donnee_client" && <div className="training_data" onChange={DataUpdated}>
<div className="session_caract"> Email<br />
<div className="session_caract"> Raison sociale <br />
<TextField
required
name="client_email"
//label="Email"
name="client_raison_sociale"
//label="Raison sociale"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_email}
onChange={(e) => setclient_email(e.target.value)}
value={p_client_raison_sociale}
onChange={(e) => setclient_raison_sociale(e.target.value)}
/>
</div>
<div className="session_caract"> Nom<br />
<div className="session_caract"><b> Nom </b><br />
<TextField
required
name="client_nom"
@ -2460,20 +2484,6 @@ const AddParnerClient = (props) => {
</div>
<div className="session_caract"> Raison sociale <br />
<TextField
required
name="client_raison_sociale"
//label="Raison sociale"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_raison_sociale}
onChange={(e) => setclient_raison_sociale(e.target.value)}
/>
</div>
{String(formedit_mode) !== "1" && <div className="session_caract"> Type client<br />
<TextField
@ -2553,6 +2563,22 @@ const AddParnerClient = (props) => {
/>
</div>
<div className="session_caract"> <b> Email </b> <br />
<TextField
required
name="client_email"
//label="Email"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_client_email}
onChange={(e) => setclient_email(e.target.value)}
/>
</div>
<div className="session_caract"> Adresse<br />
<TextField
required

View File

@ -32,6 +32,8 @@ import { Fab } from "@material-ui/core";
import fileDownload from 'js-file-download'
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import Checkbox from '@mui/material/Checkbox';
import Autocomplete from '@mui/material/Autocomplete';
const Config_Documents = (props) => {
const history = useHistory();
@ -858,6 +860,11 @@ const Config_Documents = (props) => {
const [p_collection, setp_collection] = useState();
function add_selected_fields() {
if(!p_champ_table || String(p_champ_table) === "undefined"){
alert(" vous devez choisir un champ ");
return;
}
if (String(partner_document_data_edit_mode) === "1") {
// Cas d'un update
if (document_principal_ou_corp_mail && String(document_principal_ou_corp_mail) == "2") {
@ -1146,6 +1153,9 @@ const Config_Documents = (props) => {
}
const [New_Get_Given_Personnalisable_Collection_and_Fields_result, setNew_Get_Given_Personnalisable_Collection_and_Fields_result] = useState([]);
const [Get_Given_Personnalisable_Collection_and_Fields_api, setGet_Given_Personnalisable_Collection_and_Fields_api] = useState();
const [Get_Given_Personnalisable_Collection_and_Fields_message, setGet_Given_Personnalisable_Collection_and_Fields_message] = useState();
const [Get_Given_Personnalisable_Collection_and_Fields_result, setGet_Given_Personnalisable_Collection_and_Fields_result] = useState();
@ -1172,6 +1182,30 @@ const Config_Documents = (props) => {
setGet_Given_Personnalisable_Collection_and_Fields_api("true");
setGet_Given_Personnalisable_Collection_and_Fields_result(res.data.message);
const new_data = res.data.message.map((x) => {
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
//---
var local_courrier_template_ref_interne = JSON.parse(x).courrier_template_ref_interne;
var local_nom_champ_technique = JSON.parse(x).nom_champ_technique;
var local_nom_champ_fonctionel = JSON.parse(x).nom_champ_fonctionel;
//---
return {
"id": localid, "_id": String(local_id), "label": local_nom_champ_fonctionel, "courrier_template_ref_interne": local_courrier_template_ref_interne,
"nom_champ_technique": local_nom_champ_technique, "nom_champ_fonctionel": local_nom_champ_fonctionel
}
// return {"_id": " + str(local_id) + ", "label": " + local_courrier_template_ref_interne + '" , "courrier_template_ref_interne": "' + local_courrier_template_ref_interne + '", "nom_champ_technique": "' + local_nom_champ_technique + '", "nom_champ_fonctionel": "' + local_nom_champ_fonctionel + '","valide": "1" };
});
setNew_Get_Given_Personnalisable_Collection_and_Fields_result(new_data);
}
else {
setGet_Given_Personnalisable_Collection_and_Fields_api("false");
@ -1594,6 +1628,8 @@ const Config_Documents = (props) => {
clear_one_detail_fields();
setadd_one_document();
setdisplay_add_one_document();
setp_champ_table("");
}
@ -2576,34 +2612,19 @@ const Config_Documents = (props) => {
</div>
<div className="div_row_droite_1_tier" style={{ "textAlign": "left" }}>
{String(partner_document_data_edit_mode) === "1" &&
<div className="div_row" > Choisir un champ <br />
<TextField
name="champ_table"
id="champ_table"
select
InputLabelProps={{
shrink: true,
<Autocomplete
disablePortal
id="combo-box-demo"
options={New_Get_Given_Personnalisable_Collection_and_Fields_result}
onChange={(event, value) => {
setp_champ_table(value.nom_champ_technique);
}}
disabled={false}
className="disabled_style enable_style"
value={p_champ_table}
onChange={(e) => {
setp_champ_table(e.target.value);
}}
>
{Get_Given_Personnalisable_Collection_and_Fields_result &&
Get_Given_Personnalisable_Collection_and_Fields_result.filter((local_mymanager) => JSON.parse(local_mymanager).courrier_template_ref_interne === p_detail_ref_interne).map((mycollection) => (
<MenuItem key={JSON.parse(mycollection).nom_champ_technique}
value={JSON.parse(mycollection).nom_champ_technique}
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%", "fontSize": "12px" }}>
{JSON.parse(mycollection).nom_champ_fonctionel}&nbsp;&nbsp;
</MenuItem>
))}
</TextField>
</div>}
renderInput={(params) => <TextField {...params} label="Choisir " />
}
/>
}
{String(partner_document_data_edit_mode) === "1" &&
<div className="div_row">
@ -2615,6 +2636,7 @@ const Config_Documents = (props) => {
</div>
{p_detail_type_doc && String(p_detail_type_doc).toLocaleLowerCase() === "email" && <div className="div_row" style={{ "marginRight": "15px" }} >
<div>

View File

@ -45,7 +45,9 @@ import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import { confirmAlert } from 'react-confirm-alert';
import ToggleSwitch from "./ToggleSwitch";
import Module_Historique_Action from "./Module_Historique_Action";
import { HiDocumentCheck } from "react-icons/hi2";
import { BsSend } from "react-icons/bs";
import Autocomplete from '@mui/material/Autocomplete';
const DisplayPartnerSession = (props) => {
const history = useHistory();
@ -1689,7 +1691,7 @@ const DisplayPartnerSession = (props) => {
}
}
console.log("4");
if (document.getElementById('detail_session')) {
//myRef.current.scrollIntoView({ behavior: "smooth" });
@ -2069,7 +2071,7 @@ const DisplayPartnerSession = (props) => {
if (one_prenom_part.trim() == "") {
alert(" Vous devez saisir le prenom du participant");
alert(" Vous devez saisir le prénom du participant");
return;
}
@ -2602,6 +2604,29 @@ const DisplayPartnerSession = (props) => {
form.append("nom", p_detail_nom);
form.append("prenom", p_detail_prenom);
form.append("email", p_detail_mail);
form.append("telephone", p_detail_tel);
if (String(p_detail_nom).trim().length < 2) {
alert("Le nom est invalide.");
return;
}
if (String(p_detail_prenom).trim().length < 2) {
alert("Le prénom est invalide.");
return;
}
if (String(p_detail_tel).trim().length < 2) {
alert("Le Téléphone est invalide.");
return;
}
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_detail_mail.match(validRegex)) {
alert("L'adresse email est invalide.");
return;
}
if (p_detail_employeur)
form.append("employeur", p_detail_employeur);
@ -2627,7 +2652,8 @@ const DisplayPartnerSession = (props) => {
form.append("opco", "");
form.append("_id", selected_inscription_id);
if (p_detail_client_rattachement_nom)
if (p_detail_client_rattachement_id)
form.append("client_rattachement_id", p_detail_client_rattachement_id);
else
form.append("client_rattachement_id", "");
@ -4266,9 +4292,11 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
}
const [SessionendDateInscription, setSessionendDateInscription] = useState();
const [New_GetCurrentPartnerClass_result, setNew_GetCurrentPartnerClass_result] = useState([]);
const [GetCurrentPartnerClass_api, setGetCurrentPartnerClass_api] = useState();
const [GetCurrentPartnerClass_message, setGetCurrentPartnerClass_message] = useState();
const [GetCurrentPartnerClass_result, setGetCurrentPartnerClass_result] = useState();
const [GetCurrentPartnerClass_result, setGetCurrentPartnerClass_result] = useState([]);
function GetCurrentPartnerClass(event) {
var form = new FormData();
@ -4308,11 +4336,39 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
if (String(res.data.status) === String("true")) {
//console.log(" In GetCurrentPartnerClass res.data.status = " + res.data.status);
//console.log(" In GetCurrentPartnerClass res.data.message r_class = " + res.data.message);
console.log(" In GetCurrentPartnerClass res.data.message r_class = " + res.data.message);
setGetCurrentPartnerClass_api("true");
setGetCurrentPartnerClass_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_internal_url = JSON.parse(x).internal_url;
var local_title = JSON.parse(x).title;
//---
var node = {
"_id": local_id, "id": localid,
"label": local_title, "internal_url": local_internal_url,
"title": local_title
};
new_data2.push(node);
// return {"_id": " + str(local_id) + ", "label": " + local_courrier_template_ref_interne + '" , "courrier_template_ref_interne": "' + local_courrier_template_ref_interne + '", "nom_champ_technique": "' + local_nom_champ_technique + '", "nom_champ_fonctionel": "' + local_nom_champ_fonctionel + '","valide": "1" };
});
if (new_data2.length > 0)
setNew_GetCurrentPartnerClass_result(new_data2);
} else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
@ -7796,9 +7852,17 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
}
//form.append("File", list_files);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convention_From_Session_By_Email/";
if (String(selected_convention_id) === "default_mail") {
// Il s'agit d'envoyer les convention par defaut de type mail
myurl = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Default_Convention_From_Session_By_Email/";
}
setLoading(true);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convention_From_Session_By_Email/",
myurl,
{
method: 'POST',
body: form,
@ -9266,7 +9330,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
setselected_convention_email_test();
///Get_Stagiaire_List_Email_Com();
setDialog_convention_open(true);
}} >Editer une convention</label><br />
}} ><HiDocumentCheck /> <BsSend /> Editer une convention</label> <br />
</div>
</div>
@ -10134,7 +10198,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
{String(addOneSession) === "1" && <div className="div_row session_data" style={{ "border": "None", "backgroundColor": "#F0F0F0" }} >
<h5> Ajout d'une session de formation</h5>
<div className="session_caract" > Choisir une formation *<br />
{/*<div className="session_caract" > Choisir une formation *<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -10165,10 +10229,31 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</TextField>
</div>*/}
<div className="session_caract" > Choisir une formation <br />
<Autocomplete
disablePortal
id="combo-box-demo"
className="disabled_style enable_style"
options={New_GetCurrentPartnerClass_result}
onChange={(event, value) => {
// setp_champ_table(value.nom_champ_technique);
setone_selected_internal_url(value.internal_url);
setp_one_myclass_title(value.internal_url)
Get_Class_Data(value.internal_url);
}}
renderInput={(params) => <TextField {...params} label="Choisir " />
}
/>
</div>
<div className="session_caract"> Code Session *<br />
<div className="session_caract"><b> Code Session </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11161,7 +11246,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
{String(addOneParticipant) === "1" && <div className="div_row session_data" style={{ "border": "None", "backgroundColor": "#F0F0F0" }}>
<div className="titre1"> Ajout d'un nouveau participant à la session <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="session_caract"> Nom *<br />
<div className="session_caract"> <b> Nom </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11182,7 +11267,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</div>
<div className="session_caract"> Prenom *<br />
<div className="session_caract"> <b> Prenom </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11202,7 +11287,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Email *<br />
<div className="session_caract"> <b> Email </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11222,7 +11307,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> téléphone *<br />
<div className="session_caract"> <b> téléphone </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11541,7 +11626,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
{String(addOneParticipant) === "1" && <div className="div_row session_data" style={{ "border": "None", "backgroundColor": "#F0F0F0" }}>
<h5> Ajout d'un nouveau participant</h5>
<div className="session_caract"> Nom *<br />
<div className="session_caract"> <b> Nom </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11559,7 +11644,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</div>
<div className="session_caract"> Prenom *<br />
<div className="session_caract"> <b> Prénom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11576,7 +11661,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Email *<br />
<div className="session_caract"> <b> Email </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11595,7 +11680,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> téléphone *<br />
<div className="session_caract"> <b> Téléphone </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11612,7 +11697,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Statut Inscription ss*<br />
<div className="session_caract"> Statut Inscription <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11705,7 +11790,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
<div className="titre1"> Ajout d'un nouveau participant a la session <u> {selected_code_session} </u> de la formation <u> {selected_class_title} </u></div>
<div className="session_caract"> Nom *<br />
<div className="session_caract"> <b> Nom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11726,7 +11811,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</div>
<div className="session_caract"> Prenom *<br />
<div className="session_caract"> <b> Prénom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11746,7 +11831,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Email *<br />
<div className="session_caract"> <b> Email </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -11766,7 +11851,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> téléphone *<br />
<div className="session_caract"> <b> Téléphone </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -12218,8 +12303,8 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
className="disabled_style"
value={p_detail_client_rattachement_nom}
onChange={(e) => {
//setp_detail_client_rattachement_id(e.target.value);
setp_detail_client_rattachement_nom(e.target.value);
setp_detail_client_rattachement_id(e.target.value);
//setp_detail_client_rattachement_nom(e.target.value);
setparticipant_data_changed("1");
Dialog_1_handle_change_participant_session(" Attention, vous allez modifier le client de rattachement du participant");
}
@ -12299,7 +12384,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
</div>}
<div className="session_caract"> Nom<br />
<div className="session_caract"> <b> Nom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -12321,7 +12406,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Prenom<br />
<div className="session_caract"> <b> Prénom </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -12342,7 +12427,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Email<br />
<div className="session_caract"> <b> Email </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -12363,7 +12448,7 @@ Update du 22/10/2023 - Gestion des champs spécifiques ajoutés par le partenair
/>
</div>
<div className="session_caract"> Téléphone <br />
<div className="session_caract"> <b> Téléphone </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required

View File

@ -48,6 +48,8 @@ import Switch from '@mui/material/Switch';
import { FcSearch } from "react-icons/fc";
import { useHistory } from "react-router-dom";
import Module_Historique_Action from "./Module_Historique_Action";
import ToggleSwitch from "./ToggleSwitch";
import Autocomplete from '@mui/material/Autocomplete';
const DisplayPartnerStagiaires = (props) => {
const history = useHistory();
@ -1969,7 +1971,7 @@ const DisplayPartnerStagiaires = (props) => {
}
const [New_Getall_TrainingSession_result, setNew_Getall_TrainingSession_result] = useState();
const [Getall_TrainingSession_api, setGetall_TrainingSession_api] = useState();
const [Getall_TrainingSession_message, setGetall_TrainingSession_message] = useState();
@ -1987,10 +1989,41 @@ const DisplayPartnerStagiaires = (props) => {
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_TrainingSession res.data.status = " + res.data.status);
//console.log(" In Getall_TrainingSession res.data.message r_class = " + res.data.message);
console.log(" In Getall_TrainingSession res.data.message r_class = " + res.data.message);
setGetall_TrainingSession_api("true");
setGetall_TrainingSession_result(res.data.message);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;
var local_internal_url = JSON.parse(x).internal_url;
var local_title_session = JSON.parse(x).titre;
var local_code_session = JSON.parse(x).code_session;
//---
var node = {
"_id": local_id,
"id": localid,
"label": local_code_session,
"class_internal_url": local_internal_url,
"titre": local_title_session
};
new_data2.push(node);
// return {"_id": " + str(local_id) + ", "label": " + local_courrier_template_ref_interne + '" , "courrier_template_ref_interne": "' + local_courrier_template_ref_interne + '", "nom_champ_technique": "' + local_nom_champ_technique + '", "nom_champ_fonctionel": "' + local_nom_champ_fonctionel + '","valide": "1" };
});
if (new_data2.length > 0)
setNew_Getall_TrainingSession_result(new_data2);
}
else {
setGetall_TrainingSession_api("false");
@ -2635,6 +2668,28 @@ const DisplayPartnerStagiaires = (props) => {
form.append("email", p_one_email_part);
form.append("telephone", p_one_phone_part);
if (String(p_one_nom_part).trim().length < 2) {
alert("Le nom est invalide.");
return;
}
if (String(p_one_prenom_part).trim().length < 2) {
alert("Le prenom est invalide.");
return;
}
if (String(p_one_phone_part).trim().length < 2) {
alert("Le Téléphone est invalide.");
return;
}
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_one_email_part.match(validRegex)) {
alert("L'adresse email est invalide.");
return;
}
if (p_one_adresse_part)
form.append("adresse", p_one_adresse_part);
else
@ -2772,6 +2827,30 @@ const DisplayPartnerStagiaires = (props) => {
form.append("nom", p_detail_nom);
form.append("prenom", p_detail_prenom);
form.append("email", p_detail_mail);
form.append("telephone", p_detail_tel);
if (String(p_detail_nom).trim().length < 2) {
alert("Le nom est invalide.");
return;
}
if (String(p_detail_prenom).trim().length < 2) {
alert("Le prenom est invalide.");
return;
}
if (String(p_detail_tel).trim().length < 2) {
alert("Le Téléphone est invalide.");
return;
}
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_detail_mail.match(validRegex)) {
alert("L'adresse email est invalide.");
return;
}
if (p_detail_employeur)
form.append("employeur", p_detail_employeur);
@ -2836,7 +2915,8 @@ const DisplayPartnerStagiaires = (props) => {
form.append("_id", selected_id);
if (p_detail_client_rattachement_nom)
if (p_detail_client_rattachement_id)
form.append("client_rattachement_id", p_detail_client_rattachement_id);
else
form.append("client_rattachement_id", "");
@ -4153,7 +4233,7 @@ const DisplayPartnerStagiaires = (props) => {
else
form.append("tuteur1_prenom", "");
if (p_detail_tuteur1_email && String(p_detail_tuteur2_email).trim() !== "") {
if (p_detail_tuteur1_email && String(p_detail_tuteur1_email).trim() !== "") {
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_detail_tuteur1_email.match(validRegex)) {
alert("L'adresse email est invalide.");
@ -4828,11 +4908,43 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract_Dialog" > Inclure Communication
{/* <div className="session_caract_Dialog" > Inclure Communication
<Switch checked={p_detail_tuteur1_include_com} onChange={(e) => {
setp_detail_tuteur1_include_com(e.target.checked)
}} />
</div>*/}
<Tooltip id="tooltip_com1" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="tooltip_com1" data-tooltip-content="Si oui, ce tuteur recevra tous les emails échangés">
<div className="session_caract" style={{ "float": "right", "fontSize": "12px", 'fontWeight': 'bolder', "width": "100%" }}>
<nav onChange={(e) => {
//console.log("is_contact_include_com == ", is_contact_include_com);
if (p_detail_tuteur1_include_com === true)
setp_detail_tuteur1_include_com(false)
else {
// Pour activier la fontion de "include com", le contact foit avoir une adresse email
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_detail_tuteur1_email.match(validRegex)) {
alert("L'adresse email est invalide. Pour activer cette fontion, vous devez saisir une adresse email valide");
return;
}
setp_detail_tuteur1_include_com(true);
}
}}
id="toggleSwitchNav" name="toggleSwitchNav">
<ToggleSwitch
label="Inclure / Exclure de la communication ? " id="toggleSwitch" name="toggleSwitch" checked={p_detail_tuteur1_include_com} style={{ height: "2rem" }} />
</nav>
</div>
</a>
</DialogContent>}
@ -4958,11 +5070,44 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract_Dialog" > Inclure Communication
{/*<div className="session_caract_Dialog" > Inclure Communication
<Switch checked={p_detail_tuteur2_include_com} onChange={(e) => {
setp_detail_tuteur2_include_com(e.target.checked)
}} />
</div>*/}
<Tooltip id="tooltip_com" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="tooltip_com" data-tooltip-content="Si oui, ce tuteur recevra tous les emails échangés">
<div className="session_caract" style={{ "float": "right", "fontSize": "12px", 'fontWeight': 'bolder', "width": "100%" }}>
<nav onChange={(e) => {
//console.log("is_contact_include_com == ", is_contact_include_com);
if (p_detail_tuteur2_include_com === true)
setp_detail_tuteur2_include_com(false)
else {
// Pour activier la fontion de "include com", le contact foit avoir une adresse email
var validRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;
if (!p_detail_tuteur2_email.match(validRegex)) {
alert("L'adresse email est invalide. Pour activer cette fontion, vous devez saisir une adresse email valide");
return;
}
setp_detail_tuteur2_include_com(true);
}
}}
id="toggleSwitchNav" name="toggleSwitchNav">
<ToggleSwitch
label="Inclure / Exclure de la communication ? " id="toggleSwitch" name="toggleSwitch" checked={p_detail_tuteur2_include_com} style={{ height: "2rem" }} />
</nav>
</div>
</a>
</DialogContent>}
@ -5957,7 +6102,7 @@ const DisplayPartnerStagiaires = (props) => {
</TextField>
</div>
<div className="session_caract"> Session <br />
<div className="session_caract"> <b> Session </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -5997,8 +6142,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="session_caract"> Nom *<br />
<div className="session_caract"> <b> Nom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6020,7 +6164,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="session_caract"> Prenom *<br />
<div className="session_caract"> <b> Prenom </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6040,7 +6184,7 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> Email *<br />
<div className="session_caract"> <b> Email </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6060,7 +6204,7 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> téléphone *<br />
<div className="session_caract"> <b> Téléphone </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6191,7 +6335,7 @@ const DisplayPartnerStagiaires = (props) => {
</TextField>
</div>
<div className="session_caract"> Client <br />
<div className="session_caract"> Client 2<br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6424,7 +6568,7 @@ const DisplayPartnerStagiaires = (props) => {
<div className="session_data" >
<div>
{String(participant_data_edit_mode) !== "1" && <div className="session_caract"> Session <br />
{String(participant_data_edit_mode) !== "1" && <div className="session_caract"> <b> Session </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6444,7 +6588,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>}
{String(participant_data_edit_mode) === "1" && <div className="session_caract"> Session <br />
{String(participant_data_edit_mode) === "1" && <div className="session_caract"> <b> Session </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6492,8 +6636,8 @@ const DisplayPartnerStagiaires = (props) => {
className="disabled_style"
value={p_detail_client_rattachement_nom}
onChange={(e) => {
//setp_detail_client_rattachement_id(e.target.value);
setp_detail_client_rattachement_nom(e.target.value);
setp_detail_client_rattachement_id(e.target.value);
//setp_detail_client_rattachement_nom(e.target.value);
setparticipant_data_changed("1");
Dialog_1_handle_change_participant_session(" Attention, vous allez modifier le client de rattachement du participant");
}
@ -6622,7 +6766,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>}
<div className="session_caract"> Nom<br />
<div className="session_caract"> <b> Nom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6644,7 +6788,7 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> Prenom<br />
<div className="session_caract"> <b> Prenom </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6664,7 +6808,7 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> Email<br />
<div className="session_caract"> <b> Email </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -6686,7 +6830,7 @@ const DisplayPartnerStagiaires = (props) => {
/>
</div>
<div className="session_caract"> Téléphone <br />
<div className="session_caract"> <b> Téléphone </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -7059,7 +7203,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="tuteur_field"> Téléphone <br />
<div className="tuteur_field"> <b> Téléphone </b><br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -7160,7 +7304,7 @@ const DisplayPartnerStagiaires = (props) => {
</div>
<div className="tuteur_field"> Téléphone <br />
<div className="tuteur_field"> <b> Téléphone </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required

View File

@ -467,6 +467,7 @@
width: 100%;
border-radius: 1rem;
text-align: right;
padding-right: 5px;
}
@ -1040,6 +1041,7 @@
width: 30%;
border-radius: 1rem;
text-align: right;
padding-right: 10px;
}
@ -1209,6 +1211,7 @@
width: 30%;
border-radius: 1rem;
text-align: right;
padding-right: 10px;
}
@ -1676,6 +1679,7 @@
width: 30%;
border-radius: 1rem;
text-align: right;
padding-right: 15px;
}
.selectsession {