15/12/25 - 13h

branche_01062025
Cherif 2025-12-15 13:33:33 +01:00
parent 09894d2904
commit ec05e93ddb
21 changed files with 13331 additions and 295 deletions

View File

@ -96,7 +96,9 @@ function App() {
const New_Sign_Up_2025 = lazy(() => import("./pages/new_p_sign_up_2025"));
const New_Sign_In_2025 = lazy(() => import("./pages/new_p_sign_in_2025"));
const Student_Account_Ent = lazy(() => import("./pages/student_account_ent"));
const Intranet_Client_Account = lazy(() => import("./pages/intranet_client_account"));
const Account = lazy(() => import("./pages/account"));
@ -359,14 +361,15 @@ function App() {
<Route path="/PartnerLogin0" exact component={PartnerLogin0} />
<Route path="/PartnerLogin1" exact component={PartnerLogin1} />
<Route path="/mysy-user-account" exact component={Account} />
<Route path="/mysy-user-account" exact component={Intranet_Client_Account} />
<Route path="/Ajout-Article-formation" exact component={AddArticle} />
<Route path="/ResetUserPwd/:token/:accounttype" exact component={ResetUserPwd} />
<Route path="/DeleteUserAccount/:token" exact component={DeleteUserAccount} />
<Route path="/mysy-student-ent/:local_props_apprenant_id/:local_props_menu" exact component={Student_Account_Ent} />
<Route path="/mysy-student-ent/:local_props_apprenant_id/:local_props_menu" exact component={Student_Account_Ent} />
<Route path="/mysy-user-account/:local_props_client_id/:local_props_menu" exact component={Intranet_Client_Account} />
{/* Fin Migration */}

View File

@ -1,5 +1,6 @@
import React, { useState, useEffect } from "react";
import UpdateUserInfo from "../components/UpdateUserInfo";
import UpdateUserInfo_Intranet_Client from "../components/UpdateUserInfo_Intranet_Client";
import bannerimg from "../mysy_img/MYSY_banner_compte.png";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Button from '@mui/material/Button';
@ -21,13 +22,25 @@ import Profil_Objectif from "./ProfilObjectif";
import { useLocation } from "react-router-dom";
import { FaHandPointRight } from "react-icons/fa";
import Intranet_Factures_Client from "./Intranet_Factures_Client";
import Intranet_Commande_Devis from "./Intranet_Commande_Devis";
import Intranet_Tous_Documents from "./Intranet_Tous_Documents";
import Modules_Mes_Documents from "./Modules_Mes_Documents";
import Intranet_Mes_Stagiaires from "./Intranet_Mes_Stagiaires";
import { useParams } from 'react-router-dom';
import Module_Intranet_Client_Internal_Email_Management from "./Module_Intranet_Client_Internal_Email_Management";
function Account() {
const { local_props_client_id, local_props_menu } = useParams();
const [menu, setmenu] = useState("mes_stagiaires");
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_client_id, setCookie_client_id, removeCookie_client_id] = useCookies(['tokenmysychclient']);
const [result, setResult] = useState("");
const [myApiResponse, setmyApiResponse] = useState("");
const stored_user = getCookie('tokenmysych');
@ -52,10 +65,18 @@ function Account() {
const location = useLocation();
useEffect(() => {
var list_menu = ["affichage", "recherche", "upgradecompte", "profil_objectif", "mes_factures", "mes_documents"]
if (local_props_menu && String(local_props_menu) === "affichage") {
setmenu("affichage")
}
getImage();
console.log(" ## local_props_client_id = ", local_props_client_id, " ## local_props_menu = ", local_props_menu)
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
//alert(" début puch");
history.push("/Connexion");
@ -109,7 +130,7 @@ function Account() {
//console.log(" getImage: res.data.message.img = " + res.data.message);
if (res.data.message.img.length > 0) {
setisimage("True");
}
}
else {
setisimage("False");
}
@ -138,7 +159,8 @@ function Account() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
removeCookie('tokenmysych', { path: '/' });
history.push("/Connexion");
removeCookie_client_id('tokenmysychclient', { path: '/' });
history.push("/intranet");
}
}
@ -379,7 +401,7 @@ function Account() {
<h1 style={{ fontSize: '0.1px', opacity: '0' }}>Éditeur Français de logiciels pour organisme de formation. Avec solutions de E-Learning, gestion administrative et gestion relation client nous accompagnons les organismes de formation à réaliser laudit QUALIOPI en toute sérénité. Nous sommes les moins cher du marché. Nous vous accompagnons automatiser vos process : inscription, évaluation, émargement (qr-code), Check-list QUALIOPI, Personnalisation et édition documents,
Gestion formateurs, Catalogue formations personnalisé </h1>
<div className="div_mobile">
<div>
@ -398,7 +420,7 @@ function Account() {
{isSelected && <div className="nonlable">
<Button variant="outlined" onClick={sendImage} >Enregistrer</Button>
</div>}
</div>
<div className="nom_prenom"> {username && <b> {username} </b>}
{!username && <b> xxxx </b>} </div>
@ -481,12 +503,23 @@ function Account() {
{result}
</div>}
{String(menu) === String("mes_factures") && connected_user_data && connected_user_data.partner_owner_recid &&
connected_user_data.partner_client_id &&
<Intranet_Factures_Client partner_client_id={connected_user_data.partner_client_id}
partner_owner_recid={connected_user_data.partner_owner_recid}
my_title={"MES FACTURES"}
type_document={"devis"}
type_user_connected={"user_account"}
filter_all_document={"0"}
/>}
{String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid &&
connected_user_data.partner_client_id &&
<Intranet_Commande_Devis
partner_client_id={connected_user_data.partner_client_id}
partner_owner_recid={""}
my_title={"MES DEVIS"}
type_document={"devis"}
type_user_connected={"user_account"}
@ -503,19 +536,10 @@ function Account() {
my_title={"Gestion Documentaire"}
type_user_connected={"user_account"}
type_document={"all"}
/>}
{String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid &&
connected_user_data.partner_client_id &&
<Modules_Mes_Documents
partner_client_id={connected_user_data.partner_client_id}
partner_owner_recid={""}
my_title={"MES DEVIS"}
type_document={"devis"}
type_user_connected={"user_account"}
filter_all_document={"0"}
/>}
{String(menu) === String("mes_conventions") && connected_user_data && connected_user_data.partner_owner_recid &&
connected_user_data.partner_client_id &&
<Modules_Mes_Documents partner_client_id={connected_user_data.partner_client_id}
@ -558,10 +582,12 @@ function Account() {
{String(menu) === String("mes_documents") && <Profil_Objectif />}
{String(menu) === String("affichage") && <UpdateUserInfo_Intranet_Client />}
</div>
</div>
</div>
</div>

View File

@ -1,9 +1,11 @@
import React, { useRef, useState, useEffect } from "react";
import TextField from '@mui/material/TextField';
import MenuItem from '@mui/material/MenuItem';
import Menu from '@mui/material/Menu';
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import Button from '@mui/material/Button';
import axios from "axios";
import MoreVertIcon from '@mui/icons-material/MoreVert';
import { getCookie, setCookie } from 'react-use-cookie';
import AttachFileIcon from '@mui/icons-material/AttachFile';
import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
@ -20,6 +22,7 @@ import {
FcCancel, FcApproval, FcAcceptDatabase,
FcPrint, FcExpired
} from "react-icons/fc";
import { FcDownload } from "react-icons/fc";
import fr from 'date-fns/locale/fr';
import { registerLocale } from 'react-datepicker';
import DatePicker from "react-datepicker";
@ -152,6 +155,31 @@ const DisplayPartnerStagiaires = (props) => {
const [datagrid_columns_size_model1, setdatagrid_columns_size_model1] = useState(200);
const [datagrid_columns_size_model2, setdatagrid_columns_size_model2] = useState(80);
const ITEM_HEIGHT = 48;
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick_option_button_vertical = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose_option_button_vertical = (event, value) => {
setAnchorEl(null);
};
const options_menu_vertical = [
'Valider Inscr.',
'Annuler Inscr.',
'PréInscrire',
'Supprimer',
];
const [menu_gestion_value, setmenu_gestion_value] = useState("");
const [working_cellValues, setworking_cellValues] = useState(false);
const [dialogOpen_supp, setdialogOpen_supp] = useState(false);
const Dialog_menuitem_close_supp = () => {
setdialogOpen_supp(false)
};
const columns = [
{ field: '_id', headerName: '_id', hide: true, editable: false, Width: 0, disableExport: true, },
{ field: 'session_id', headerName: 'session_id', hide: true, editable: false, Width: 0, disableExport: true, },
@ -249,10 +277,10 @@ const DisplayPartnerStagiaires = (props) => {
return "???";
},
},
{ field: 'code_session', headerName: 'Code Promo', hideable: true, editable: false, minWidth: 150, flex: 1 },
{ field: 'code_session', headerName: 'Session/Promo', hideable: true, editable: false, minWidth: 150, flex: 1 },
{ field: 'title', headerName: 'Formation', minWidth: datagrid_columns_size_model1, align: "center", hideable: true, editable: false, hide: true },
{
field: 'distantiel', headerName: 'Distantiel', width: datagrid_columns_size_model2,
field: 'distantiel', headerName: 'Distantiel', width: datagrid_columns_size_model2, hide: true,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Non";
@ -263,7 +291,7 @@ const DisplayPartnerStagiaires = (props) => {
},
},
{
field: 'presentiel', headerName: 'Presentiel', width: datagrid_columns_size_model2,
field: 'presentiel', headerName: 'Presentiel', width: datagrid_columns_size_model2, hide: true,
valueFormatter: (params) => {
if (String(params.value) === "0")
return "Non";
@ -275,12 +303,12 @@ const DisplayPartnerStagiaires = (props) => {
},
{ field: 'domaine', headerName: 'Domaine', minWidth: datagrid_columns_size_model2, align: "center", hide: true, hideable: true, editable: false },
{ field: 'date_debut', headerName: 'Du', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false },
{ field: 'date_fin', headerName: 'Au', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false },
{ field: 'date_debut', headerName: 'Du', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false, hide: true },
{ field: 'date_fin', headerName: 'Au', minWidth: 90, maxWidth: 100, flex: 1, hideable: true, editable: false, hide: true },
{ field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false },
{
field: 'invoiced', headerName: 'Facturé', minWidth: 100, flex: 1, maxWidth: 150, hide: false, editable: false,
field: 'invoiced', headerName: 'Facturé', minWidth: 100, flex: 1, maxWidth: 150, hide: true, editable: false,
valueFormatter: (params) => {
if (String(params.value) === "1")
return "Oui";
@ -293,10 +321,10 @@ const DisplayPartnerStagiaires = (props) => {
{ field: 'class_recyclage_delai', headerName: 'Recycl. Delai', hide: true, flex: 1, minWidth: 100, },
{ field: 'class_recyclage_periodicite', headerName: 'Recycl. Perio', hide: true, flex: 1, minWidth: 100, },
{ field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: false, flex: 1, minWidth: 100, },
{ field: 'nb_jour_avant_recyclage', headerName: 'Jrs avant Recycl.', hide: true, flex: 1, minWidth: 100, },
{
/*{
field: "Detail", headerName: 'Voir détail', disableExport: true,
renderCell: (cellValues) => {
return (
@ -316,155 +344,427 @@ const DisplayPartnerStagiaires = (props) => {
);
}
},
},*/
/* {
field: 'Action', headerName: 'Action', hide: false, minWidth: 100, maxWidth: 150, flex: 1, disableExport: true,
renderCell: (cellValues) => {
return (
<>
{String(props.check_user_acces_right("stagiaire", "write")) === "1" && <nav>
{cellValues.row.status && String(cellValues.row.status) === "1" &&
<Popup
trigger={<Button
>
Annuler
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> annulée</font></i>. <br />
Il (le stagiaire) sera automatiquement <i><font color="red"> notifié par email de l'annulation de son inscription. </font></i> <br />
<br /> Motif du annulation : <br />
<textarea name='motif_refus' id="motif_refus" style={{ "width": "80%" }}
rows="3" maxlength="180" />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_refuse(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
}
{cellValues.row.status && String(cellValues.row.status) === "0" &&
<Popup
trigger={<Button
>
<FcApproval /> Valider inscr.
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera définitivement validée. <br />
Il (le stagiaire) sera automatiquement notifié par email de la validation de son inscription. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_accept(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
}
{cellValues.row.status && String(cellValues.row.status) === "-1" &&
<Popup
trigger={<Button
>
<FcDownload />
Réinscrire
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, le stagaire sera réinscrit à la meme session <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_accept(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
}
</nav>}
</>
)
}
},
{
field: "delete", headerName: 'Supprimer', disableExport: true,
renderCell: (cellValues) => {
return (
<>
{String(props.check_user_acces_right("stagiaire", "write")) === "1" &&
<Popup
trigger={<Button
onClick={(event) => {
handleClick_delete(event, cellValues);
}}
>
<CiTrash />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_delete(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>}
</>
);
}
},*/
{
field: 'Action', headerName: 'Action', hide: false, minWidth: 100, maxWidth: 150, flex: 1, disableExport: true,
field: 'bton_vertif', headerName: 'Gestion', minWidth: 50, flex: 1, maxWidth: 100, hideable: true, hide: false, editable: false, align: "center", disableExport: true,
renderCell: (cellValues) => {
return (
<>
{String(props.check_user_acces_right("stagiaire", "write")) === "1" && <nav>
{cellValues.row.status && String(cellValues.row.status) === "1" &&
<div>
{String(props.check_user_acces_right("session", "write")) === "1" && <nav style={{ width: '100%', 'textAlign': 'center' }}>
<IconButton
aria-label="more"
id="long-button2"
aria-controls={open ? 'long-menu_p2' : undefined}
aria-expanded={open ? 'true' : undefined}
aria-haspopup="true"
// onClick={handleClick_option_button_vertical}
onClick={(e) => {
<Popup
trigger={<Button
handleClick_option_button_vertical(e);
setworking_cellValues(cellValues);
// setsession_id_for_decalage(cellValues.row._id);
if (cellValues.row.date_debut) {
var local_date_du = new Date(moment(cellValues.row.date_debut, "DD/MM/YYYY HH:mm:ss"));
// setsession_debut_for_decalage(local_date_du);
//setsession_new_debut_for_decalage(local_date_du);
}
if (cellValues.row.date_fin) {
var local_date_au = new Date(moment(cellValues.row.date_fin, "DD/MM/YYYY HH:mm:ss"));
// setsession_fin_for_decalage(local_date_au);
}
}}
>
<MoreVertIcon />
</IconButton>
<Menu
id="long-menu_p2"
MenuListProps={{
'aria-labelledby': 'long-button2',
}}
anchorEl={anchorEl}
open={open}
onClose={handleClose_option_button_vertical}
slotProps={{
paper: {
style: {
maxHeight: ITEM_HEIGHT * 4.5,
width: '20ch',
boxShadow: "-3px 4px 0px -30px #000000",
borderRadius: '0px !important',
lineHeight: '3rem'
},
},
}}
>
{options_menu_vertical.map((option) => (
<MenuItem key={option}
onClick={(e) => {
//handleClose_option_button_vertical(e, option);
setselected_internal_url(working_cellValues.row.class_internal_url);
setp_detail_session_class_id(working_cellValues.row.session_id);
setp_detail_mail(working_cellValues.row.email);
setselected_id(working_cellValues.row._id);
setp_detail_session_class(working_cellValues.row.code_session);
submenu_detail_stagaire("");
setaddOneParticipant("");
setdisplay_detail_stagiaire("");
setAnchorEl(null);
setmenu_gestion_value(String(option));
if (option && String(option) === 'Valider Inscr.') {
setdialogOpen_supp(true);
}
else if (option && String(option) === 'Annuler Inscr.') {
setdialogOpen_supp(true);
}
else if (option && String(option) === 'PréInscrire') {
setdialogOpen_supp(true);
}
else if (option && String(option) === 'Supprimer') {
setdialogOpen_supp(true);
}
}}
>
Annuler
{option}
</MenuItem>
))}
</Menu>
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> définitivement annulée</font></i>. <br />
{/*** GESTION Dialog menu item pour suppression */}
{dialogOpen_supp && <Dialog
open={dialogOpen_supp}
className="displaypartnersession"
static
onClose={() => null}
PaperProps={{
className: classes.paper, // Apply the paper style
style: {
overflowY: 'unset',
// position: 'absolute',
top: '7rem',
border: '1px solid #F1F1F1',
margin: "2px",
boxShadow: "-3px 4px 0px -30px #000000",
},
}}
hideBackdrop={true}
disableScrollLock
classes={{
paper: classes.dialog
}}
PaperComponent={PaperComponent}
aria-labelledby="draggable-dialog-title"
>
<DialogContent className="DialogContent_width">
<div>
<button className="gest_close" onClick={Dialog_menuitem_close_supp}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
{String(menu_gestion_value) === "Supprimer" && <> En confirmant cette opération, l'inscription sera <i><font color="red"> définitivement supprimée</font></i>. <br /> </>}
{String(menu_gestion_value) === "PréInscrire" && <> En confirmant cette opération, l'apprenant sera <i><font color="red"> à nouveau PREINSCRIT </font></i>. <br /> </>}
{String(menu_gestion_value) === "Annuler Inscr." && <>
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> annulée</font></i>. <br />
Il (le stagiaire) sera automatiquement <i><font color="red"> notifié par email de l'annulation de son inscription. </font></i> <br />
<br /> Motif du annulation : <br />
<textarea name='motif_refus' id="motif_refus" style={{ "width": "80%" }}
rows="3" maxlength="180" />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_refuse(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
}
{cellValues.row.status && String(cellValues.row.status) === "0" &&
<Popup
trigger={<Button
>
<FcApproval /> Valider inscr.
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
<br /> </>}
{String(menu_gestion_value) === "Valider Inscr." && <>
En confirmant cette opération, l'inscription du stagiaire sera définitivement validée. <br />
Il (le stagiaire) sera automatiquement notifié par email de la validation de son inscription. <br />
Le stagiaire passera de l'onglet "préinscrit" vers l'onglet "inscription".<br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_accept(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>
}
{/*cellValues.row.status && String(cellValues.row.status) === "-1" &&
</>}
<Popup
trigger={<Button
>
<FcDownload />
Réinscrire
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, le stagaire sera réinscrit à la meme session <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_accept(event, cellValues);
//console.log('modal closed ');
close();
if (String(menu_gestion_value) === "Supprimer") {
Delete_LIST_Stagiaires(working_cellValues.row._id);
}
else if (String(menu_gestion_value) === "PréInscrire") {
Re_Preinscrire_Cancelled_Attendee();
}
else if (String(menu_gestion_value) === "Annuler Inscr.") {
handleClick_refuse(event, working_cellValues);
}
else if (String(menu_gestion_value) === "Valider Inscr.") {
handleClick_accept(event, working_cellValues);
}
Dialog_menuitem_close_supp();
}}> Valider </button>
</div>
@ -472,8 +772,8 @@ const DisplayPartnerStagiaires = (props) => {
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
console.log('modal closed ');
Dialog_menuitem_close_supp();
}}
>
Annuler
@ -481,85 +781,19 @@ const DisplayPartnerStagiaires = (props) => {
</div>
</div>
</div>
)}
</Popup>
*/ }
</DialogContent>
<DialogActions>
</DialogActions>
</Dialog>}
{/*** FIN GESTION Dialog menu item pour suppression*/}
</nav>}
</>
)
}
},
{
field: "delete", headerName: 'Supprimer', disableExport: true,
renderCell: (cellValues) => {
return (
<>
{String(props.check_user_acces_right("stagiaire", "write")) === "1" &&
<Popup
trigger={<Button
onClick={(event) => {
handleClick_delete(event, cellValues);
}}
>
<CiTrash />
</Button>}
modal
nested
position="center center"
>
{close => (
<div>
<button className="gest_close" onClick={close}>
&times;
</button>
<div className="gest_header"> MySy Information </div>
<div className="gest_content">
{' '}
En confirmant cette opération, l'inscription du stagiaire sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
handleClick_delete(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
}}
>
Annuler
</button>
</div>
</div>
</div>
)}
</Popup>}
</>
</div>
);
}
}
},
},
]
@ -4549,8 +4783,6 @@ const DisplayPartnerStagiaires = (props) => {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
if (p_detail_session_class.length <= 0) {
// alert(" Vous devez choisir une session");
setdisplay_alert_mysy("1");
@ -4589,7 +4821,7 @@ const DisplayPartnerStagiaires = (props) => {
// alert(" La mise à jour a été correctement faite.");
setdisplay_alert_mysy("1");
setalert_message(" La mise à jour a été correctement faite.");
setalert_type("error");
setalert_type("success");
//myRef_head.current.scrollIntoView({ behavior: "smooth" });
@ -12464,7 +12696,7 @@ const DisplayPartnerStagiaires = (props) => {
<div className="div_row" style={{ "border": "None" }}>
<div className="session_data" style={{ "minHeight": '15rem', "paddingLeft": "10px", "paddingRight": "10px" }}>
<div className="titre1"> Liste des évaluations</div>
Evaluation <br />

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
import './ENT_Student_Header.css';
import './ENT_Student_Header.css';
import moment from "moment";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";

File diff suppressed because it is too large Load Diff

View File

@ -62,7 +62,7 @@ import {
GridPreferencePanelsValue,
} from '@mui/x-data-grid';
//import { utils, writeFileXLSX } from "xlsx";
import { ContextMenu, ContextMenuTrigger } from "react-contextmenu";
import zIndex from "@material-ui/core/styles/zIndex";
@ -76,7 +76,7 @@ import Menu from '@mui/material/Menu';
const Intranet_Factures_Client = (props) => {
const { action, orderid } = useParams();
registerLocale('fr', fr);
registerLocale('fr', fr);
const history = useHistory();
const [submenu, setsubmenu] = useState("");
@ -131,8 +131,8 @@ registerLocale('fr', fr);
);
}
const options_menu_vertical = [
const options_menu_vertical = [
'',
'Télécharger',
];
@ -185,7 +185,7 @@ const options_menu_vertical = [
handleClick_option_button_vertical(e);
setselected_id(cellValues.row._id);
}}
>
@ -201,7 +201,7 @@ const options_menu_vertical = [
onClose={handleClose_option_button_vertical}
onClick={(e) => {
}}
slotProps={{
@ -222,7 +222,7 @@ const options_menu_vertical = [
onClick={(e) => {
if (option && String(option) === "Télécharger") {
print_invoice_pdf();
}
setAnchorEl(null);
@ -258,7 +258,7 @@ const options_menu_vertical = [
);
}
},*/
{/*
/* {
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
@ -317,8 +317,8 @@ const options_menu_vertical = [
);
}
*/
}
}*/
]
@ -1073,7 +1073,7 @@ const options_menu_vertical = [
if (String(res.data.status) === String("true")) {
//console.log(" In Getall_Parter_Invoice_No_Filter res.data.status = " + res.data.status);
//console.log(" In Getall_Parter_Invoice_No_Filter res.data.message r_class = " + res.data.message);
// console.log(" In Getall_Parter_Invoice_No_Filter res.data.total_data r_class = ", res.data.total_data);
// console.log(" In Getall_Parter_Invoice_No_Filter res.data.total_data r_class = ", res.data.total_data);
setGetall_Parter_Invoice_No_Filter_api("true");
setGetall_Parter_Invoice_No_Filter_result(res.data.message);
setRows(res.data.message);
@ -1139,7 +1139,7 @@ const options_menu_vertical = [
useEffect(() => {
// sethistory_securite_read(props.check_user_acces_right("historique", "read"))
// sethistory_securite_read(props.check_user_acces_right("historique", "read"))
Get_List_Partner_Clients();
@ -1153,7 +1153,7 @@ const options_menu_vertical = [
//console.log(" ~### mes facture props action, orderid = ", action, orderid);
} else {
Getall_Parter_Invoice_With_Filter_On_Client_Id(props.partner_client_id);
}
@ -2605,7 +2605,7 @@ const options_menu_vertical = [
function getExcelData(apiRef) {
// Select rows and columns
const filteredSortedRowIds = gridFilteredSortedRowIdsSelector(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__" );
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__");
// Format the data. Here we only keep the value
const data = filteredSortedRowIds.map((id) => {
@ -2630,7 +2630,7 @@ const options_menu_vertical = [
function handleExport(apiRef, data_colums) {
const data = getExcelData(apiRef);
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__" );
const visibleColumnsField = gridVisibleColumnFieldsSelector(apiRef).filter((data) => (data) !== "__check__");
const local_config = {
@ -2812,7 +2812,7 @@ const options_menu_vertical = [
className="partner_commande"
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Détail ligne Facture <font style={{ fontWeight: "700" }}> {String(invoice_internal_ref)} </font> </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Détail ligne Facture <font style={{ fontWeight: "700" }}> {String(invoice_internal_ref)} </font> </DialogTitle>
<DialogContent>
@ -3026,7 +3026,7 @@ const options_menu_vertical = [
static
onClose={() => null} >
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<div>
@ -3075,7 +3075,7 @@ const options_menu_vertical = [
static
onClose={() => null} >
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> MySy Information</DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "20rem" }}>
<DialogContentText>
Envoi Facture par email
@ -3188,7 +3188,7 @@ const options_menu_vertical = [
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Paiement </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Paiement </DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
{Dialog_Paiement_1_message}
@ -3326,7 +3326,7 @@ const options_menu_vertical = [
>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily:'DM Sans'}} id="draggable-dialog-title"> Annotation </DialogTitle>
<DialogTitle style={{ cursor: 'move', background: '#fff', fontFamily: 'DM Sans' }} id="draggable-dialog-title"> Annotation </DialogTitle>
<DialogContent className="DialogContent_width" style={{ "minHeight": "15rem" }}>
<DialogContentText>
{Dialog_annotation_1_message}
@ -3395,7 +3395,7 @@ const options_menu_vertical = [
{/******** FIN Menu Clique Droit test */}
<h3 style={{ fontFamily:'DM Sans' }}> Mes Factures </h3>
<h3 style={{ fontFamily: 'DM Sans' }}> Mes Factures </h3>
<div className="div_row">
<div className="titre1"> Utilisez les filtres !</div>
<div className="div_row" style={{ "marginBottom": "5px" }}>
@ -4493,13 +4493,13 @@ const options_menu_vertical = [
<div className="div_row"> &nbsp; </div>
<div className="div_row"> &nbsp; </div>
</div>
</div>}
@ -4660,7 +4660,7 @@ const options_menu_vertical = [
<div className="div_row" style={{ "border": "None" }}>
</div>

View File

@ -126,7 +126,7 @@ function Module_Connexion_Ent_Student() {
Logout_User();
}
fetch(
url_login,
{

View File

@ -84,7 +84,7 @@ function Module_Connexion_Intranet_Client() {
var partner_connexion = "";
var url_login = "";
url_login = process.env.REACT_APP_API_URL + "myclass/api/login/";
url_login = process.env.REACT_APP_API_URL + "myclass/api/login_intranet_client/";
setmenucompte("user");
partner_connexion = "user";
@ -133,12 +133,13 @@ function Module_Connexion_Intranet_Client() {
}
).then((response) => response.json())
.then((result) => {
//console.log('Success:', result['message'], "result['status'] = ", result['status']);
console.log('Success:', result['message'], "result['status'] = ", result['status'], "_id : ", result['_id']);
var val = result['status'];
if (String(val) === String("true")) {
setCookie("tokenmysych", result['message']);
setCookie("tokenmysychclient", result['_id']);
// Verification vers quelle page les renvoyer
if (obj === "training" && String(objid).length > 0) {
@ -382,7 +383,7 @@ function Module_Connexion_Intranet_Client() {
<div style={{ width: '100%', }}>
<div style={{ width: '50%', float: 'left' }}>
<img src={client_intranet} style={{ height: '100%', marginTop:'5rem' }} />
<img src={client_intranet} style={{ height: '100%', marginTop: '5rem' }} />
</div>
<div style={{ width: '50%', float: 'left', paddingTop: '2rem' }}>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,493 @@
import React, { useState, useEffect } from 'react';
//import { slide as Menu } from "react-burger-menu";
import { NavLink } from "react-router-dom";
import { getCookie } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';
import Button from '@mui/material/Button';
import { confirmAlert } from 'react-confirm-alert'; // Import
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import { useCookies } from "react-cookie";
import { Helmet } from "react-helmet";
import logowhite from "../mysy_img/MYSY-LOGO-WHITE.png";
import connect_white from "../mysy_img/connect_white_v2.png";
import MenuItem from "@material-ui/core/MenuItem";
import Menu from "@material-ui/core/Menu";
import connect_green from "../mysy_img/connect_green.png";
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 { format } from 'date-fns'
import moment from "moment";
import SendIcon from '@mui/icons-material/Send';
import axios from "axios";
import mysy_logo2 from "../mysy_img2/Logo_MySy.png"
import New_C_Header_Intranet_Client_2025_V2 from "./header_automatic_files/Header_Client_Intranet";
const New_ButtonHilight_Intrnaet_Client_2025 = () => {
const history = useHistory();
const [show, setShow] = useState(true);
const [lastScrollY, setLastScrollY] = useState(0);
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart']);
const [country_code, setcountry_code] = useState("FR");
const [country_name, setcountry_name] = useState("France");
const [city, setcity] = useState("Paris");
const [postal, setpostal] = useState("75001");
const [latitude, setlatitude] = useState("48.861000061035156");
const [longitude, setlongitude] = useState("2.3380000591278076");
const [IPv4, setIPv4] = useState("172.71.122.128");
const [state, setstate] = useState("France");
const [userIp, setuserIp] = useState("172.71.122.128");
const controlNavbar = () => {
if (typeof window !== 'undefined') {
if (window.scrollY > lastScrollY && window.scrollY > 100) {
setShow(false);
} else if (window.scrollY < lastScrollY && window.scrollY < 100) { // if scroll up show the navbar
setShow(true);
}
// remember current page location to use in the next move
setLastScrollY(window.scrollY);
}
};
const [userconnected, setuserconnected] = useState("0");
const [someoneconnected, setsomeoneconnected] = useState("0");
const [partnerconnected, setpartnerconnected] = useState("0");
var stored_user = getCookie('tokenmysych');
var stored_part = getCookie('tokenmysypart');
function whosisconnected() {
stored_user = getCookie('tokenmysych');
stored_part = getCookie('tokenmysypart');
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
setsomeoneconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
// alert(" partner connected OK");
}
}
useEffect(() => {
var local_user_connect = 0;
var local_part_connect = 0;
if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
setuserconnected("0");
local_user_connect = 0;
} else {
setuserconnected("1");
setsomeoneconnected("1");
local_user_connect = 1;
//alert(" user connected OK");
}
if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
setpartnerconnected("0");
local_part_connect = 0;
} else {
setpartnerconnected("1");
setsomeoneconnected("1");
local_part_connect = 1;
//alert(" partner connected OK");
}
if (typeof window !== 'undefined') {
window.addEventListener('scroll', controlNavbar);
// cleanup function
return () => {
window.removeEventListener('scroll', controlNavbar);
};
}
}, [lastScrollY]);
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
const [AvisMenu, setavisMenu] = React.useState(null);
const PartnerMenu_Close = () => {
setPartnerMenu(null);
};
const AccountMenu_Close = () => {
setAccountMenu(null);
};
const ProduitMenu_Close = () => {
setproduitMenu(null);
};
const handlePartnerMenu = (event) => {
setPartnerMenu(event.currentTarget);
};
const handleAccountMenu = (event) => {
setAccountMenu(event.currentTarget);
};
const handleProduitMenu = (event) => {
setproduitMenu(event.currentTarget);
};
const handleQuisommesNousMenu = (event) => {
history.push("/qui-sommes-nous")
};
const handleClose_Account = () => {
alert(" my account");
setAccountMenu(null);
};
const handleAccountConnexion = () => {
setAccountMenu(null);
history.push("/Connexion")
};
const handleMyAccount = () => {
setAccountMenu(null);
history.push("/mysy-user-account")
};
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/create_account")
};
const handlePartnerConnexion = () => {
setAccountMenu(null);
history.push("/PartnerLogin")
};
const handleProduitService = () => {
setproduitMenu(null);
history.push("/tarifs_produits_services/")
};
const handleAvis = () => {
setavisMenu(null);
history.push("/Recherche-Article-formation")
};
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_user) != "undefined") {
const stored_cookie = getCookie('tokenmysych');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysych", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
removeCookie("tokenmysych", { path: '/' });
}
history.push("/ent_student");
}
function user_logout() {
confirmAlert({
title: '',
message: 'Confirmez la deconnexion (user)',
buttons: [
{
label: 'Oui',
onClick: () => user_logout_confirmation()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
function part_logout_confirmation() {
/* si c'est une connexion partner qui est active */
if (typeof (stored_part) != "undefined") {
const stored_cookie = getCookie('tokenmysypart');
var acces_right_token_name = stored_cookie + "_uar";
setpartCookie("tokenmysypart", "", { path: '/' });
setpartCookie(acces_right_token_name, "", { path: '/' });
removeCookie(acces_right_token_name, { path: '/' });
setpartCookie("mysy_session_display_view", "", { path: '/' });
setpartCookie("mysy_menu_gauche_reduit", "", { path: '/' });
setpartCookie("mysy_catalog_data_row_grouped_by", "", { path: '/' });
removeCookie("tokenmysypart", { path: '/' });
removeCookie("mysy_session_display_view", { path: '/' });
removeCookie("mysy_menu_gauche_reduit", { path: '/' });
removeCookie("mysy_catalog_data_row_grouped_by", { path: '/' });
}
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
function part_logout() {
confirmAlert({
title: '',
message: 'Confirmez la deconnexion (pro)',
buttons: [
{
label: 'Oui',
onClick: () => part_logout_confirmation()
},
{
label: 'Non',
onClick: () => { return }
}
]
});
}
function handleAccountLogout() {
if (String(userconnected) === String("1")) {
user_logout();
}
else if (String(partnerconnected) === String("1")) {
part_logout();
}
}
const [CategorieMenu, setCategorieMenu] = React.useState(null);
const CategorieMenu_Close = () => {
setCategorieMenu(null);
};
const handleCategorieMenu = (event) => {
setCategorieMenu(event.currentTarget);
};
const handleMarketplace = (event) => {
history.push("/recherche-formation")
};
const handleClassCategorie = (e) => {
setCategorieMenu(null);
const pieces = window.location.href.split("/")
const last = pieces[pieces.length - 1]
var mymetier = "";
mymetier = e.target.id
if (last === mymetier) {
//console.log(" ## RELAOD");
window.location.reload(true);
} else {
history.push("/Recherche_new_v2/0/" + mymetier);
}
};
function publiecatalogue() {
history.push("/Partner", { mysy_arg: 'partner' });
}
function resserver_demo() {
history.push("/Partner", { mysy_arg: 'partner' });
}
const handleBlogMenu = (event) => {
history.push("/Recherche-Article-formation")
};
const [Dialog_1_message, setDialog_1_message] = React.useState(false);
const [Dialog_1_open, setDialog_1_open] = React.useState(false);
function Dialog_1_handle_change_participant_session(message) {
setDialog_1_message(message);
setDialog_1_open(true);
}
const Dialog_1_handleClose = () => {
//alert(" Utiliser le bouton 'fermer' ");
//setOpen(false);
};
const Dialog_1_handleClose_buton = () => {
setDialog_1_open(false);
};
const [Dialog_contact_message, setDialog_contact_message] = React.useState(false);
const [Dialog_contact_open, setDialog_contact_open] = React.useState(false);
function Dialog_contact_handle_change_participant_session(message) {
setDialog_contact_message(message);
setDialog_contact_open(true);
}
const Dialog_contact_handleClose = () => {
};
const Dialog_contact_handleClose_buton = () => {
setDialog_contact_open(false);
clear_contact_message_fields();
};
function clear_contact_message_fields() {
setcontact_message_nom_prenom("");
setcontact_message_email("");
setcontact_message_phone("");
setcontact_message_sujet("");
setcontact_message_sujet("");
setcontact_message_message("");
}
const [contact_message_nom_prenom, setcontact_message_nom_prenom] = React.useState("");
const [contact_message_email, setcontact_message_email] = React.useState("");
const [contact_message_phone, setcontact_message_phone] = React.useState("");
const [contact_message_sujet, setcontact_message_sujet] = React.useState("");
const [contact_message_message, setcontact_message_message] = React.useState("");
function Send_Contact_Message(e) {
var sender_mail = "";
var sender_tel = "";
var token = "";
////console.log("contacter " + sender_mail + " - " + sender_tel + " - ")
var mysubject = contact_message_sujet;
var mymessage = contact_message_message;
var mysender_name = contact_message_nom_prenom;
var mysender_email = contact_message_email;
//alert("contacter "+mysender_email+" - "+mymessage+" - url = "
//+process.env.REACT_APP_API_URL+" - user_ip ="+IPv4+" - "+latitude);
var re = /\S+@\S+\.\S+/;
if (re.test(mysender_email) == false) {
alert("l'email est incorrecte");
return;
}
var myurl = process.env.REACT_APP_API_URL + "myclass/api/add_user_message/";
var form = new FormData();
form.append("type", "email");
form.append("recever_mail", "contact@mysy-training.com");
form.append("recever_tel", "+33769203945");
form.append("sender_mail", mysender_email);
form.append("sender_tel", sender_tel);
form.append("object", mysubject);
form.append("message", mymessage);
form.append("sender_name", mysender_name);
form.append("token", "");
form.append("user_ip", IPv4);
form.append("user_country_code", country_code);
form.append("user_country_name", country_name);
form.append("user_city", city);
form.append("user_postal", postal);
form.append("user_latitude", latitude);
form.append("user_longitude", longitude);
form.append("user_state", state);
// console.log("## form = ", form);
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("false")) {
alert(res.data.message);
}
else if (String(res.data.status) === String("true")) {
Dialog_contact_handleClose_buton();
alert(res.data.message);
}
else {
}
}).catch((error) => {
console.warn('contact-nous Not good man :( mysearchtext = ');
})
}
return (
<div className='new_buttonhilight_2025'>
<div className={`mini_entete ${show && 'hidden'}`} >
<New_C_Header_Intranet_Client_2025_V2 />
</div>
</div>
);
}
export default New_ButtonHilight_Intrnaet_Client_2025;

View File

@ -7,7 +7,7 @@ import New_Sidebar_ENT_Student_2025 from "./New_Sidebar_ENT_Student_2025";
import { useCookies } from "react-cookie";
import New_ButtonHilight_ENT_Student_2025 from "./New_ButtonHilight_ENT_Student_2025";
const New_Navigation_ENT_Student_2025 = () => {
const New_Navigation_ENT_Student_2025 = () => {
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);

View File

@ -0,0 +1,33 @@
import React from 'react';
import { getCookie, } from 'react-use-cookie';
import { useHistory } from "react-router-dom";
import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
import New_Sidebar_Client_Intranet_2025 from "./New_Sidebar_Client_Intranet_2025";
import { useCookies } from "react-cookie";
import New_ButtonHilight_Intranet_Client_2025 from "./New_ButtonHilight_Intranet_Client_2025";
const New_Navigation_Intranet_Client_2025 = () => {
const history = useHistory();
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych']);
const [cookie_part, setCookie_part, removeCookie_part] = useCookies(['tokenmysypart']);
return (
<div className={"navigation"}>
<div className="test_page">
<div className="bm-burger-button_label">
</div>
<New_Sidebar_Client_Intranet_2025 />
<New_ButtonHilight_Intranet_Client_2025 />
</div>
</div>
)
}
export default New_Navigation_Intranet_Client_2025;

View File

@ -35,7 +35,7 @@ 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'
import { useParams } from 'react-router-dom';
function Student_Account_Ent() {
@ -543,7 +543,7 @@ function Student_Account_Ent() {
</Stack>
))}
</div>
</div>
<div style={{ width: '69%', float: 'right' }}>
@ -573,16 +573,12 @@ function Student_Account_Ent() {
{String(menu) === String("mes_emails") &&
<Module_Ent_Internal_Email_Management
formation_initiale={"1"}
apprenant_id={apprenant_id}
conntected_account_id={connected_user_data._id}
/>
}

View File

@ -117,7 +117,6 @@ function UpdateUserInfo(props) {
var mylocaltraining = JSON.parse(res.data.message);
if (mylocaltraining) {
console.log(" #### mylocaltraining === ", mylocaltraining)
if (mylocaltraining.adr_city) {
document.getElementsByName("adr_city")[0].value = mylocaltraining.adr_city;

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,7 @@ import Paper from '@material-ui/core/Paper';
import Draggable from 'react-draggable';
import { IconButton } from '@material-ui/core';
function PaperComponent(props) {
return (
<Draggable

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";
@ -40,7 +43,7 @@ const useStyles = makeStyles((theme) => ({
// left: 10,
top: 400
},
paper: {
overflowY: 'unset',
},
@ -53,6 +56,29 @@ 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_Client_Intranet = () => {
const history = useHistory();
const classes = useStyles();
@ -61,16 +87,24 @@ const Header_Client_Intranet = () => {
const [partnerconnected, setpartnerconnected] = useState("0");
const stored_user = getCookie('tokenmysych');
const stored_part = getCookie('tokenmysypart');
const stored_client_id = getCookie('tokenmysychclient');
const [cookie, setCookie, removeCookie] = useCookies(['tokenmysych'], { path: '/' });
const [partcookie, setpartCookie, removepartCookie] = useCookies(['tokenmysypart'], { path: '/' });
const [PartnerMenu, setPartnerMenu] = React.useState(null);
const [AccountMenu, setAccountMenu] = React.useState(null);
const [ProduitMenu, setproduitMenu] = React.useState(null);
const [nb_undread_mail, setnb_undread_mail] = React.useState("0");
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;
@ -93,6 +127,40 @@ const Header_Client_Intranet = () => {
}, []);
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("")
})
}
const handleAccountCreation = () => {
setAccountMenu(null);
history.push("/signup/")
@ -160,7 +228,7 @@ const Header_Client_Intranet = () => {
setsomeoneconnected("0");
setDialog_1_open(false);
history.push("/recherche-formation");
}
}
function user_logout_confirmation() {
/* si c'est une connexion partner qui est active */
@ -211,7 +279,7 @@ const Header_Client_Intranet = () => {
aria-labelledby="draggable-dialog-title"
>
<DialogTitle style={{ cursor: 'move', fontFamily:"DM Sans"}} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContentText>
Confirmez la deconnexion <br />
@ -274,30 +342,26 @@ const Header_Client_Intranet = () => {
// window.open("/tarif/#debut", "_self");
}}>Tarifs </nav>
</a>
{/* <a href="/Recherche-Article-formation" className="menu-link">Blog</a>*/}
<div className="separator"></div>
<a href="/marketplace" className="menu-link">Marketplace</a>
</nav>
</div>
<div className="cta-login">
<div className="cta-buttons">
<button className="btn btn-primary" onClick={(e) => {
e.preventDefault();
var date2 = new Date();
const format2 = "YYYY-MM";
var dateTime2 = moment(date2).format(format2);
window.open(
"https://calendly.com/mysytraining/demo-mysy-training-solution?month=" + String(dateTime2),
'_blank'
);
}}>Réserver une démo</button>
{connected_user_data && connected_user_data.nom && <div className="logo-menu">
<nav className="menu-link">
Bonjour &nbsp;{connected_user_data.nom.toUpperCase()} - Intranet
</nav>
</div>}
<div className="cta-login">
</div>
<div className="cta-buttons hide_on_mobile">
{String(someoneconnected) !== String("1") && <button className="btn btn-secondary" onClick={handleAccountCreation}>Créer un compte</button>}
{String(someoneconnected) === String("1") && <button className="btn btn-secondary" onClick={handleAccountConnexion_v2}>Mon compte</button>}
{String(someoneconnected) === String("1") &&
<a href={"/mysy-user-account/" + `${stored_client_id}` + "/affichage"} className="btn btn-secondary">Mon compte</a>
}
</div>
<div className="separator hide_on_mobile"></div>

View File

@ -373,7 +373,7 @@ const Header_ENT_Student = () => {
{/*** Fin GESTION Deconnexion */}
<header className="header_new_2025">
<div className="header-content">
<div className="header-content">
<div className="logo-menu">
<img src={Header_MySy_Logo} alt="Logo MySy" className="logo" style={{ cursor: 'pointer' }} onClick={(e) => {
// e.preventDefault();

View File

@ -5,7 +5,7 @@ import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automat
import New_Navigation_2025 from "../components/New_Navigation_2025";
const account = () => {
return (
<div>

View File

@ -0,0 +1,21 @@
import Navigation from "../components/Navigation";
import Account from "./../components/Account";
import Intranet_Client_New_C_Header_2025_V2 from "../components/header_automatic_files/Header_Client_Intranet";
import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automatic_files/Layout_Without_Testimony";
import New_Navigation_Intranet_Client_2025 from "../components/New_Navigation_Intranet_Client_2025";
const intranet_client_account = () => {
return (
<div>
<New_Navigation_Intranet_Client_2025 />
<Intranet_Client_New_C_Header_2025_V2 />
<Account />
<New_C_Footer_Without_Testimony_2025_V2 />
</div>
)
}
export default intranet_client_account;

View File

@ -3,7 +3,7 @@ import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automat
import New_Navigation_ENT_Student_2025 from "../components/New_Navigation_ENT_Student_2025";
import Student_Account_Ent from "../components/Student_Account_Ent";
const student_account_ent = () => {
return (
<div>
<New_Navigation_ENT_Student_2025 />