From ec05e93ddbb53d499ba49465d2e4e1e1fca6131b Mon Sep 17 00:00:00 2001 From: Cherif Date: Mon, 15 Dec 2025 13:33:33 +0100 Subject: [PATCH] 15/12/25 - 13h --- src/App.js | 9 +- src/components/Account.js | 60 +- src/components/DisplayPartnerStagiaires.js | 660 +- .../ENT_Student_Header.jsx | 2 +- src/components/Intranet_Commande_Devis.js | 8380 +++++++++++++++++ src/components/Intranet_Factures_Client.js | 48 +- .../Module_Connexion_Ent_Student.js | 2 +- .../Module_Connexion_Intranet_Client.js | 7 +- ...tranet_Client_Internal_Email_Management.js | 2730 ++++++ .../New_ButtonHilight_Intranet_Client_2025.js | 493 + .../New_Navigation_ENT_Student_2025.js | 2 +- .../New_Navigation_Intranet_Client_2025.js | 33 + src/components/Student_Account_Ent.js | 8 +- src/components/UpdateUserInfo.js | 1 - .../UpdateUserInfo_Intranet_Client.js | 1058 +++ .../header_automatic_files/Header.jsx | 2 +- .../Header_Client_Intranet.jsx | 104 +- .../Header_ENT_Student.jsx | 2 +- src/pages/account.js | 2 +- src/pages/intranet_client_account.js | 21 + src/pages/student_account_ent.js | 2 +- 21 files changed, 13331 insertions(+), 295 deletions(-) create mode 100644 src/components/Intranet_Commande_Devis.js create mode 100644 src/components/Module_Intranet_Client_Internal_Email_Management.js create mode 100644 src/components/New_ButtonHilight_Intranet_Client_2025.js create mode 100644 src/components/New_Navigation_Intranet_Client_2025.js create mode 100644 src/components/UpdateUserInfo_Intranet_Client.js create mode 100644 src/pages/intranet_client_account.js diff --git a/src/App.js b/src/App.js index 8790019..03672fe 100644 --- a/src/App.js +++ b/src/App.js @@ -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() { - + - + + {/* Fin Migration */} diff --git a/src/components/Account.js b/src/components/Account.js index ad983b1..88d4d8d 100644 --- a/src/components/Account.js +++ b/src/components/Account.js @@ -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() {

É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 l’audit 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é

- +
@@ -398,7 +420,7 @@ function Account() { {isSelected &&
} - +
{username && {username} } {!username && xxxx }
@@ -481,12 +503,23 @@ function Account() { {result}
} - + {String(menu) === String("mes_factures") && connected_user_data && connected_user_data.partner_owner_recid && connected_user_data.partner_client_id && } + + {String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid && + connected_user_data.partner_client_id && + } - - {String(menu) === String("mes_devis") && connected_user_data && connected_user_data.partner_owner_recid && - connected_user_data.partner_client_id && - } + + {String(menu) === String("mes_conventions") && connected_user_data && connected_user_data.partner_owner_recid && connected_user_data.partner_client_id && } + {String(menu) === String("affichage") && } + - + diff --git a/src/components/DisplayPartnerStagiaires.js b/src/components/DisplayPartnerStagiaires.js index b2a78da..32e812d 100644 --- a/src/components/DisplayPartnerStagiaires.js +++ b/src/components/DisplayPartnerStagiaires.js @@ -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" &&