22/07/2023 - 17h

recette2
cherif 2023-07-22 17:42:38 +02:00
parent 3536892d6a
commit b0db0b0b5f
8 changed files with 1817 additions and 89 deletions

View File

@ -11,7 +11,7 @@ import { Alert } from "@mui/material";
import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai";
import profileimg from "../mysy_img/MYSY-profil-2.png";
import Abonnement from "./Abonnement";
import { PropaneSharp } from "@mui/icons-material";
import { PropaneSharp, ResetTvRounded } from "@mui/icons-material";
import { useHistory } from "react-router-dom";
import CheckOut from "./CheckOut";
@ -167,7 +167,7 @@ const AddClassManual = (props) => {
value: 'heure',
label: 'Heures',
},
{
value: 'jour',
label: 'Jours',
@ -305,9 +305,9 @@ const AddClassManual = (props) => {
setdatamodification("0");
window.scrollTo({
top: 0,
behavior: "smooth",
});
top: 0,
behavior: "smooth",
});
}, [props.mytrainingclass['ref'],]);
@ -347,7 +347,7 @@ const AddClassManual = (props) => {
var myurl = process.env.REACT_APP_API_URL + "myclass/api/get_partner_class/";
axios.post(myurl, form).then(res => {
if (res.data.status != "False") {
if (String(res.data.status) === String("true")) {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message r_class = " + res.data.message);
setmyApiResponse("True");
@ -631,7 +631,7 @@ const AddClassManual = (props) => {
plus_produit = editorRef_plus_produit.current.getContent();
}
// Verification si il y a plus de 3 mot clés separés par des ";"
mots_cle = mots_cle.replace(/(<([^>]+)>)/ig, '');
@ -925,7 +925,8 @@ const AddClassManual = (props) => {
else if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']);
history.push("/Connexion");
}
return;
}
else {
setisimgclassdeleted("0");
@ -1101,9 +1102,9 @@ const AddClassManual = (props) => {
setdatamodification("0");
window.scrollTo({
top: 0,
behavior: "smooth",
});
top: 0,
behavior: "smooth",
});
}
@ -1190,7 +1191,7 @@ const AddClassManual = (props) => {
}}
disabled={false}
className="disabled_style"
/>
</div>
@ -1424,30 +1425,30 @@ const AddClassManual = (props) => {
</div>
<Tooltip id="my-tooltip11" />
<a data-tooltip-id="my-tooltip11" data-tooltip-content="Les durée autorisées sont : 'heure', 'jour', 'semaine', 'mois', 'annee', 'rythme participant'">
<div className="training_caract">
<TextField
name="duration_unit"
id="duration_unit"
select
label="Unité de durée"
value={mytrainingdurationunit}
InputLabelProps={{
shrink: true,
}}
onChange={handleChangeDurationUnit}
disabled={false}
className="disabled_style"
>
{duration_unit_list.map((option) => (
<MenuItem key={option.value} value={option.value} >
{option.label} &nbsp; <br />
</MenuItem>
))}
</TextField>
</div>
</a>
<div className="training_caract">
<TextField
name="duration_unit"
id="duration_unit"
select
label="Unité de durée"
value={mytrainingdurationunit}
InputLabelProps={{
shrink: true,
}}
onChange={handleChangeDurationUnit}
disabled={false}
className="disabled_style"
>
{duration_unit_list.map((option) => (
<MenuItem key={option.value} value={option.value} >
{option.label} &nbsp; <br />
</MenuItem>
))}
</TextField>
</div>
</a>
<div className="training_caract">
<TextField
@ -1868,7 +1869,7 @@ const AddClassManual = (props) => {
</nav>
{/* <nav className="new_zone">
{/* <nav className="new_zone">
<TextField
name="zone_diffusion"
label="Zone Diffusion (FR-Marseille;FR-Paris;etc)"
@ -1910,7 +1911,7 @@ const AddClassManual = (props) => {
{String(props.currentpack).toLocaleLowerCase() === String("standard") &&
<div >
{/* <nav className="new_zone2">
{/* <nav className="new_zone2">
<TextField
name="zone_diffusion"
label="Zone Diffusion (FR-Marseille;FR-Paris;etc)"

File diff suppressed because it is too large Load Diff

View File

@ -31,6 +31,7 @@ import CheckOut from "./CheckOut";
import { IoCheckmarkCircleSharp } from "react-icons/io5";
import { FaHandPointRight } from "react-icons/fa";
import OrderConfirmation from "./OrderConfirmation";
import Partner_Client from "./Partner_Client";
import Pricing from "./Pricing";
import {
FcHome, FcButtingIn, FcDepartment, FcBullish, FcAddDatabase, FcFolder,
@ -135,7 +136,7 @@ const Partner = (props) => {
formData.append("token", stored_cookie);
//console.log("token = " + stored_cookie); theme_name
fetch(
@ -153,7 +154,7 @@ const Partner = (props) => {
setapiexcelimportmessage(result['status']);
if (String(result['status']) === String("true")) {
sethandleSubmission_api("true");
}else if (String(result['status']) === String("Err_Connexion")) {
} else if (String(result['status']) === String("Err_Connexion")) {
alert('Erreur: ' + result['message']);
history.push("/Connexion");
}
@ -291,6 +292,25 @@ const Partner = (props) => {
setformation_file_name();
}
function mes_clients_func(event) {
setmenu("mes_clients");
setapiexcelimportmessage();
setformation_file_name();
}
function mes_devis_func(event) {
setmenu("mes_devis");
setapiexcelimportmessage();
setformation_file_name();
}
function mes_cmd_func(event) {
setmenu("mes_cmd");
setapiexcelimportmessage();
setformation_file_name();
}
function DiplaytrainingList(event) {
setmenu("affichage");
@ -568,7 +588,7 @@ const Partner = (props) => {
my_lms_url = (JSON.parse(res.data.message).lms_virtualhost_url) + "user_portal.php?recid=" + encodeURIComponent(JSON.parse(res.data.message).lms_part_recid) +
"&mysytoken=" + encodeURIComponent(JSON.parse(res.data.message).lms_pwd_mask);
console.log(" ### LMS url = ", my_lms_url);
//console.log(" ### LMS url = ", my_lms_url);
setpartner_lms_url(my_lms_url);
}
@ -595,6 +615,16 @@ const Partner = (props) => {
}
}
const [deplie_mes_clients, setdeplie_mes_clients] = useState();
function ftion_deplie_mes_clients() {
if (String(deplie_mes_clients) === "1") {
setdeplie_mes_clients();
} else {
setdeplie_mes_clients("1");
}
}
return (
@ -661,33 +691,65 @@ const Partner = (props) => {
<hr className="my_hr" />
<hr />
{String(deplie_hebergement) === "1" && <div className="sousmenu sousmenu" style={{"color":"white", "textAlign":"center"}} onClick={ftion_deplie_hebergement}>
Espace Hébergement <img src={downarrow} className="hebergement_icone"/>
{String(deplie_mes_clients) === "1" && <div className="sousmenu sousmenu" style={{ "color": "white", "textAlign": "center" }} onClick={ftion_deplie_mes_clients}>
Mes Clients <img src={downarrow} className="hebergement_icone" />
</div>}
<hr className="my_hr" />
{String(deplie_hebergement) !== "1" &&
<div className="nom_prenom sousmenu" style={{"color":"white", "textAlign":"center"}} >
<nav onClick={ftion_deplie_hebergement}> Espace Hébergement <img src={uparrow} className="hebergement_icone"/> </nav>
<hr className="my_hr" />
{String(has_partner_lms_url) === "1" && <div className="sousmenu" onClick={(e) => {
e.preventDefault();
window.open(
partner_lms_url,
'_blank'
);
}}>&nbsp;&nbsp;<FcVideoCall className="icone_menu" />&nbsp;MON HEBERGEMENT </div>}
{String(has_partner_lms_url) === "1" && <div>
{String(deplie_mes_clients) !== "1" &&
<div className="sousmenu" style={{ "color": "white", "textAlign": "center" }} >
<nav onClick={ftion_deplie_mes_clients}> Mes Clients <img src={uparrow} /> </nav>
<hr className="my_hr" />
{String(menu) !== "statistique" && <div className="sousmenu" onClick={DisplaySetUpLMS}>&nbsp;&nbsp;<FcSettings className="icone_menu" />&nbsp;CONFIGURATION</div>}
{String(menu) === "statistique" && <div className="sousmenu_hebergement_lms" onClick={DisplaySetUpLMS}> &nbsp;&nbsp; <FcSettings className="icone_menu" />&nbsp;CONFIGURATION</div>}
<div>
<hr className="my_hr" />
{String(menu) !== "mes_clients" && <div className="sousmenu" onClick={mes_clients_func}>&nbsp;&nbsp;<FcSettings className="icone_menu" />&nbsp;MES CLIENTS</div>}
{String(menu) === "mes_clients" && <div className="sousmenu_selected" onClick={mes_clients_func}> &nbsp;&nbsp; <FcSettings className="icone_menu" />&nbsp;MES CLIENTS</div>}
</div>
<div>
<hr className="my_hr" />
{String(menu) !== "mes_devis" && <div className="sousmenu" onClick={mes_devis_func}>&nbsp;&nbsp;<FcSettings className="icone_menu" />&nbsp;MES DEVIS</div>}
{String(menu) === "mes_devis" && <div className="sousmenu_selected" onClick={mes_devis_func}> &nbsp;&nbsp; <FcSettings className="icone_menu" />&nbsp;MES DEVIS</div>}
</div>
<div>
<hr className="my_hr" />
{String(menu) !== "mes_cmd" && <div className="sousmenu" onClick={mes_cmd_func}>&nbsp;&nbsp;<FcSettings className="icone_menu" />&nbsp;MES COMMANDES</div>}
{String(menu) === "mes_cmd" && <div className="sousmenu_selected" onClick={mes_cmd_func}> &nbsp;&nbsp; <FcSettings className="icone_menu" />&nbsp;MES COMMANDES</div>}
</div>
</div>}
<hr />
{String(deplie_hebergement) === "1" && <div className="sousmenu sousmenu" style={{ "color": "white", "textAlign": "center" }} onClick={ftion_deplie_hebergement}>
Espace Hébergement <img src={downarrow} className="hebergement_icone" />
</div>}
<hr className="my_hr" />
{String(deplie_hebergement) !== "1" &&
<div className="nom_prenom sousmenu" style={{ "color": "white", "textAlign": "center" }} >
<nav onClick={ftion_deplie_hebergement}> Espace Hébergement <img src={uparrow} className="hebergement_icone" /> </nav>
<hr className="my_hr" />
{String(has_partner_lms_url) === "1" && <div className="sousmenu" onClick={(e) => {
e.preventDefault();
window.open(
partner_lms_url,
'_blank'
);
}}>&nbsp;&nbsp;<FcVideoCall className="icone_menu" />&nbsp;MON HEBERGEMENT </div>}
{String(has_partner_lms_url) === "1" && <div>
<hr className="my_hr" />
{String(menu) !== "statistique" && <div className="sousmenu" onClick={DisplaySetUpLMS}>&nbsp;&nbsp;<FcSettings className="icone_menu" />&nbsp;CONFIGURATION</div>}
{String(menu) === "statistique" && <div className="sousmenu_hebergement_lms" onClick={DisplaySetUpLMS}> &nbsp;&nbsp; <FcSettings className="icone_menu" />&nbsp;CONFIGURATION</div>}
</div>}
</div>}
<hr className="my_hr" />
</div>
@ -919,6 +981,13 @@ const Partner = (props) => {
</div>
}
{String(menu) === "mes_clients" && <div className="div_droite">
<Partner_Client />
</div>
}
<div className="pieddepage">
<Footer />
</div>

View File

@ -37,15 +37,177 @@ import {
FcList, FcGraduationCap, FcMultipleDevices, FcCurrencyExchange,
FcMoneyTransfer, FcFeedback, FcKey, FcVideoCall, FcSettings
} from "react-icons/fc";
import { DataGrid, GridToolbar, frFR, GridCellParams } from '@mui/x-data-grid';
import { FcCancel, FcApproval, FcAcceptDatabase, FcPrint, FcDeleteDatabase } from "react-icons/fc";
import AddParnerClient from "./AddPartnerClient";
//import { FcHome} from "react-icons/fc";
const Partner_Client = (props) => {
const history = useHistory();
const [rows_list_clients, setrows_list_clients] = useState([]);
const [selectionModel, setSelectionModel] = React.useState([]);
const columns_clients = [
{ field: 'id', headerName: 'id', hide: true },
{ field: 'email', headerName: 'email', width: 100, hideable: false, flex: 1 },
{ field: 'nom', headerName: 'nom', width: 100, hide: false, editable: true },
{
field: "update", headerName: 'Modifier',
renderCell: (cellValues) => {
return (
<div style={{ "width": "45%", "float": "center" }} onClick={(event) => {
handleClick_modifier(event, cellValues);
}}>
<FcAcceptDatabase />
</div>
);
}
},
{
field: "delete", headerName: 'Supprimer',
renderCell: (cellValues) => {
return (
<div style={{ "width": "45%", "float": "center" }} onClick={(event) => {
handleClick_supprimer(event, cellValues);
}}>
<FcDeleteDatabase />
</div>
);
}
},
]
const [Edite_Client, setEdite_Client] = useState("");
const [Client_email, setClient_email] = useState("");
function handleClick_modifier(event, cellValues) {
var clientmail = String(cellValues.row.email);
setClient_email(clientmail);
setEdite_Client("1");
}
function handleClick_supprimer(event, cellValues) {
var clientmail = String(cellValues.row.email);
alert(" en cours de dev");
}
const [Get_List_Partner_Clients_api, setGet_List_Partner_Clients_api] = useState();
const [Get_List_Partner_Clients_message, setGet_List_Partner_Clients_message] = useState();
const [Get_List_Partner_Clients_result, setGet_List_Partner_Clients_result] = useState();
function Get_List_Partner_Clients(event) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Partner_List_Partner_Client/";
axios.post(myurl, form).then(res => {
console.log(" In Get_List_Partner_Clients res.data.status = " + res.data.status);
console.log(" In Get_List_Partner_Clients res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setGet_List_Partner_Clients_api("true");
setGet_List_Partner_Clients_result(res.data.message);
setrows_list_clients(res.data.message);
}
else if (String(res.data.status) === String("Err_Connexion")) {
alert('Erreur: ' + res.data.message);
history.push("/Connexion");
}
else {
setGet_List_Partner_Clients_api("false");
setGet_List_Partner_Clients_message(res.data.message);
}
}).catch((error) => {
console.warn('Not good man :( Get_List_Partner_Clients = ', error);
setGet_List_Partner_Clients_api("false");
//setmyApimyApiMessage("")
})
}
useEffect(() => {
//menu_info();
Get_List_Partner_Clients();
}, []);
return (
<div className="partner_client">
<div className="div_row">
{String(Edite_Client) === "1" && <div className="div_row">
<div className="titre1"> Detail client : {Client_email}</div>
<AddParnerClient client_mail={Client_email}/>
</div>}
<div className="titre1"> Liste des clients</div>
<div className="div_row">
<div style={{ height: 500, width: '100%' }}>
<DataGrid
checkboxSelection
onSelectionModelChange={(newSelectionModel) => {
setSelectionModel(newSelectionModel);
//console.log("ch selected--" + newSelectionModel);
}}
selectionModel={selectionModel}
localeText={frFR.components.MuiDataGrid.defaultProps.localeText}
rows={rows_list_clients.map((item, index) => (
{
id: index,
email: JSON.parse(item).email,
nom: JSON.parse(item).nom,
}
))}
columns={columns_clients}
pageSize={10}
className="datagridclass"
rowsPerPageOptions={[10]}
disableSelectionOnClick
components={{
Toolbar: GridToolbar,
}}
/>
<br />
<br />
{/* <Button variant="contained" onClick={GetAllClass_new}>Contained</Button>*/}
</div>
</div>
</div>
</div>
)

View File

@ -0,0 +1,178 @@
.add_partner_client {
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
@media only screen and (max-width: 600px) {}
@media only screen and (min-width: 601px) and (max-width: 991px) {}
@media only screen and (min-width: 992px) and (max-width: 1199px) {}
@media only screen and (min-width: 1200px) {
.div_row {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.titre1 {
font-family: "Quicksand", "Signika", sans-serif;
font-size: medium;
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
font-style: italic;
background-color: gray;
font-weight: normal;
float: left;
width: 100%;
}
.training_data {
float: left;
width: 100%;
box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 1px 10px 1px rgba(0, 0, 0, 0.5);
border-radius: 10px;
margin-top: 10px;
margin-bottom: 10px;
padding-top: 10px;
padding-bottom: 10px;
}
.training_caract {
width: 30%;
padding: 5px;
float: left;
}
.training_text {
width: 50%;
padding: 5px;
float: left;
height: 320px !important;
min-height: 320px !important;
max-height: 320px !important;
margin-bottom: 10px;
}
.titre_training_text {
font-size: small;
padding-left: 5px;
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input{
padding-left: 5px !important;
}
.css-1sumxir-MuiFormLabel-root-MuiInputLabel-root{
margin-left: 1px !important;
}
.disabled_style {
//background-color: #ECEFF1;
font-size: small !important;
color: black;
width: 90% !important;
height: 3rem !important;
margin: 5px !important;
}
.bton_suppr {
background: transparent;
color: red;
border-radius: 5rem;
font-size: small;
text-align: center;
height: 2.5rem;
width: 40%;
margin-left: 10px;
margin-right: 10px;
}
.bton_enreg {
border-radius: 5rem;
font-size: small;
background: #81BC3A !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_edit {
border-radius: 5rem;
font-size: small;
background: black !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: white;
margin-left: 10px;
margin-right: 10px;
}
.bton_annule {
border-radius: 5rem;
font-size: small;
background: lightgray !important;
text-align: right;
height: 2.5rem;
width: 40%;
color: black;
margin-left: 10px;
margin-right: 10px;
}
.detail_submenu {
background: #d8edfc;
border-radius: 15px;
margin-right: 1rem;
padding: 0.3rem;
margin-bottom: 0.5rem;
min-width: 10rem;
text-align: center;
border: 1px solid #9cf;
color: #3b3e40;
font-family: "verdana", "Quicksand", "Signika", sans-serif;
font-size: small;
letter-spacing: 0.1rem;
font-weight: normal;
}
}
}

View File

@ -1,28 +0,0 @@
.partner_client {
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
@media only screen and (max-width: 600px) {
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
}
@media only screen and (min-width: 1200px) {
}
}

View File

@ -0,0 +1,64 @@
.partner_client {
.okUpdateData {
font-size: small;
color: green;
font-style: italic;
}
.koUpdateData {
font-size: small;
color: red;
font-style: italic;
}
@media only screen and (max-width: 600px) {}
@media only screen and (min-width: 601px) and (max-width: 991px) {}
@media only screen and (min-width: 992px) and (max-width: 1199px) {}
@media only screen and (min-width: 1200px) {
.div_row {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 100%;
margin-bottom: 1rem;
border-radius: 1rem;
}
.div_row_gauche {
float: left;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.div_row_droite {
float: right;
//border:0px solid black;
border-width: 0.01rem;
width: 48%;
border-radius: 1rem;
}
.titre1 {
font-family: "Quicksand", "Signika", sans-serif;
font-size: medium;
text-align: center;
margin-bottom: 0.8rem;
color: white;
cursor: pointer;
font-style: italic;
background-color: gray;
font-weight: normal;
float: left;
width: 100%;
}
}
}

View File

@ -64,4 +64,5 @@
@import "./components/sedesabonner";
@import "./components/pricing";
@import "./components/hebergementlms";
@import "./components/partner_client";
@import "./components/addpartnerclient";
@import "./components/partnerclient";