15/11/2025 - 22h30

branche_01062025
Cherif 2025-11-15 21:31:00 +01:00
parent 3ff2f5771b
commit d9429343c6
24 changed files with 3318 additions and 282 deletions

View File

@ -6929,7 +6929,7 @@ const Conseil_Classe = (props) => {
/>
</div>
<div className="session_caract_Dialog" > <b> Note </b> <br />
<TextareaAutosize

View File

@ -159,7 +159,7 @@ const useStyles = makeStyles((theme) => ({
const DisplayPartnerPromotion = (props) => {
registerLocale('fr', fr);
const stored_cookie_session_display_view = getCookie('mysy_session_display_view');
const stored_cookie_session_data_row_grouped_by = getCookie('mysy_session_data_row_grouped_by');
const stored_cookie_session_data_row_grouped_by = getCookie('mysy_promotion_data_row_grouped_by');
const classes = useStyles();
@ -14352,7 +14352,7 @@ const DisplayPartnerPromotion = (props) => {
setdata_row_grouped_by(grouped_by);
setdata_row_grouped_field(grouped_by);
datagrid_grouped_by(grouped_by);
setcookie_session_display_view("mysy_session_data_row_grouped_by", String(grouped_by), { path: '/' });
setcookie_session_display_view("mysy_promotion_data_row_grouped_by", String(grouped_by), { path: '/' });
}
// MySy Comment : design d'une tache (couleur, taille, etc)

View File

@ -2289,7 +2289,7 @@ const DisplayPartnerSession = (props) => {
var timeline_grp = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x).id;
var local_id = JSON.parse(x)._id;

View File

@ -71,7 +71,7 @@ import {
} from '@mui/x-data-grid';
import * as XLSX from 'xlsx';
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import { makeStyles } from "@material-ui/core/styles";
@ -5493,6 +5493,7 @@ const DisplayPartnerStagiaires = (props) => {
formData.append("object_owner_id", selected_id);
formData.append("type_document", "");
//formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie);
@ -8814,7 +8815,7 @@ const DisplayPartnerStagiaires = (props) => {
</Dialog>
{ /**** FIN Dialog Convention */}
<h3 style={{ fontFamily: 'DM Sans' }}> Mes stagiaires </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes inscriptions </h3>
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
@ -12277,6 +12278,19 @@ const DisplayPartnerStagiaires = (props) => {
</div>
</div>}
------------------
<div className="div_row" style={{ "border": "None" }}>
<Modules_Mes_Documents
partner_client_id={selected_id}
partner_owner_recid={""}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
object_owner_collection={"inscription"}
object_owner_id={selected_id}
/>
</div>
</div>
</div>}

View File

@ -3,7 +3,7 @@ import './ENT_Student_Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import Header_MySy_Logo from '../../img_new_design_2025/header_mysy_logo.png';
import Header_User from '../../img_new_design_2025/header_user.png';
import Dialog from '@mui/material/Dialog';
@ -13,14 +13,16 @@ import DialogContentText from '@mui/material/DialogContentText';
import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import { useCookies } from "react-cookie";
import axios from "axios";
import Badge from '@mui/material/Badge';
import { styled } from '@mui/material/styles';
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
import 'react-tooltip/dist/react-tooltip.css';
import { Tooltip } from 'react-tooltip';
function PaperComponent(props) {
return (
@ -53,6 +55,30 @@ const useStyles = makeStyles((theme) => ({
},
}));
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 ENT_Student_Header = () => {
const history = useHistory();
const classes = useStyles();
@ -72,10 +98,88 @@ const ENT_Student_Header = () => {
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
const [nb_undread_mail, setnb_undread_mail] = React.useState("0");
const [Get_Nb_Unread_Emails_api, setGet_Nb_Unread_Emails_api] = useState();
const [Get_Nb_Unread_Emails_message, setGet_Nb_Unread_Emails_message] = useState();
const [Get_Nb_Unread_Emails_result, setGet_Nb_Unread_Emails_result] = useState([]);
function Get_Nb_Unread_Emails(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
form.append("token", stored_cookie);
form.append("related_collection_recid", stored_apprenant_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Nb_User_Internal_Mail_Not_Read/";
// setLoading(true);
axios.post(myurl, form).then(res => {
// setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Get_Nb_Unread_Emails res.data.status = " + res.data.status);
console.log(" In Get_Nb_Unread_Emails res.data.message r_class = " + res.data.message);
setGet_Nb_Unread_Emails_api("true");
setGet_Nb_Unread_Emails_result(res.data.message);
setnb_undread_mail(res.data.message)
}
else {
setGet_Nb_Unread_Emails_api("false");
setGet_Nb_Unread_Emails_message(res.data.message);
/* // alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");*/
}
}).catch((error) => {
// setLoading(false);
console.warn('Not good man :( Get_Nb_Unread_Emails = ', error);
setGet_Nb_Unread_Emails_api("false");
alert("Impossible de récuperer la liste des emails");
//setmyApimyApiMessage("")
})
}
const [connected_user_data, setconnected_user_data] = useState();
function GetUserNameFromToken(event) {
const stored_cookie = getCookie('tokenmysych');
var form = new FormData();
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_user_account/";
axios.post(myurl, form).then(res => {
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
if (String(res.data.status) === String("true")) {
setconnected_user_data(JSON.parse(res.data.message));
}
else {
//console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
//console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
}
}).catch((error) => {
console.warn('In GetUserNameFromToken Not good man :( mysearchtext = ', error);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
GetUserNameFromToken();
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
@ -97,7 +201,12 @@ const ENT_Student_Header = () => {
//alert(" partner connected OK");
}
}, []);
if (stored_apprenant_id && String(stored_apprenant_id).length > 5) {
Get_Nb_Unread_Emails();
}
}, [stored_apprenant_id]);
const handleAccountCreation = () => {
setAccountMenu(null);
@ -277,22 +386,35 @@ const ENT_Student_Header = () => {
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_formations"} className="menu-link">Formations</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mon_planning"} className="menu-link">Planning</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_notes"} className="menu-link">Notes</a>
<div className="separator"></div>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_documents"} className="menu-link">Documents</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Emails</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_emails"} className="menu-link">Emails &nbsp;&nbsp;<StyledBadge_mysy_color1 badgeContent={nb_undread_mail} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
}}> </StyledBadge_mysy_color1></a>
</nav>
</div>
{connected_user_data && connected_user_data.prenom && <div className="logo-menu">
<nav className="menu-list">
Bonjour {connected_user_data.prenom.charAt(0).toUpperCase()+connected_user_data.prenom.slice(1).toLocaleLowerCase()} &nbsp;{connected_user_data.nom.toUpperCase()}
</nav>
</div>}
<div className="cta-login">
<div className="cta-buttons hide_on_mobile">
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) === String("1") &&
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/apprenant_account_data"} className="btn btn-primary">Mon compte</a>
}
</div>
<div className="separator hide_on_mobile"></div>
{String(someoneconnected) !== String("1") && <div className="login-link hide_on_mobile" onClick={handleAccountConnexion}>
<img src={Header_User} alt="User icon" className="user-icon hide_on_mobile" />
@ -305,6 +427,8 @@ const ENT_Student_Header = () => {
</div>}
</div>
</div >
</header >
</div >

View File

@ -142,6 +142,7 @@ function Module_Connexion_Ent_Student() {
if (String(val) === String("true")) {
setCookie("tokenmysych", result['message']);
setCookie("tokenmysychapprenant", result['apprenant_id']);
setCookie("tokenmysychconnecteduserid", result['user_account_id']);
setselected_apprenant_id(result['apprenant_id'])

View File

@ -630,17 +630,17 @@ const Module_Editique = (props) => {
var nom_fichier_cmd = "Convocation.zip";
if (String(selected_convention_id).trim() === "") {
if (String(selected_convocation_id).trim() === "") {
alert(" Vous devez choisir un modèle de document ");
return;
}
var url = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convocation_From_Session_By_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convention_id;
var url = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Convocation_From_Session_By_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convocation_id;
if (String(selected_convention_id) === "default_pdf") {
if (String(selected_convocation_id) === "default_pdf") {
// Il s'agit d'envoyer les convention par defaut de type mail
url = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Default_Convocation_From_Session_By_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convention_id;
url = process.env.REACT_APP_API_URL + "myclass/api/Prepare_and_Send_Default_Convocation_From_Session_By_PDF/" + stored_cookie + "/" + selected_session_id + "/" + selected_convocation_id;
}
@ -1202,7 +1202,7 @@ const Module_Editique = (props) => {
var form = new FormData();
if (String(selected_convention_id).trim() === "") {
if (String(selected_convocation_id).trim() === "") {
alert(" Vous devez choisir un document");
return;
}
@ -1211,7 +1211,7 @@ const Module_Editique = (props) => {
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("session_id", selected_session_id);
form.append("courrier_template_id", selected_convention_id);
form.append("courrier_template_id", selected_convocation_id);
form.append("email_test", selected_convention_email_test);
form.append("email_production", selected_convention_email_destinataire_prod);
@ -2396,6 +2396,7 @@ const Module_Editique = (props) => {
onChange={(event, value) => {
setselected_convocation_id("");
setNew_Get_List_Stagiaire_Convocations_result([]);
settab_convention_pieces_jointes_result([]);
if (value && value.value) {
if (value.value === "email")
@ -2421,7 +2422,7 @@ const Module_Editique = (props) => {
</div>
selected_convocation_id = {selected_convocation_id}
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") &&
New_Get_List_Stagiaire_Convocations_result.length > 0 &&
<div className="session_caract_Dialog" ><b>Choisir une convocation </b>
@ -2436,8 +2437,7 @@ const Module_Editique = (props) => {
onChange={(event, value) => {
if (value && value._id) {
setselected_convention_id(value._id);
setselected_convocation_id(value._id);
if (String(value._id) === "default_mail") {
setselected_convention_type("email");
@ -2449,11 +2449,11 @@ const Module_Editique = (props) => {
setselected_convention_type(JSON.parse(result2).type_doc);
}
settab_convention_pieces_jointes_result([]);
setNew_Get_List_Stagiaire_Convocations_result([])
setNew_Get_List_Stagiaire_Convocations_result([]);
} else {
setselected_convocation_id("");
settab_convention_pieces_jointes_result([]);
setNew_Get_List_Stagiaire_Convocations_result([])
setNew_Get_List_Stagiaire_Convocations_result([]);
}
}}
@ -2662,7 +2662,7 @@ const Module_Editique = (props) => {
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
if (!selected_convocation_id || selected_convocation_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
@ -2692,7 +2692,7 @@ const Module_Editique = (props) => {
setalert_type("error");
return;
}
if (!selected_convention_id || selected_convention_id === "") {
if (!selected_convocation_id || selected_convocation_id === "") {
setdisplay_alert_mysy("1");
setalert_message("Vous devez choisir un modèle de document");
setalert_type("error");
@ -2768,6 +2768,11 @@ const Module_Editique = (props) => {
fullWidth
options={New_Option_Type_Document}
onChange={(event, value) => {
settab_convention_pieces_jointes_result([]);
setselected_convention_id("");
setNew_Get_List_Stagiaire_Conventions_result([]);
if (value && value.value) {
if (value.value === "email" && String(Dialog_1_message) === "CONVENTION_STAGIAIRE_INDIVIDUELLE")
@ -2844,7 +2849,7 @@ const Module_Editique = (props) => {
{(String(selected_convention_type) === "email" || String(selected_convention_type) === "pdf") &&
<div className="session_caract_Dialog" > <b> Choisir une convention </b>
<Autocomplete
{New_Get_List_Stagiaire_Conventions_result && New_Get_List_Stagiaire_Conventions_result.length > 0 && <Autocomplete
disablePortal
name="event_dialog_version_convention"
id="event_dialog_version_convention"
@ -2876,7 +2881,7 @@ const Module_Editique = (props) => {
/>
}
/>
/>}
</div>}

File diff suppressed because it is too large Load Diff

View File

@ -983,7 +983,7 @@ registerLocale('fr', fr);
{props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> {props.my_title} </h3>}
{!props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> Tous vos documents </h3>}
<div className="div_row">
{/*} <div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
@ -1371,7 +1371,7 @@ registerLocale('fr', fr);
</div>
<br />
</div>
</div>*/}
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />

View File

@ -90,7 +90,7 @@ function PaperComponent(props) {
<Paper {...props} />
</Draggable>
);
}
}
const useStyles = makeStyles((theme) => ({
@ -113,7 +113,7 @@ const useStyles = makeStyles((theme) => ({
}));
const Module_Ent_Mes_Formations = (props) => {
registerLocale('fr', fr);
registerLocale('fr', fr);
const classes = useStyles();
const history = useHistory();
@ -181,16 +181,16 @@ registerLocale('fr', fr);
{ field: '_id', headerName: '_id', hide: true, disableExport: true, },
{ field: 'associated_session_id', headerName: 'associated_session_id', hide: true, disableExport: true, },
{ field: 'associated_inscription_id', headerName: 'associated_inscription_id', hide: true, disableExport: true, },
{ field: 'external_code', headerName: 'external_code', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'title', headerName: 'title', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'session_code_session', headerName: 'Code Promo', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'external_code', headerName: 'Code', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'title', headerName: 'Titre', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'session_code_session', headerName: 'Promotion / Session', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'session_date_debut', headerName: 'Du', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'session_date_fin', headerName: 'Au', hide: false, minWidth: 200, flex: 1, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'description', headerName: 'description', hide: true, Width: 1 },
{ field: 'description', headerName: 'Description', hide: true, Width: 1 },
{ field: 'internal_url', headerName: 'internal_url', hide: true, Width: 1 },
{ field: 'objectif', headerName: 'objectif', hide: true, Width: 1 },
{ field: 'programme', headerName: 'programme', hide: true, Width: 1 },
{ field: 'prerequis', headerName: 'prerequis', hide: true, Width: 1 },
{ field: 'objectif', headerName: 'Objectif', hide: true, Width: 1 },
{ field: 'programme', headerName: 'Programme', hide: true, Width: 1 },
{ field: 'prerequis', headerName: 'Prerequis', hide: true, Width: 1 },
]
@ -390,7 +390,7 @@ registerLocale('fr', fr);
setLoading(true);
axios.post(myurl, form).then(res => {
// console.log(" In Getall_Sequence_Of_Session res.data.status = " + res.data.status);
// console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
@ -2011,7 +2011,7 @@ registerLocale('fr', fr);
<br />*/}
<div className="div_row">
<nav style={{ width: '80%', float: 'right', textAlign: "right", marginTop: "10px", paddingRight:'10px' }}>
<nav style={{ width: '80%', float: 'right', textAlign: "right", marginTop: "10px", paddingRight: '10px' }}>
<nav className="mode_affichage" onClick={(event) => {
setaffichage_class("grid")
}}> <BiSolidGrid /> </nav>
@ -2026,210 +2026,210 @@ registerLocale('fr', fr);
</div>
{ affichage_class && String(affichage_class) === "list" && <div className="div_row" style={{ paddingRight: '10px' }}>
{affichage_class && String(affichage_class) === "list" && <div className="div_row" style={{ paddingRight: '10px' }}>
<div className="session_data">
<div style={{ "border": "None" }}>
<div className="session_data">
<div style={{ "border": "None" }}>
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
fontFamily: "Plus Jakarta Sans, sans-serif", color: '#EEF1F6',
<div style={{ height: 550, width: '100%', paddingRight: '5px' }}>
&nbsp;
<Box
sx={{
height: 500,
width: '100%',
paddingRight: '1px',
fontFamily: "Plus Jakarta Sans, sans-serif", color: '#EEF1F6',
// Gestion des cellule a distance ou presentiel
'& .cell--distantiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
// Gestion des cellule a distance ou presentiel
'& .cell--distantiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
'& .cell--presentiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
'& .cell--presentiel': {
backgroundColor: '#AFE1AF',
color: 'black',
},
// gestion couleur des lignes avec le statut d'inscription
'& .line--statut--annule': {
backgroundColor: '#D8D8D8',
color: 'white',
},
// gestion couleur des lignes avec le statut d'inscription
'& .line--statut--annule': {
backgroundColor: '#D8D8D8',
color: 'white',
},
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
'& .line--statut--inscrit': {
backgroundColor: '#CEF6D8',
color: 'black',
},
'& .line--statut--preinscrit': {
backgroundColor: '#F7F2E0',
color: 'black',
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
/*"& .MuiDataGrid-virtualScrollerRenderZone": {
"& .MuiDataGrid-row": {
"&:nth-child(2n)": { backgroundColor: "rgba(235, 235, 235, .7)" }
}
},*/
"& .MuiDataGrid-columnHeaders": {
backgroundColor: "#c8cfd5",
color: "black",
fontSize: 14
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
'& .line--statut--selected': {
backgroundColor: '#FBF2EF',
color: 'black',
},
'& .line--statut--pair': {
backgroundColor: 'rgba(235, 235, 235, .7)',
color: 'black',
},
'& .line--statut--impair': {
backgroundColor: '#FFFFFF',
color: 'black',
},
[`& .${gridClasses.cell}`]: {
py: 1,
},
}}
>
<DataGrid
// checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
// setsubmenu();
}
}}
selectionModel={selectionModel}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={New_Get_List_Ent_Formation_result.map((item, index) => (
{
id: index,
_id: (item)._id,
title: (item).title,
external_code: (item).external_code,
objectif: (item).objectif,
programme: (item).programme,
prerequis: (item).prerequis,
description: (item).description,
associated_session_id: (item).associated_session_id,
associated_inscription_id: (item).associated_inscription_id,
session_code_session: (item).session_code_session,
session_date_debut: (item).session_date_debut,
session_date_fin: (item).session_date_fin,
}
))}
columns={columns_ent_mes_formations}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
setselected_id(newSelectionModel.row._id);
setgridline_id(newSelectionModel.row.id);
setselected_session_id(newSelectionModel.row.associated_session_id);
setselected_inscription_id(newSelectionModel.row.associated_inscription_id);
setselected_class_external_code(newSelectionModel.row.external_code);
setselected_code_session(newSelectionModel.row.session_code_session);
submenu_detail();
Get_Given_Class_Data(newSelectionModel.row._id);
Get_List_UE_From_Class_Id(newSelectionModel.row.class_id);
Getall_Class_List_Evalution(newSelectionModel.row.class_id);
handleClick_Class_Selected_From_Line(newSelectionModel.row.associated_session_id, newSelectionModel.row.associated_inscription_id);
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
if (params.field === 'distantiel' && String(params.value) === "1") {
return 'cell--distantiel';
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
}}
>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
/*if (newSelectionModel.length === 1)
handleClick_edit_employee_From_Line(newSelectionModel);*/
if (newSelectionModel.length !== 1) {
// setsubmenu();
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
}
else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
}
}}
selectionModel={selectionModel}
if (String(params.row.status) === "-1") {
return 'line--statut--annule';
}
if (String(params.row.status) === "0") {
return 'line--statut--preinscrit';
}
if (String(params.row.status) === "1") {
return 'line--statut--inscrit';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={New_Get_List_Ent_Formation_result.map((item, index) => (
{
id: index,
_id: (item)._id,
title: (item).title,
external_code: (item).external_code,
objectif: (item).objectif,
programme: (item).programme,
prerequis: (item).prerequis,
description: (item).description,
associated_session_id: (item).associated_session_id,
associated_inscription_id: (item).associated_inscription_id,
session_code_session: (item).session_code_session,
session_date_debut: (item).session_date_debut,
session_date_fin: (item).session_date_fin,
}
))}
columns={columns_ent_mes_formations}
pageSize={10}
className="datagridclass"
onRowDoubleClick={(newSelectionModel) => {
setselected_id(newSelectionModel.row._id);
setgridline_id(newSelectionModel.row.id);
setselected_session_id(newSelectionModel.row.associated_session_id);
setselected_inscription_id(newSelectionModel.row.associated_inscription_id);
setselected_class_external_code(newSelectionModel.row.external_code);
setselected_code_session(newSelectionModel.row.session_code_session);
submenu_detail();
Get_Given_Class_Data(newSelectionModel.row._id);
Get_List_UE_From_Class_Id(newSelectionModel.row.class_id);
Getall_Class_List_Evalution(newSelectionModel.row.class_id);
handleClick_Class_Selected_From_Line(newSelectionModel.row.associated_session_id, newSelectionModel.row.associated_inscription_id);
}}
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
//sx={datagridSx}
getCellClassName={(params) => {
if (params.field === 'distantiel' && String(params.value) === "1") {
return 'cell--distantiel';
}
if (params.field === "presentiel" && String(params.value) == "1") {
return 'cell--presentiel';
}
//field === "statut"
if (params.field === "status" && String(params.value) == "0") {
return 'cell--statut--preinscrit';
}
if (params.field === "status" && String(params.value) == "1") {
return 'cell--statut--inscrit';
}
if (params.field === "status" && String(params.value) == "-1") {
return 'cell--statut--annule';
}
}}
getRowClassName={(params) => {
// Pour la gestion de la couleur de zone double cliquée
if (String(params.row.id) === String(gridline_id)) {
return 'line--statut--selected';
}
else if (parseInt(String(params.row.id)) % 2 === 0) {
return 'line--statut--pair';
}
else if (parseInt(String(params.row.id)) % 2 !== 0) {
return 'line--statut--impair';
}
if (String(params.row.status) === "-1") {
return 'line--statut--annule';
}
if (String(params.row.status) === "0") {
return 'line--statut--preinscrit';
}
if (String(params.row.status) === "1") {
return 'line--statut--inscrit';
}
}}
getEstimatedRowHeight={() => 200}
getRowHeight={() => "auto"}
sx={{
"& .MuiDataGrid-cellContent": {
minHeight: 50,
}
}}
/>
</Box>
<br />
</div>
}
}}
/>
</Box>
<br />
</div>
</div>
</div>
</div>
}
{
affichage_class && String(affichage_class) === "grid" && <div className="div_row" style={{ paddingRight: '10px' }}>
<div style={{ width: '100%', float: 'left', marginBottom:"1rem" }}>
<div style={{ width: '100%', float: 'left', marginBottom: "1rem" }}>
<div className="block_display_flex_formation">
{New_Get_List_Ent_Formation_result && New_Get_List_Ent_Formation_result.map((formation) => (
@ -2269,14 +2269,14 @@ registerLocale('fr', fr);
{
String(submenu) === "detail" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
<div className="block_central" >
<div className="block_central_gauche">
<div className="block_central_gauche" style={{backgroundColor:'white', fontFamily:'DM Sans'}}>
<br />
<div className="block_info_page_pave_title_desc">
<div className="block_info_page_pave_title_desc_title"> Description
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Description
</div>
{JSON.parse(Get_Given_Class_Data_result).description && <div className="block_info_page_pave_title_desc description_block">
{JSON.parse(Get_Given_Class_Data_result).description && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).description))}
</div>
@ -2285,10 +2285,10 @@ registerLocale('fr', fr);
<br />
<br />
<div className="block_info_page_pave_title_desc">
<div className="block_info_page_pave_title_desc_title"> Objectif
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Objectif
</div>
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block">
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).objectif))}
</div>}
@ -2296,17 +2296,17 @@ registerLocale('fr', fr);
</div>
<br />
<div className="block_info_page_pave_title_desc_long_text" >
<div className="block_info_page_pave_title_desc_title">
Programme
<div className="block_info_page_pave_title_desc" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
<div className="block_info_page_pave_title_desc_title" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}> Programme
</div>
{JSON.parse(Get_Given_Class_Data_result).programme && <div className="block_info_page_pave_title_desc description_block">
{JSON.parse(Get_Given_Class_Data_result).objectif && <div className="block_info_page_pave_title_desc description_block" style={{backgroundColor:'#f2f3f3', fontFamily:'DM Sans'}}>
{parse(String(JSON.parse(Get_Given_Class_Data_result).programme))}
</div>
}
</div>}
</div>
<br />
</div>
</div>
@ -2354,7 +2354,7 @@ registerLocale('fr', fr);
</div>
}
{
String(submenu) === "notes" && Get_Given_Class_Data_result && Get_Given_Class_Data_result.length > 0 && <div className="div_row" >
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Notes </nav>
@ -2526,7 +2526,7 @@ registerLocale('fr', fr);
</div>
{Get_List_Of_All_PJ_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
@ -2535,7 +2535,7 @@ registerLocale('fr', fr);
{Get_List_Of_All_PJ_result && Get_List_Of_All_PJ_result.map((val) => (
<div className="div_row_list_pj" style={{ fontFamily: "DM Sans", fontSize: '14px' }}>
<nav style={{ "color": "green", "cursor": "pointer" }} onClick={Download_one_attached_document} name={(JSON.parse(val).file_name)} id={(JSON.parse(val).file_name)}> Télécharger &nbsp;<i> {(JSON.parse(val).file_business_object)}</i> </nav> <br />
</div>
))}

View File

@ -374,7 +374,7 @@ const Module_Ent_Mes_Notes = (props) => {
{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" &&
@ -389,7 +389,7 @@ const Module_Ent_Mes_Notes = (props) => {
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Notes </h3>
<div>
{/*} <div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
<div className="div_row_gauche texte_area_filter" >
@ -549,7 +549,7 @@ const Module_Ent_Mes_Notes = (props) => {
</div>}
</div>
<br />
<br />*/}
<div className="session_caract_Dialog"> <b> Choisir une Session ou une Promotion </b><br />
{New_Get_List_Ent_Session_Promotion_result && New_Get_List_Ent_Session_Promotion_result.length > 0 &&
<Autocomplete

View File

@ -920,7 +920,7 @@ const Module_Ent_Mon_Planning = (props) => {
<h3 style={{ fontFamily: 'DM Sans' }}> ENT Full Planning </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Plannings </h3>
{/*<div>
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>

View File

@ -529,7 +529,7 @@ const Module_Internal_Email_Management = (props) => {
var node = {
"_id": local_id,
"id": localid,
"label": local_email,
"label": local_prenom+" "+local_nom+" <"+local_email+">",
"nom": local_nom,
"prenom": local_prenom,
"email": local_email,
@ -2101,7 +2101,7 @@ const Module_Internal_Email_Management = (props) => {
<div className="div_row">
{String(props.check_user_acces_right("stagiaire", "write")) === "1" && selectionModel && selectionModel.length >= 1 && <div className="block_en_mass">
{selectionModel && selectionModel.length >= 1 && <div className="block_en_mass">
<nav >Traitement en masse </nav>
&nbsp;
<Autocomplete
@ -2138,7 +2138,7 @@ const Module_Internal_Email_Management = (props) => {
{String(props.check_user_acces_right("stagiaire", "write")) === "1" && selectionModel && selectionModel.length >= 1 &&
{selectionModel && selectionModel.length >= 1 &&
actionmass_ftion_val && String(actionmass_ftion_val).length > 2 && <nav className='block_en_mass_bton_action'>
<Popup
trigger={<Button className="bton_enreg" style={{ "width": "90%" }}>
@ -2420,10 +2420,10 @@ const Module_Internal_Email_Management = (props) => {
<div style={{ width: '100%', float: 'left', }}>
<div style={{ width: '10%', float: 'left', paddingTop: '1.5rem', fontFamily: "DM Sans" }}>
<div style={{ width: '10%', float: 'left', paddingTop: '1.5rem', fontFamily: "DM Sans",textAlign:'left' }}>
<b> Envoyer à </b>
</div>
{(!reply_email || reply_email !== "1") && <div style={{ width: '90%', float: 'right', }}>
{(!reply_email || reply_email !== "1") && <div style={{ width: '90%', float: 'right', textAlign:'left'}}>
<Autocomplete
disablePortal
name="detail_internal_mail_to"
@ -2448,7 +2448,7 @@ const Module_Internal_Email_Management = (props) => {
/>
</div>}
{reply_email && reply_email === "1" && <div style={{ width: '90%', float: 'right', }}>
{reply_email && reply_email === "1" && <div style={{ width: '90%', float: 'right', textAlign:'left'}}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2477,9 +2477,9 @@ const Module_Internal_Email_Management = (props) => {
<div style={{ width: '100%', float: 'left', }}>
<div style={{ width: '10%', float: 'left', paddingTop: '1.5rem', fontFamily: "DM Sans" }}> <b> Sujet </b>
<div style={{ width: '10%', float: 'left', paddingTop: '1.5rem', fontFamily: "DM Sans", textAlign:'left' }}> <b> Sujet </b>
</div>
<div style={{ width: '90%', float: 'right', }}>
<div style={{ width: '90%', float: 'right', textAlign:'left'}}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
required
@ -2691,7 +2691,7 @@ const Module_Internal_Email_Management = (props) => {
<div className="div_row">
<div className="div_row_gauche">
<div className="div_row_gauche" style={{textAlign:'left'}}>
<Button
onClick={(e) => {
@ -2700,7 +2700,7 @@ const Module_Internal_Email_Management = (props) => {
className="bton_enreg_dialog">Envoyer Mail</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<div className="div_row_droite" style={{ "textAlign": 'right' }}>
<Button onClick={(e) => {
Delete_New_Empty_Email();
}} className="bton_annule_dialog" >annuler new mail</Button>

View File

@ -215,7 +215,7 @@ const Module_Session_Notes_Classement = (props) => {
{ field: 'prenom', headerName: 'Prenom', minwidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{ field: 'rang', headerName: 'Rang', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />, },
{
field: 'note_finale', headerName: 'Noete finale', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />,
field: 'note_finale', headerName: 'Note finale', minwidth: 100, flex: 1, hide: false, editable: false, renderCell: (params) => <ExpandableCell_50 {...params} />,
},
@ -297,7 +297,7 @@ const Module_Session_Notes_Classement = (props) => {
//handleClose_option_button_vertical(e, option);
setAnchorEl(null);
if (option && String(option) === "Jury Edit") {
if (option && String(option) === "Observ. Edit") {
setDialog_JURY_INFO_open(true);
}
@ -451,7 +451,7 @@ const Module_Session_Notes_Classement = (props) => {
//handleClose_option_button_vertical(e, option);
setAnchorEl(null);
if (option && String(option) === "Jury Edit") {
if (option && String(option) === "Observ. Edit") {
setDialog_JURY_INFO_open(true);
@ -654,7 +654,7 @@ const Module_Session_Notes_Classement = (props) => {
const options_menu_vertical = [
'',
'Jury Edit',
'Observ. Edit',
];
@ -668,8 +668,8 @@ const Module_Session_Notes_Classement = (props) => {
};
const handleClose_option_button_vertical = (event, value) => {
if (value && String(value) === "Jury Edit") {
console.log("### Jury Edit= ", value);
if (value && String(value) === "Observ. Edit") {
console.log("### Observ. Edit= ", value);
}
@ -2534,8 +2534,8 @@ const Module_Session_Notes_Classement = (props) => {
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Délibération du Jury</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "30rem" }}>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Observation</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<DialogContentText>
{Dialog_1_message}
</DialogContentText>
@ -2563,7 +2563,7 @@ const Module_Session_Notes_Classement = (props) => {
</div>
<div className="session_caract_Dialog" > <b> Note </b> <br />
{/*<div className="session_caract_Dialog" > <b> Note </b> <br />
<TextareaAutosize
name="detail_jury_note"
@ -2582,9 +2582,9 @@ const Module_Session_Notes_Classement = (props) => {
/>
</div>
</div>*/}
<div className="session_caract_Dialog" > <b> Validation </b> <br />
{/*<div className="session_caract_Dialog" > <b> Validation </b> <br />
{New_Option_Valisation_Jury && New_Option_Valisation_Jury.length > 0 && jury_cell_editable === true && <Autocomplete
disablePortal
name="filtre1"
@ -2607,7 +2607,7 @@ const Module_Session_Notes_Classement = (props) => {
/>}
</div>
</div>*/}

View File

@ -97,7 +97,7 @@ const useStyles = makeStyles((theme) => ({
backgroundColor: 'lightgray',
color: 'gray',
},
}));
}));
const Modules_Mes_Documents = (props) => {
@ -1080,7 +1080,7 @@ const Modules_Mes_Documents = (props) => {
setdata_row_grouped_by(grouped_by);
setdata_row_grouped_field(grouped_by);
datagrid_grouped_by(grouped_by);
setcookie_document_display_view("mysy_session_data_row_grouped_by", String(grouped_by), { path: '/' });
setcookie_document_display_view("mysy_document_data_row_grouped_by", String(grouped_by), { path: '/' });
}
const [document_display_view, setdocument_display_view] = useState("list");
@ -1169,8 +1169,9 @@ const Modules_Mes_Documents = (props) => {
{props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> {props.my_title} </h3>}
{!props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> Tous vos documents </h3>}
{props.all_ged && props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> {props.my_title} </h3>}
{props.all_ged && !props.my_title && <h3 style={{ fontFamily: 'DM Sans' }}> Tous vos documents </h3>}
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>

View File

@ -43,7 +43,7 @@ import {
gridVisibleColumnFieldsSelector,
GridValueGetterParams,
GridPreferencePanelsValue,
} from '@mui/x-data-grid';
import AttachFileIcon from '@mui/icons-material/AttachFile';
//import { utils, writeFileXLSX } from "xlsx";

View File

@ -46,7 +46,7 @@ const New_ButtonHilight_ENT_Student_2025 = () => {
const [state, setstate] = useState("France");
const [userIp, setuserIp] = useState("172.71.122.128");
const controlNavbar = () => {
if (typeof window !== 'undefined') {

View File

@ -12,7 +12,7 @@ const New_Navigation_ENT_Student_2025 = () => {
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
return (
<div className={"navigation"}>

View File

@ -1155,7 +1155,7 @@ const Notes_Evaluation = (props) => {
"convocation_send_date": "",
"convocation_send_type": "",
};
new_data2.push(node);
// new_data2.push(node);
if (new_data2.length > 0)
setNew_Getall_Evaluation_Participant_List_result(new_data2);

View File

@ -2031,7 +2031,8 @@ const Partner = (props) => {
</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"} />
{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={Get_Nb_Unread_Emails_result} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
@ -2039,7 +2040,8 @@ const Partner = (props) => {
</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={Get_Nb_Unread_Emails_result} style={{ "cursor": "pointer" }}
{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={Get_Nb_Unread_Emails_result} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
}}></StyledBadge_mysy_color1></Menu>}
@ -2439,6 +2441,7 @@ const Partner = (props) => {
partner_owner_recid={conntected_account_partner_owner_recid}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
all_ged={"Gestion 1"}
/>
</div>
}
@ -3422,6 +3425,7 @@ const Partner = (props) => {
partner_owner_recid={conntected_account_partner_owner_recid}
type_user_connected={"partner_account"}
my_title={"Gestion Documentaire"}
all_ged={"1"}
/>
</div>
}

View File

@ -33,6 +33,7 @@ import Module_Ent_Mes_Formations from "./Module_Ent_Mes_Formations";
import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
import Module_Ent_Mes_Notes from "./Module_Ent_Mes_Notes";
import Module_Ent_Internal_Email_Management from "./Module_Ent_Internal_Email_Management";
import { useParams } from 'react-router-dom'
@ -69,7 +70,6 @@ function Student_Account_Ent() {
const location = useLocation();
useEffect(() => {
var list_menu = ["affichage", "recherche", "upgradecompte", "profil_objectif", "mes_factures", "mes_documents"]
// getImage();
@ -108,6 +108,8 @@ function Student_Account_Ent() {
Get_Ent_Message_Alert();
console.log(" ## setconnected_user_data = ", connected_user_data)
}, []);
@ -210,7 +212,7 @@ function Student_Account_Ent() {
axios.post(myurl, form).then(res => {
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
if (String(res.data.status) === String("true")) {
setusername(JSON.parse(res.data.message).email);
@ -510,11 +512,14 @@ function Student_Account_Ent() {
</div>}
{connected_user_data && connected_user_data.type &&
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'center' }}> Espace numérique de travail 28/10/2025</h3>}
<h3 style={{ fontFamily: 'DM Sans', textAlign: 'left', paddingLeft:'15px' }}> Espace numérique de travail
</h3>}
{/*** Si on A DES MESSAGES d'ALERTE, alors, alors on AFFICHE la zonne */}
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 && <div style={{ width: "100%", float: 'left' }}>
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '30%', float: 'left', padding: '20px' }}>
{New_Get_Ent_Message_Alert_result && New_Get_Ent_Message_Alert_result.length > 0 &&
New_Get_Ent_Message_Alert_result.map((message) => (
@ -544,7 +549,7 @@ function Student_Account_Ent() {
</div>
<div style={{ width: '69%', float: 'right' }}>
<div style={{ width: '69%', float: 'right' }}>
{String(menu) === String("apprenant_account_data") && <UpdateUserInfo apprenant_id={apprenant_id} />}
@ -570,13 +575,29 @@ function Student_Account_Ent() {
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}
</div>
</div>}
{/*** Si on A DES PASSSSS MESSAGES d'ALERTE, alors, alors on NNNNN'AFFICHE PASSSSSSSSSSSSla zonne */}
{New_Get_Ent_Message_Alert_result.length <= 0 && <div style={{ width: "100%", float: 'left' }}>
{connected_user_data && connected_user_data._id && New_Get_Ent_Message_Alert_result.length <= 0 && <div style={{ width: "100%", float: 'left' }}>
<div style={{ width: '100%', maxWidth: '1600px', margin: 'auto' }}>
@ -605,6 +626,19 @@ function Student_Account_Ent() {
<Modules_Mes_Documents apprenant_id={apprenant_id}
/>}
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}
</div>
</div>}

View File

@ -14,6 +14,9 @@ import DialogTitle from '@mui/material/DialogTitle';
import Button from '@mui/material/Button';
import { useCookies } from "react-cookie";
import axios from "axios";
import Badge from '@mui/material/Badge';
import { styled } from '@mui/material/styles';
import CancelPresentationIcon from '@mui/icons-material/CancelPresentation';
import { makeStyles } from "@material-ui/core/styles";
@ -53,6 +56,30 @@ const useStyles = makeStyles((theme) => ({
},
}));
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 Header_ENT_Student = () => {
const history = useHistory();
const classes = useStyles();
@ -68,10 +95,91 @@ const Header_ENT_Student = () => {
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
const [nb_undread_mail, setnb_undread_mail] = React.useState("0");
const [Get_Nb_Unread_Emails_api, setGet_Nb_Unread_Emails_api] = useState();
const [Get_Nb_Unread_Emails_message, setGet_Nb_Unread_Emails_message] = useState();
const [Get_Nb_Unread_Emails_result, setGet_Nb_Unread_Emails_result] = useState([]);
function Get_Nb_Unread_Emails(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
form.append("token", stored_cookie);
form.append("related_collection_recid", stored_apprenant_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Nb_User_Internal_Mail_Not_Read/";
// setLoading(true);
axios.post(myurl, form).then(res => {
// setLoading(false);
if (String(res.data.status) === String("true")) {
//console.log(" In Get_Nb_Unread_Emails res.data.status = " + res.data.status);
console.log(" In Get_Nb_Unread_Emails res.data.message r_class = " + res.data.message);
setGet_Nb_Unread_Emails_api("true");
setGet_Nb_Unread_Emails_result(res.data.message);
setnb_undread_mail(res.data.message)
}
else {
setGet_Nb_Unread_Emails_api("false");
setGet_Nb_Unread_Emails_message(res.data.message);
/* // alert(res.data.message)
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("error");*/
}
}).catch((error) => {
// setLoading(false);
console.warn('Not good man :( Get_Nb_Unread_Emails = ', error);
setGet_Nb_Unread_Emails_api("false");
alert("Impossible de récuperer la liste des emails");
//setmyApimyApiMessage("")
})
}
const [connected_user_data, setconnected_user_data] = useState();
function GetUserNameFromToken(event) {
const stored_cookie = getCookie('tokenmysych');
var form = new FormData();
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_user_account/";
axios.post(myurl, form).then(res => {
// console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
// console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
if (String(res.data.status) === String("true")) {
setconnected_user_data(JSON.parse(res.data.message));
}
else {
//console.log(" In GetUserNameFromToken res.data.status = " + res.data.status);
//console.log(" In GetUserNameFromToken res.data.message = " + res.data.message);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
}
}).catch((error) => {
console.warn('In GetUserNameFromToken Not good man :( mysearchtext = ', error);
//setmyApiResponse("false");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
GetUserNameFromToken();
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
@ -92,6 +200,11 @@ const Header_ENT_Student = () => {
//alert(" partner connected OK");
}
if (stored_apprenant_id && String(stored_apprenant_id).length > 5) {
Get_Nb_Unread_Emails();
}
}, []);
const handleAccountCreation = () => {
@ -276,10 +389,20 @@ const Header_ENT_Student = () => {
<div className="separator"></div>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_documents"} className="menu-link">Documents</a>
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Emails</a>
<a href={"/mysy-student-ent/" + `${stored_apprenant_id}` + "/mes_emails"} className="menu-link">Emails &nbsp;&nbsp;<StyledBadge_mysy_color1 badgeContent={nb_undread_mail} style={{ "cursor": "pointer" }}
onClick={(event) => {
// monactivite_func();
}}> </StyledBadge_mysy_color1></a>
</nav>
</div>
{connected_user_data && connected_user_data.prenom && <div className="logo-menu">
<nav className="menu-link">
Bonjour {connected_user_data.prenom.charAt(0).toUpperCase() + connected_user_data.prenom.slice(1).toLocaleLowerCase()} &nbsp;{connected_user_data.nom.toUpperCase()}
</nav>
</div>}
<div className="cta-login">
<div className="cta-buttons">

View File

@ -10,7 +10,7 @@ const student_account_ent = () => {
<ENT_Student_New_C_Header_2025_V2 />
<Student_Account_Ent />
<New_C_Footer_Without_Testimony_2025_V2 />
</div>
</div>
)
}

View File

@ -2493,7 +2493,7 @@
font-family: 'Albert Sans';
font-style: normal;
font-weight: 700;
font-size: 20px;
font-size: 18px;
line-height: 120%;
/* identical to box height, or 24px */
letter-spacing: 0.02em;