12/10/2025 - 17:14

branche_01062025
Cherif 2025-10-12 17:14:12 +02:00
parent aeb9ec9af3
commit 58e8e842bf
18 changed files with 3549 additions and 116 deletions

View File

@ -6412,7 +6412,7 @@ const Conseil_Classe = (props) => {
"border": "None", "fontSize": "18px", "fontWeight": "600", "padding": "5px",
fontFamily: 'DM Sans'
}}>
Pièces jointes Convention
Pièces jointes
</div>
@ -7221,7 +7221,7 @@ const Conseil_Classe = (props) => {
"border": "None", "fontSize": "18px", "fontWeight": "600", "padding": "5px",
fontFamily: 'DM Sans'
}}>
Pièces jointes Convention
Pièces jointes
</div>
@ -7542,7 +7542,7 @@ const Conseil_Classe = (props) => {
"border": "None", "fontSize": "18px", "fontWeight": "600", "padding": "5px",
fontFamily: 'DM Sans'
}}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -11536,14 +11536,14 @@ const DisplayPartnerPromotion = (props) => {
const New_Option_Emargement_Masse = [
{ "id": "demande emargement", "label": "Envoyer demande émargement", "value": "demande emargement" },
{ "id": "demande emargement", "label": "Envoyer demande émargement (email)", "value": "demande emargement" },
{ "id": "emarg_qr_code", "label": "Emargement QR CODE", "value": "emarg_qr_code" },
{ "id": "emarg_delete", "label": "Supprimer", "value": "emarg_delete" },
]
const New_Option_Evaluation_Masse = [
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation", "value": "demande evaluation" },
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation (email)", "value": "demande evaluation" },
]
const [actionmass_emarg_val, setactionmass_emarg_val] = useState();
@ -16488,7 +16488,7 @@ const DisplayPartnerPromotion = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -16803,7 +16803,7 @@ const DisplayPartnerPromotion = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -1644,7 +1644,7 @@ const DisplayPartnerSession = (props) => {
},
},
]
const columns_list_emargement = [
{ field: 'id', headerName: 'id', hide: true },
{ field: '_id', headerName: '_id', hide: true },
@ -1672,7 +1672,7 @@ const DisplayPartnerSession = (props) => {
);
},
},
{ field: 'mode_envoi', headerName: 'Mode Envoi', minwidth: 200, flex: 1, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'mode_envoi', headerName: 'Mode Envoi', minwidth: 200, flex: 1, hide: true, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'time_in_hour', headerName: 'Nb Heure', minWidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
@ -9435,7 +9435,7 @@ const DisplayPartnerSession = (props) => {
},
];
const status_tab = [
const status_tab = [
{
value: '1',
label: 'Actif',
@ -9445,12 +9445,12 @@ const DisplayPartnerSession = (props) => {
label: 'Inactif',
},
{
{
value: '2',
label: 'Clôturer',
},
{
{
value: '-1',
label: 'Annulé',
},
@ -11562,7 +11562,7 @@ const DisplayPartnerSession = (props) => {
.then((data) => data.json())
.then((data) => {
setLoading(false);
// console.log('Success:', data['message'], "data['status'] = ", data['status']);
// console.log('Success:', data['message'], "data['status'] = ", data['status']);
setGetListePreinscrit_emarg_result(data['message']);
setRows_emarg(data['message']);
@ -11591,14 +11591,14 @@ const DisplayPartnerSession = (props) => {
const New_Option_Emargement_Masse = [
{ "id": "demande emargement", "label": "Envoyer demande émargement", "value": "demande emargement" },
{ "id": "demande emargement", "label": "Envoyer demande émargement (email)", "value": "demande emargement" },
{ "id": "emarg_qr_code", "label": "Emargement QR CODE", "value": "emarg_qr_code" },
{ "id": "emarg_delete", "label": "Supprimer", "value": "emarg_delete" },
]
const New_Option_Evaluation_Masse = [
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation", "value": "demande evaluation" },
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation (email)", "value": "demande evaluation" },
]
const [actionmass_emarg_val, setactionmass_emarg_val] = useState();
@ -12237,6 +12237,10 @@ const DisplayPartnerSession = (props) => {
const [Dialog_convention_message, setDialog_convention_message] = React.useState(false);
const [Dialog_convention_open, setDialog_convention_open] = React.useState(false);
function Dialog_convention_handle_change_participant_session(message) {
setDialog_convention_message(message);
setDialog_convention_open(true);
@ -12474,8 +12478,8 @@ const DisplayPartnerSession = (props) => {
}
var url = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convention_From_Session_For_Selected_Inscrit_By_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convention_id + "/" + tab_my_inscription_ids;
// console.log(" ### tab_my_inscription_ids = ", tab_my_inscription_ids);
// console.log(" ### url = ", url);
// console.log(" ### tab_my_inscription_ids = ", tab_my_inscription_ids);
// console.log(" ### url = ", url);
@ -13180,7 +13184,7 @@ const DisplayPartnerSession = (props) => {
if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.status = " + res.data.status);
// console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Survey_hot_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_hot_evaluation_By_Session_api("true");
setGetall_Survey_hot_evaluation_By_Session_result(res.data.message);
setRows_evaluation(res.data.message);
@ -14549,7 +14553,7 @@ const DisplayPartnerSession = (props) => {
tab_my_inscription_ids.push(myid['_id']);
}
if (String(selected_convention_id).trim() === "") {
if (!selected_convention_id || String(selected_convention_id).trim() === "") {
// alert(" Vous devez choisir un document");
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un document");
@ -14557,6 +14561,8 @@ const DisplayPartnerSession = (props) => {
return;
}
form.append("class_internal_url", selected_internal_url);
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
@ -14567,6 +14573,8 @@ const DisplayPartnerSession = (props) => {
form.append("tab_ids", tab_my_inscription_ids);
console.log(" ### form = ", form);
// pièce jointe
form.append("file_business_object", "");
var list_files = new FormData();
@ -16301,7 +16309,7 @@ const DisplayPartnerSession = (props) => {
{/* Dialog pour gerer les CONVENTIONS ENTREPRISE*/}
{/* Dialog pour gerer les CONVENTIONS ENTREPRISE & INDIVIDUELLE*/}
<Dialog
open={Dialog_convention_open}
// onClose={Dialog_convention_handleClose}
@ -16342,7 +16350,7 @@ const DisplayPartnerSession = (props) => {
<div className="session_caract_Dialog" > Type Document<br />
<div className="session_caract_Dialog" > <b>Type Document</b> <br />
<Autocomplete
disablePortal
name="event_dialog_type_convention"
@ -16413,7 +16421,7 @@ const DisplayPartnerSession = (props) => {
</div>}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > Choisir une convention
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
@ -16530,7 +16538,7 @@ const DisplayPartnerSession = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -16608,6 +16616,20 @@ const DisplayPartnerSession = (props) => {
<div className="div_row_gauche">
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
if (String(selected_convention_email_test).length > 2) {
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
@ -16626,6 +16648,19 @@ const DisplayPartnerSession = (props) => {
{String(selected_convention_type) === "pdf" &&
<Button className="bton_enreg_dialog" onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
Dialog_convention_handleClose_buton();
Download_Session_Conventions_PDF();
}}
@ -16641,11 +16676,11 @@ const DisplayPartnerSession = (props) => {
</DialogActions>
</Dialog>
{/* FIN Dialog pour gerer les CONVENTIONS ENTREPRISE*/}
{/* FIN Dialog pour gerer les CONVENTIONS ENTREPRISE & INDIVIDUELLE*/}
{/* Dialog pour gerer les CONVENTIONS INDIVIDUELLE*/}
<Dialog
{/*<Dialog
open={Dialog_convention_open}
// onClose={Dialog_convention_handleClose}
//className="displaypartnersession"
@ -16685,7 +16720,7 @@ const DisplayPartnerSession = (props) => {
<div className="session_caract_Dialog" > Type Document<br />
<div className="session_caract_Dialog" > <b>Type Document </b> <br />
<Autocomplete
disablePortal
name="event_dialog_type_convention"
@ -16756,7 +16791,7 @@ const DisplayPartnerSession = (props) => {
</div>}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > Choisir une convention
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
@ -16873,7 +16908,7 @@ const DisplayPartnerSession = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -16952,6 +16987,21 @@ const DisplayPartnerSession = (props) => {
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (String(selected_convention_email_test).length > 2) {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
if (!response) {
@ -16983,7 +17033,7 @@ const DisplayPartnerSession = (props) => {
</DialogActions>
</Dialog>
</Dialog> */}
{/* FIN Dialog pour gerer les CONVENTIONS INDIVIDUELLE*/}
@ -17025,7 +17075,7 @@ const DisplayPartnerSession = (props) => {
</DialogContentText>
<div className="session_caract_Dialog" > Type Document<br />
<div className="session_caract_Dialog" > <b>Type Document </b> <br />
<Autocomplete
disablePortal
@ -17054,7 +17104,7 @@ const DisplayPartnerSession = (props) => {
</div>
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > Choisir une convocation
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > <b> Choisir une convocation </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
@ -17188,7 +17238,7 @@ const DisplayPartnerSession = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -17265,9 +17315,22 @@ const DisplayPartnerSession = (props) => {
<div className="div_row_gauche">
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
if (String(selected_convention_email_test).length > 2) {
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
const response = window.confirm(" Vous allez envoyer la convocation au destinaitaire final. Continuer ?");
if (!response) {
return;
}
@ -17282,6 +17345,21 @@ const DisplayPartnerSession = (props) => {
{String(selected_convention_type) === "pdf" &&
<Button className="bton_enreg_dialog" onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
Download_Session_Convocation_PDF();
Dialog_CONVOCATION_STAGIAIRE_handleClose_buton();
}}
@ -25922,7 +26000,7 @@ const DisplayPartnerSession = (props) => {
{actionmass_insc_val && String(actionmass_insc_val).length > 1 && selectionModel_insc.length >= 1 &&
String(actionmass_insc_val) !== "convocation" &&
String(actionmass_insc_val) !== "convention_entreprise" &&
String(actionmass_insc_val) !== "convention_individuelle" &&
String(actionmass_insc_val) !== "convention_individuelle" &&
String(actionmass_insc_val) !== "acceslms" &&
String(actionmass_insc_val) !== "facturer" &&
<nav className='block_en_mass_bton_action'>
@ -27375,7 +27453,7 @@ const DisplayPartnerSession = (props) => {
signature: JSON.parse(item).mysy_manual_signature_img,
comment: JSON.parse(item).comment,
mode_envoi: JSON.parse(item).mode_envoi,
mode_envoi: JSON.parse(item).mode_envoi,
}
))}

View File

@ -8626,7 +8626,7 @@ registerLocale('fr', fr);
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -7330,7 +7330,7 @@ registerLocale('fr', fr);
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -4784,7 +4784,7 @@ const Jury = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -5102,7 +5102,7 @@ const Jury = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -173,7 +173,7 @@ const Module_Attestation_Formation = (props) => {
]
const New_Option_attestation_Masse = [
{ "id": "resend", "label": "(R)envoyer", "value": "resend" },
{ "id": "resend", "label": "(R)envoyer par Email", "value": "resend" },
{ "id": "download", "label": "Télécharger", "value": "download" },
]
const [gridline_id, setgridline_id] = useState("");

View File

@ -109,9 +109,9 @@ const useStyles = makeStyles((theme) => ({
color: 'gray',
},
}));
const Module_Editique = (props) => {
registerLocale('fr', fr);
registerLocale('fr', fr);
const classes = useStyles();
const myconntected_employee_id = props.conntected_employee_id;
@ -202,7 +202,7 @@ registerLocale('fr', fr);
setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Invoice_Session_Formation res.data.status = " + res.data.status);
//console.log(" In Invoice_Session_Formation res.data.message r_class = " + res.data.message);
setInvoice_Session_Formation_api("true");
@ -2294,7 +2294,7 @@ registerLocale('fr', fr);
</DialogContentText>
<div className="session_caract_Dialog" > Type Document<br />
<div className="session_caract_Dialog" > <b> Type Document </b> <br />
<Autocomplete
disablePortal
@ -2324,7 +2324,7 @@ registerLocale('fr', fr);
</div>
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") &&
<div className="session_caract_Dialog" > Choisir une convocation
<div className="session_caract_Dialog" ><b>Choisir une convocation </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
@ -2357,7 +2357,7 @@ registerLocale('fr', fr);
</div>}
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" > Type Document<br />
{String(selected_convention_type) === "email" && <div className="session_caract_Dialog" ><b> Type Document </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, width: '75%' }}
@ -2388,7 +2388,7 @@ registerLocale('fr', fr);
</div>}
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" > Type Document<br />
{String(selected_convention_type) === "pdf" && <div className="session_caract_Dialog" ><b> Type Document </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 } }}
@ -2470,7 +2470,7 @@ registerLocale('fr', fr);
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -2548,8 +2548,23 @@ registerLocale('fr', fr);
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (String(selected_convention_email_test).length > 2) {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
const response = window.confirm(" Vous allez envoyer la convocation au destinaitaire final. Continuer ?");
if (!response) {
return;
}
@ -2564,6 +2579,21 @@ registerLocale('fr', fr);
{String(selected_convention_type) === "pdf" &&
<Button className="bton_enreg_dialog" onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
Download_Session_Convocation_PDF();
Dialog_CONVOCATION_STAGIAIRE_handleClose_buton();
}}
@ -2623,7 +2653,7 @@ registerLocale('fr', fr);
<div className="session_caract_Dialog" > Type Document<br />
<div className="session_caract_Dialog" > <b> Type Document </b> <br />
<Autocomplete
disablePortal
name="event_dialog_type_convention"
@ -2694,7 +2724,7 @@ registerLocale('fr', fr);
</div>}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > Choisir une convention
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") && <div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
disablePortal
name="event_dialog_version_convention"
@ -2804,7 +2834,7 @@ registerLocale('fr', fr);
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>
@ -2882,6 +2912,19 @@ registerLocale('fr', fr);
{String(selected_convention_type) === "email" && <Button onClick={(e) => {
if (String(selected_convention_email_test).length > 2) {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
// On alerte juste l'utilisateur que l'email de test n'est pas vide, juste au cas ou il aurait cliqué par erreur sur l'envoie.
const response = window.confirm(" Vous allez envoyer la convention au destinaitaire final. Continuer ?");
if (!response) {
@ -2898,6 +2941,18 @@ registerLocale('fr', fr);
{String(selected_convention_type) === "pdf" &&
<Button className="bton_enreg_dialog" onClick={(e) => {
if (!selected_convention_type || selected_convention_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de document");
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
return;
}
Dialog_convention_handleClose_buton();
Download_Session_Conventions_PDF();

View File

@ -679,6 +679,8 @@ const Module_Email_Management = (props) => {
clear_display_alert_mysy={clear_display_alert_mysy}
/>
}
{/*** FIN Affichage des messages d'alerte*/}
<Dialog

View File

@ -0,0 +1,394 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import 'react-tooltip/dist/react-tooltip.css'
import { Tooltip } from 'react-tooltip'
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import InputAdornment from '@mui/material/InputAdornment';
import { getCookie, setCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
import { Editor } from '@tinymce/tinymce-react';
import 'react-tooltip/dist/react-tooltip.css'
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import "react-datepicker/dist/react-datepicker.css";
import Dialog from '@mui/material/Dialog';
import DialogActions from '@mui/material/DialogActions';
import DialogContent from '@mui/material/DialogContent';
import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import Checkbox from '@mui/material/Checkbox';
import AttachFileIcon from '@mui/icons-material/AttachFile';
import Autocomplete from '@mui/material/Autocomplete';
import { Fab } from "@material-ui/core";
import { IoMdAddCircle } from "react-icons/io";
import FormGroup from '@mui/material/FormGroup';
import FormControlLabel from '@mui/material/FormControlLabel';
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md";
import Badge from '@mui/material/Badge';
import { styled } from '@mui/material/styles';
import { createTheme, ThemeProvider } from '@mui/material/styles';
const Module_Internal_Email_Management = (props) => {
const myconntected_employee_id = props.conntected_employee_id;
const [selected_employee_id, setselected_employee_id] = useState(props.conntected_employee_id);
const history = useHistory();
const [isLoading, setLoading] = useState();
const theme = createTheme({
palette: {
primary: {
light: '#F0E68C',
main: '#F0E68C',
dark: '#F0E68C',
contrastText: '#fff',
},
secondary: {
light: '#99ffcc',
main: '#99ffcc',
dark: '#ba000d',
contrastText: '#000',
},
tercier: {
light: '#dbff75',
main: '#dbff75',
dark: '#dbff75',
contrastText: '#000',
},
quatro: {
light: '#E08A8B',
main: '#E08A8B',
dark: '#E08A8B',
contrastText: '#000',
},
cinqo: {
light: '#D2691E',
main: '#D2691E',
dark: '#D2691E',
contrastText: '#000',
},
},
});
const StyledBadge = styled(Badge)(({ theme }) => ({
'& .MuiBadge-badge': {
right: 0,
top: 0,
border: `2px solid ${theme.palette.background.paper}`,
padding: '0 4px',
},
}));
const StyledBadge_mysy_color1 = styled(Badge)(({ }) => ({
'& .MuiBadge-badge': {
right: 0,
top: 0,
border: '2px solid #ffffff',
padding: '0 4px',
background: '#6a329f',
color: "#ffffff"
},
}));
const StyledBadge_mysy_red = styled(Badge)(({ }) => ({
'& .MuiBadge-badge': {
right: 0,
top: 0,
border: '2px solid ',
padding: '0 4px',
background: '#f44336',
color: "#ffffff",
},
}));
const New_Option_Filter = [
{ "id": "email", "label": "Email ", "value": "email" },
{ "id": "nom", "label": "Nom ", "value": "nom" },
{ "id": "prenom", "label": "Prénom ", "value": "prenom" },
{ "id": "archive", "label": "Archive", "value": "archive" },
{ "id": "", "label": "", "value": "" },
{ "id": "1", "label": "", "value": "1" }, // Cette ligne pour couvrir l'ajout d'une ligne de filter. C'est fait expres.
]
const [gridline_id, setgridline_id] = useState("");
const [selected_id, setselected_id] = useState("");
const [p_filtre1, setp_filtre1] = useState("");
const [p_filtre1_value, setp_filtre1_value] = useState("");
const [p_filtre2, setp_filtre2] = useState("");
const [p_filtre2_value, setp_filtre2_value] = useState("");
function clean_all_filters() {
setp_filtre1("");
setp_filtre1_value("");
setp_filtre2("");
setp_filtre2_value("");
setgridline_id('');
}
useEffect(() => {
}, [])
const myRef_head = useRef(null);
const [is_recherche, setis_recherche] = useState("0");
const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
const [alert_message, setalert_message] = useState("");
const [alert_type, setalert_type] = useState("");
function clear_alert_message() {
setalert_message("");
}
function clear_alert_type() {
setalert_type("");
}
function clear_display_alert_mysy() {
setdisplay_alert_mysy("");
}
return (
<div className="module_internal_email_management">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*** Affichage des messages d'alerte*/}
{display_alert_mysy && String(display_alert_mysy) === "1" &&
<Module_Alert_Confirmation alert_message={alert_message}
alert_type={alert_type}
clear_alert_message={clear_alert_message}
clear_alert_type={clear_alert_type}
clear_display_alert_mysy={clear_display_alert_mysy}
/>
}
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Emails </h3>
<div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
{New_Option_Filter && New_Option_Filter.length > 0 && <Autocomplete
disablePortal
name="filtre1"
id="filtre1"
className="disabled_style"
value={New_Option_Filter.filter((data) => (data).value === String(p_filtre1))[0].label}
options={New_Option_Filter}
onChange={(event, value) => {
if (value && value.value) {
setp_filtre1(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
{String(p_filtre1) !== "archive" && <div className="div_row_droite texte_area_filter_value" >
{p_filtre1 &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, fontSize: "10px" }}
required
name="filtre1_value"
id="filtre1_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre1_value}
onChange={(e) => { setp_filtre1_value(e.target.value); }}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre1_value("");
}} />
</InputAdornment>
),
}}
/>
}
</div>}
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip01" data-tooltip-html="Ajouter une nouvelle ligne de filtre">
&nbsp; <MdAddCircleOutline onClick={(e) => {
setp_filtre2("1");
}} />
</a>
</div>}
{p_filtre1 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip02" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip02" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline onClick={(e) => {
setp_filtre1("");
setp_filtre1_value("");
}}
/>
</a>
</div>}
</div>
{p_filtre2 &&
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter">
{New_Option_Filter && New_Option_Filter.length > 0 && <Autocomplete
disablePortal
name="filtre2"
id="filtre2"
className="disabled_style"
value={New_Option_Filter.filter((data) => (data).value === String(p_filtre2))[0].label}
options={New_Option_Filter}
onChange={(event, value) => {
if (value && value.value) {
setp_filtre2(value.value);
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>}
</div>
<div className="div_row_droite texte_area_filter" >
{String(p_filtre2).length > 2 && String(p_filtre2) !== "archive" &&
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
name="filtre2_value"
id="filtre2_value"
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style"
value={p_filtre2_value}
onChange={(e) => setp_filtre2_value(e.target.value)}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<AiFillCloseCircle
style={{ 'cursor': "pointer", "color": "orangered" }}
onClick={(e) => {
setp_filtre2_value("");
}} />
</InputAdornment>
),
}}
/>}
</div>
{String(p_filtre2).length > 3 && <div className='filter_bton_add'>
<Tooltip className="tooltip_css" id="my-tooltip04" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="my-tooltip04" data-tooltip-html="Supprimer cette ligne de filtre">
&nbsp; <MdRemoveCircleOutline
onClick={(e) => {
setp_filtre2();
setp_filtre2_value();
}}
/>
</a>
</div>}
</div>
}
{<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }} ref={myRef_head} id="myRef_head">
<Button variant="contained" className="bton_enreg" onClick={(event) => {
// Getall_TrainingSession();
setis_recherche("1");
}}
>Rechercher
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_annule" onClick={(event) => {
clean_all_filters();
setis_recherche("");
}}>Annuler
</Button>
</div>
</div>}
</div>
<br />
</div>
)
}
export default Module_Internal_Email_Management;

View File

@ -1151,7 +1151,7 @@ const Module_Session_Evaluation = (props) => {
if (String(res.data.status) === String("true")) {
// console.log(" In Getall_Survey_specific_evaluation_By_Session res.data.status = " + res.data.status);
// console.log(" In Getall_Survey_specific_evaluation_By_Session res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Survey_specific_evaluation_By_Session res.data.message r_class = " + res.data.message);
setGetall_Survey_specific_evaluation_By_Session_api("true");
setGetall_Survey_specific_evaluation_By_Session_result(res.data.message);
@ -1576,6 +1576,11 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_specific_evaluation_By_Session();
}
setactionmass_eval_specific_00("");
setselectionModel_evaluation_specific_00([]);
Getall_Survey_specific_evaluation_By_Session();
}
@ -1603,6 +1608,10 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_specific_evaluation_By_Session();
}
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
Getall_Survey_specific_evaluation_By_Session();
}
async function actionmass_Specific_02_Traitemet() {
@ -1629,6 +1638,10 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_specific_evaluation_By_Session();
}
setactionmass_eval_specific_02("");
setselectionModel_evaluation_specific_02([]);
Getall_Survey_specific_evaluation_By_Session();
}
@ -1728,6 +1741,7 @@ const Module_Session_Evaluation = (props) => {
Getall_Survey_formateur_evaluation_By_Session();
setSelectionModel_evaluation([]);
setSelectionModel_evaluation_cold([]);
setselectionModel_evaluation_formateur([]);
@ -1736,6 +1750,18 @@ const Module_Session_Evaluation = (props) => {
setactionmass_eval_froid("");
setactionmass_eval_formateur("");
// pour les spécifiques
setactionmass_eval_specific_00("");
setselectionModel_evaluation_specific_00([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
Getall_Survey_specific_evaluation_By_Session();
// alert(res.data.message);
setdisplay_alert_mysy("1");
@ -1789,7 +1815,7 @@ const Module_Session_Evaluation = (props) => {
const New_Option_Evaluation_Masse = [
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation", "value": "demande evaluation" },
{ "id": "demande evaluation", "label": "Envoyer demande Evaluation (email)", "value": "demande evaluation" },
{ "id": "cold_eval_qr_code", "label": "Générer un QR Code", "value": "cold_eval_qr_code" },
{ "id": "export_evaluation", "label": "Export Evaluation (PDF) ", "value": "export_evaluation" },
]
@ -2010,7 +2036,7 @@ const Module_Session_Evaluation = (props) => {
alert("Impossible de générer le QR code (2) ");
} else {
fileDownload(res.data, nom_fichier_cmd);
Getall_Survey_hot_evaluation_By_Session();
Getall_Survey_hot_evaluation_By_Session();
}
}).catch((error) => {
@ -2051,7 +2077,7 @@ const Module_Session_Evaluation = (props) => {
alert("Impossible de générer le QR code (2) ");
} else {
fileDownload(res.data, nom_fichier_cmd);
Getall_Survey_cold_evaluation_By_Session();
Getall_Survey_cold_evaluation_By_Session();
}
}).catch((error) => {
@ -2093,7 +2119,20 @@ const Module_Session_Evaluation = (props) => {
alert("Impossible de générer le QR code (2) ");
} else {
fileDownload(res.data, nom_fichier_cmd);
Getall_Survey_formateur_evaluation_By_Session();
Getall_Survey_formateur_evaluation_By_Session();
// pour les spécifiques
setactionmass_eval_specific_00("");
setselectionModel_evaluation_specific_00([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
Getall_Survey_specific_evaluation_By_Session();
}
}).catch((error) => {
@ -2111,8 +2150,6 @@ const Module_Session_Evaluation = (props) => {
function Export_Selected_Survey_PDF(tab_ids_survey, type_export, used_datagrid) {
const stored_cookie = getCookie('tokenmysypart');
if (tab_ids_survey.length <= 0) {
// alert(" Aucune ligne selectionnée ");
setdisplay_alert_mysy("1");
@ -2149,6 +2186,20 @@ const Module_Session_Evaluation = (props) => {
setSelectionModel_evaluation_cold([]);
}
Getall_Survey_specific_evaluation_By_Session();
// pour les spécifiques
setactionmass_eval_specific_00("");
setselectionModel_evaluation_specific_00([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
setactionmass_eval_specific_01("");
setselectionModel_evaluation_specific_01([]);
Getall_Survey_specific_evaluation_By_Session();
}
}).catch((error) => {
setLoading(false);
@ -2814,7 +2865,7 @@ const Module_Session_Evaluation = (props) => {
if (selectionModel_evaluation.length <= 0) {
setactionmass_eval_val("");
}
}}
selectionModel={selectionModel_evaluation}

View File

@ -3744,7 +3744,7 @@ const Notes_Evaluation = (props) => {
</div>
<div className="div_row" style={{ "border": "None", "fontSize": "22px", "fontWeight": "600", "padding": "5px" }}>
Pièces jointes Convention
Pièces jointes
</div>

View File

@ -65,6 +65,8 @@ import Partner_Config_Formulaires from "./Partner_Config_Formulaires";
import PartnerClientActivite from "./PartnerClient_Activite";
import Jury from "./Jurys";
import Conseil_Classe from "./Conseil_Classe";
import Module_Internal_Email_Management from "./Module_Internal_Email_Management";
import Mon_Tableau_De_Bord from "./Mon_Tableau_De_Bord";
import Dashbord_Formation from "./Dashbord_Formation";
import Partner_Prix_Achat from "./Partner_Prix_Achat";
@ -111,6 +113,7 @@ import Badge from '@mui/material/Badge';
import { styled } from '@mui/material/styles';
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import FolderZipIcon from '@mui/icons-material/FolderZip';
import MailIcon from '@mui/icons-material/Mail';
import ReduceCapacityIcon from '@mui/icons-material/ReduceCapacity';
import { FcPodiumWithAudience } from "react-icons/fc";
import { FcConferenceCall } from "react-icons/fc";
@ -498,7 +501,7 @@ const Partner = (props) => {
const list_menu_header_names = ['my_account', 'my_class', 'my_session', 'my_apprenant', 'my_ressource', 'my_planning',
'my_partners', 'my_invoices', 'my_prix_achat', 'my_e_learning', 'my_configuration', 'my_tbd', 'my_ue', 'domaine_categorie_metier',
'config_formation_initiale', 'note_evaluation', 'groupe_apprenant', 'part_produit_service', 'monactivite', 'mon_tableau_de_bord',
'tous_mes_document', 'equipe_team', 'conseil_class', 'autre_rh', 'jury', 'conseil_classe']
'tous_mes_document', 'equipe_team', 'conseil_class', 'autre_rh', 'jury', 'conseil_classe', 'internal_email']
for (let i = 0; i < list_menu_header_names.length; i++) {
if (document.getElementsByName(String(list_menu_header_names[i])) && document.getElementsByName(String(list_menu_header_names[i]))[0]) {
document.getElementsByName(String(list_menu_header_names[i]))[0].style.fontWeight = "400";
@ -515,7 +518,7 @@ const Partner = (props) => {
const list_menu_header_names = ['my_account', 'my_class', 'my_session', 'my_apprenant', 'my_ressource', 'my_planning',
'my_partners', 'my_invoices', 'my_prix_achat', 'my_e_learning', 'my_configuration', 'my_tbd', 'my_ue', 'domaine_categorie_metier',
'config_formation_initiale', 'note_evaluation', 'groupe_apprenant', 'part_produit_service', 'monactivite', 'mon_tableau_de_bord',
'tous_mes_document', 'equipe_team', 'conseil_class', 'autre_rh', 'jury', 'conseil_classe']
'tous_mes_document', 'equipe_team', 'conseil_class', 'autre_rh', 'jury', 'conseil_classe', 'internal_email']
for (let i = 0; i < list_menu_header_names.length; i++) {
if (document.getElementsByName(String(list_menu_header_names[i])) && document.getElementsByName(String(list_menu_header_names[i]))[0]) {
document.getElementsByName(String(list_menu_header_names[i]))[0].style.fontWeight = "400";
@ -573,6 +576,17 @@ const Partner = (props) => {
}
function Display_Internal_Boite_Email(event) {
setmenu("internal_email");
setapiexcelimportmessage();
setformation_file_name();
history.push("/Partner/internal_email");
document.body.style.backgroundColor = "#ffffff";
inactive_active_menu_header("internal_email");
}
function config_document_func(event) {
var security_retval = check_user_acces_right("config_document", "read");
if (security_retval === 1) {
@ -1848,12 +1862,12 @@ const Partner = (props) => {
{left_menu === true && <div className="sub_dib_mobile" >
<div className="div_gauche" id="div_gauche">
<nav className="not_display_mobile">
{left_menu === true && <div style={{ "cursor": "pointer", textAlign: "left", fontFamily:'DM Sans' }} onClick={open_close_left_menu}>
{left_menu === true && <div style={{ "cursor": "pointer", textAlign: "left", fontFamily: 'DM Sans' }} onClick={open_close_left_menu}>
<Tooltip className="tooltip_css" id="tooltip_id_0" />
<a data-tooltip-id="tooltip_id_0" data-tooltip-html="Réduire le menu">
<PiSlideshowFill /> Réduire menu
</a>
</div>}
</div>}
{left_menu === false && <div style={{ "cursor": "pointer", textAlign: "center" }}>
<Tooltip className="tooltip_css" id="tooltip_id_1" />
<a data-tooltip-id="tooltip_id_1" data-tooltip-html="Agrandir le menu">
@ -1975,6 +1989,23 @@ const Partner = (props) => {
</Sidebar>
</div>
<div>
<Sidebar className="my_sidebar">
{String(menu) !== "internal_email" && <Menu className="my_menu bck_menu_seul" id="my_internal_email" name="my_internal_email" onClick={Display_Internal_Boite_Email} >&nbsp;<MailIcon className="icone_menu" color={"primary"} />
&nbsp; EMAILS &nbsp;&nbsp; <StyledBadge_mysy_color1 badgeContent={"9+"} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
}}></StyledBadge_mysy_color1>
</Menu>}
{String(menu) === "internal_email" && <Menu className="my_menu bck_menu_seul_selected" id="my_internal_email" name="my_internal_email" onClick={Display_Internal_Boite_Email} >&nbsp;<MailIcon className="icone_menu" color={"primary"} /> &nbsp; EMAILS &nbsp;&nbsp; <StyledBadge_mysy_color1 badgeContent={"9+"} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
}}></StyledBadge_mysy_color1></Menu>}
</Sidebar>
</div>
<div>
<Sidebar className="my_sidebar">
@ -2357,10 +2388,9 @@ const Partner = (props) => {
partner_lms_virtualhost_url={partner_lms_virtualhost_url} />
</div>
}
{String(menu) === "tous_mes_document" &&
<div className="div_droite">
<Modules_Mes_Documents ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid} class_internal_url={packs} formation_initiale={formation_initiale}
check_user_acces_right={check_user_acces_right}
@ -2374,6 +2404,23 @@ const Partner = (props) => {
}
{String(menu) === "internal_email" &&
<div className="div_droite">
<Module_Internal_Email_Management ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid} class_internal_url={packs} formation_initiale={formation_initiale}
check_user_acces_right={check_user_acces_right}
partner_client_id={""}
partner_owner_recid={conntected_account_partner_owner_recid}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
/>
</div>
}
{String(menu) === "mes_ue" &&
<div className="div_droite">
@ -2888,7 +2935,7 @@ const Partner = (props) => {
<div className="div_gauche div_gauche_reduit" id="div_gauche" style={{ borderRadius: '0px', margin: '0px' }}>
<nav className="not_display_mobile">
{left_menu === true && <div style={{ "cursor": "pointer", textAlign: "left" , fontFamily:'DM Sans'}} onClick={open_close_left_menu}>
{left_menu === true && <div style={{ "cursor": "pointer", textAlign: "left", fontFamily: 'DM Sans' }} onClick={open_close_left_menu}>
<Tooltip className="tooltip_css" id="tooltip_id_0" />
<a data-tooltip-id="tooltip_id_0" data-tooltip-html="Réduire le menu">
<PiSlideshowFill /> Réduire menu
@ -2947,6 +2994,15 @@ const Partner = (props) => {
</a>
<hr className="my_hr" />
<Tooltip className="tooltip_css" id="tooltip_id_677" />
<a data-tooltip-id="tooltip_id_677" data-tooltip-html="BOITE MAIL">
{String(menu) !== "internal_email" && <div className="sousmenu" onClick={Display_Internal_Boite_Email} ><MailIcon className="icone_menu" /> &nbsp;</div>}
{String(menu) === "internal_email" && <div className="sousmenu_selected" onClick={Display_Internal_Boite_Email} > <MailIcon className="icone_menu" />&nbsp;</div>}
</a>
<hr className="my_hr" />
<Tooltip className="tooltip_css" id="tooltip_id_66" />
<a data-tooltip-id="tooltip_id_66" data-tooltip-html="DOCUMENTS (GED)">
{String(menu) !== "tous_mes_document" && <div className="sousmenu" onClick={Display_Tous_Documents} ><FolderZipIcon className="icone_menu" /> &nbsp;</div>}
@ -3299,6 +3355,35 @@ const Partner = (props) => {
</div>
}
{String(menu) === "internal_email" &&
<div className="div_droite div_droite_ralonge">
<Module_Internal_Email_Management ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid}
class_internal_url={packs}
formation_initiale={formation_initiale}
read_access={check_user_acces_right("jury", "read")}
write_access={check_user_acces_right("jury", "write")}
check_user_acces_right={check_user_acces_right} />
</div>
}
{String(menu) === "tous_mes_document" &&
<div className="div_droite div_droite_ralonge">
<Modules_Mes_Documents ispending={partnerstatus} currentpack={partnerPackService} conntected_employee_id={conntected_employee_id}
class_external_code={orderid} class_internal_url={packs} formation_initiale={formation_initiale}
check_user_acces_right={check_user_acces_right}
partner_client_id={""}
partner_owner_recid={conntected_account_partner_owner_recid}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
/>
</div>
}
{String(menu) === "conseil_classe" && String(formation_initiale) === "1" &&
<div className="div_droite div_droite_ralonge">

View File

@ -890,6 +890,20 @@ const Partner_Config_Formulaires = (props) => {
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
if (!p_detail_from_code || p_detail_from_code === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez donner un code au formualaire");
setalert_type("error");
return;
}
if (!p_detail_from_type || p_detail_from_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de formulaire");
setalert_type("error");
return;
}
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("code", p_detail_from_code);
@ -1043,6 +1057,19 @@ const Partner_Config_Formulaires = (props) => {
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
if (!p_detail_one_from_code || p_detail_one_from_code === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez donner un code au formualaire");
setalert_type("error");
return;
}
if (!p_detail_one_from_type || p_detail_one_from_type === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un type de formulaire");
setalert_type("error");
return;
}
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("code", p_detail_one_from_code);
@ -1628,7 +1655,7 @@ const Partner_Config_Formulaires = (props) => {
/>}
</div>
<div className="session_caract_Dialog" > Rang cc
<div className="session_caract_Dialog" > Rang
<TextField
autoFocus
margin="dense"
@ -2119,6 +2146,7 @@ const Partner_Config_Formulaires = (props) => {
InputProps={{ inputProps: { min: 2, max: 9999 } }}
value={alert_seuil_value}
disabled={true}
inputProps={{ style: { fontSize: 12, height: "1.4rem" } }}
/>
</nav>}
@ -2130,7 +2158,7 @@ const Partner_Config_Formulaires = (props) => {
disablePortal
name="seuil_oui_non"
id="seuil_oui_non"
className="disabled_style"
// className="disabled_style"
options={New_Option_Oui_Non}
value={New_Option_Oui_Non.filter((data) => (data).value === String(alert_seuil_value))[0].label}
@ -2624,7 +2652,7 @@ const Partner_Config_Formulaires = (props) => {
<div className="session_data">
<br />
<div className="session_caract"> Code <br />
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2641,7 +2669,7 @@ const Partner_Config_Formulaires = (props) => {
</div>
{New_Option_type_Formulaire.length > 0 && <div className="session_caract"> Type <br />
{New_Option_type_Formulaire.length > 0 && <div className="session_caract"> <b> Type </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2756,17 +2784,26 @@ const Partner_Config_Formulaires = (props) => {
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_edit" onClick={enable_formulaire_fields}>Editer
</Button>
</div>
<div className="div_row">
&nbsp;
</div>
<div className="div_row">
<div class="separator">
<nav className="separator_label">
Gestion questions </nav>
</div>
</div>
<div className="div_row" style={{ "padding": "10px" }}>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" style={{ "minWidth": "10rem" }} onClick={(event) => {
Ajouter_Question();
}}>Ajout 1 Question </Button>
</div>
{p_detail_from_list_question && p_detail_from_list_question.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
@ -2911,11 +2948,12 @@ const Partner_Config_Formulaires = (props) => {
&nbsp;
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_edit" onClick={enable_formulaire_fields}>Editer
</Button>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" style={{ "minWidth": "15rem" }} onClick={(event) => {
Ajouter_Question();
}}>Ajout 1 Question </Button>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
@ -2934,7 +2972,7 @@ const Partner_Config_Formulaires = (props) => {
<div className="session_data">
<br />
<div className="session_caract"> Code <br />
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2955,7 +2993,7 @@ const Partner_Config_Formulaires = (props) => {
</div>
{String(form_edit_mode) === "1" && New_Option_type_Formulaire.length > 0 && <div className="session_caract"> Type <br />
{String(form_edit_mode) === "1" && New_Option_type_Formulaire.length > 0 && <div className="session_caract"> <b> Type </b> <br />
<Autocomplete
disablePortal
name="detail_config_type"
@ -3116,11 +3154,28 @@ const Partner_Config_Formulaires = (props) => {
<div className="div_row" style={{ "padding": "10px" }}>
<div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" style={{ "minWidth": "10rem" }} onClick={(event) => {
Ajouter_Question();
}}>Ajout 1 Question </Button>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
{String(config_data_changed) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
/!\ Pensez à enregistrer les modifications
</div>}
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Update_formlaire_data}>Enregistrer
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<Button variant="contained" className="bton_annule" onClick={annule_edit_formulaire}>Annuler
</Button>
</div>
</div>
{p_detail_from_list_question && p_detail_from_list_question.length > 0 && <div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
@ -3169,8 +3224,6 @@ const Partner_Config_Formulaires = (props) => {
is_statistic: (item).is_statistic,
is_alert: (item).is_alert,
alert_seuil: (item).alert_seuil,
}
))}
@ -3221,27 +3274,14 @@ const Partner_Config_Formulaires = (props) => {
</div>}
</div>
<div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
{String(config_data_changed) === "1" && <div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
/!\ Pensez à enregistrer les modifications
</div>}
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Update_formlaire_data}>Enregistrer
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<Button variant="contained" className="bton_annule" onClick={annule_edit_formulaire}>Annuler
</Button>
</div>
</div>
{/* <div className="div_row" style={{ "textAlign": "right", "marginTop": "0.5rem" }}>
<Button className="bton_emarge" style={{ "minWidth": "15rem" }} onClick={(event) => {
Ajouter_Question();
}}>Ajout 1 Question </Button>
</div>*/}
<div className="div_row" style={{ "border": "None" }}>
@ -3259,7 +3299,7 @@ const Partner_Config_Formulaires = (props) => {
<h5 style={{ textAlign: "center", paddingTop: '5px', fontFamily: "DM Sans" }} >Ajouter un nouveau formulaire </h5>
<br />
<div className="session_caract"> Code <br />
<div className="session_caract"> <b> Code </b> <br />
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -3279,7 +3319,7 @@ const Partner_Config_Formulaires = (props) => {
/>
</div>
{New_Option_type_Formulaire && <div className="session_caract"> Type <br />
{New_Option_type_Formulaire && <div className="session_caract"> <b> Type </b> <br />
<Autocomplete
disablePortal
name="detail_config_type"

View File

@ -685,21 +685,20 @@ const Partner_Configuration_Technique = (props) => {
const columns_email_envoye = [
{ field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true },
{ field: 'from', headerName: 'De', flex: 1, hide: false, editable: false },
{ field: 'from', headerName: 'De', flex: 1, hide: true, editable: false },
{ field: 'to', headerName: 'A', flex: 1, hide: false, editable: false, minwidth: 350, },
{ field: 'subject', headerName: 'Sujet', flex: 1, hide: false, editable: false },
{ field: 'to', headerName: 'A', flex: 1, hide: false, editable: false },
{ field: 'cc', headerName: 'cc', flex: 1, hide: true, editable: false },
{ field: 'bcc', headerName: 'bcc', flex: 1, hide: true, editable: false },
{
field: 'statut', headerName: 'Statut', flex: 1, hide: false, editable: false,
field: 'statut', headerName: 'Statut', hide: false, editable: false, width: 150,
renderCell: (cellValues) => {
return (
<div style={{ paddingLeft: "5px", paddingRight: "15px", "display": "block", wordBreak: "break-all" }}>
{cellValues.row.statut && String(cellValues.row.statut) === "1" && "Env."}
{cellValues.row.statut && String(cellValues.row.statut) === "0" && "Init"}
{cellValues.row.statut && String(cellValues.row.statut) === "-1" && "Err"}
{cellValues.row.statut && String(cellValues.row.statut) === "-1" && "Err"}
</div>
@ -750,7 +749,7 @@ const Partner_Configuration_Technique = (props) => {
<div className="gest_content">
{' '}
En confirmant cette opération, le message sera envoyé <br />
En confirmant cette opération, le message sera (r)envoyé <br />
</div>
<div className="gest_actions">

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@
padding: 0px !important;
padding-left: 5px !important;
}
@media screen and (max-width: 600px) {

View File

@ -205,6 +205,7 @@
@import "./components/module_ent_mes_documents";
@import "./components/module_ent_mes_formations";
@import "./components/conseil_classe";
@import "./components/module_internal_email_management";
// New Design 2025