-
+ {String(selected_class_inscription_direct) === "1" && }
+ {String(selected_class_inscription_direct) !== "1" && }
@@ -945,29 +1160,49 @@ export default function Module_Atelier_Catalogue(props) {
-
- mySY
-
-
-
+ {/*
Nos ateliers
Trouvez la formation qui vous correspond et inscrivez-vous à l’atelier de votre choix.
@@ -998,9 +1233,9 @@ export default function Module_Atelier_Catalogue(props) {
Les ateliers
-
+ */}
-
+ {/*
-
+ {/*
{filters.map((filter) => (
@@ -1025,25 +1260,37 @@ export default function Module_Atelier_Catalogue(props) {
Réinitialiser
-
-
+
* /}
+ */}
-
+ {/*
{props.formations.length} formations · {totalAteliers} ateliers ouverts
-
+
*/}
-
+ {atelier_selected_filter !== "1" &&
{props.formations.map((formation) => (
<>
- {formation.external_code && TAILLL = {JSON.parse(formation).external_code}}
+ >
+
+ ))}
+ }
+
+
+ {atelier_selected_filter === "1" &&
+ {Atelier_Filtre_Selectionne.map((formation) => (
+ <>
+
+
+
>
))}
-
+ }
+
@@ -1061,4 +1308,98 @@ const local_css = `
text-align: justify;
}
+.atelier-filter-nav {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 8px;
+ width: fit-content;
+ max-width: 100%;
+ overflow-x: auto;
+
+ background: #f2f6fb;
+ border: 1px solid #d8e3ea;
+ border-radius: 14px;
+}
+
+.atelier-filter-button {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+
+ min-height: 42px;
+ padding: 10px 16px;
+
+ border: 1px solid transparent;
+ border-radius: 10px;
+
+ background: transparent;
+ color: #526273;
+
+ font-family: "DM Sans", Arial, sans-serif;
+ font-size: 14px;
+ font-weight: 600;
+ white-space: nowrap;
+
+ cursor: pointer;
+
+ transition:
+ background-color 0.2s ease,
+ color 0.2s ease,
+ border-color 0.2s ease,
+ box-shadow 0.2s ease,
+ transform 0.2s ease;
+}
+
+.atelier-filter-button:hover {
+ background: #ffffff;
+ color: #104277;
+ border-color: #d8e3ea;
+ transform: translateY(-1px);
+}
+
+.atelier-filter-button.active {
+ background: #104277;
+ color: #ffffff;
+ border-color: #104277;
+
+ box-shadow:
+ 0 4px 12px rgba(16, 66, 119, 0.25),
+ 0 1px 3px rgba(16, 66, 119, 0.18);
+}
+
+.atelier-filter-button.active:hover {
+ background: #0c3764;
+ color: #ffffff;
+ border-color: #0c3764;
+}
+
+.atelier-filter-button:focus-visible {
+ outline: 3px solid rgba(16, 66, 119, 0.22);
+ outline-offset: 2px;
+}
+
+.atelier-filter-button svg {
+ flex-shrink: 0;
+}
+
+@media screen and (max-width: 700px) {
+ .atelier-filter-nav {
+ width: 100%;
+ padding: 6px;
+ gap: 6px;
+ }
+
+ .atelier-filter-button {
+ min-width: max-content;
+ padding: 9px 12px;
+ font-size: 13px;
+ }
+}
+
+.topbar{
+justify-content: right !important;
+}
+
`;
\ No newline at end of file
diff --git a/src/components/Module_Trombinoscope.js b/src/components/Module_Trombinoscope.js
new file mode 100644
index 0000000..b507c5d
--- /dev/null
+++ b/src/components/Module_Trombinoscope.js
@@ -0,0 +1,546 @@
+import React, { useRef, useState, useEffect, useMemo } from "react";
+import TextField from '@mui/material/TextField';
+import 'react-confirm-alert/src/react-confirm-alert.css'; // Import css
+import Button from '@mui/material/Button';
+import axios from "axios";
+import { getCookie, setCookie } from 'react-use-cookie';
+import { useHistory } from "react-router-dom";
+import { DataGrid, GridToolbar, frFR } from '@mui/x-data-grid';
+import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css";
+import 'react-tooltip/dist/react-tooltip.css'
+import Popup from 'reactjs-popup';
+import 'reactjs-popup/dist/index.css';
+
+import "react-datepicker/dist/react-datepicker.css";
+import 'moment/locale/fr';
+import Box from '@mui/material/Box';
+import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
+
+import { gridClasses } from '@mui/x-data-grid';
+import Link from '@mui/material/Link';
+import { PiDotsThree } from "react-icons/pi";
+
+import { CiTrash } from "react-icons/ci";
+import { IoAddCircleOutline } from "react-icons/io5";
+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 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 'react-tooltip/dist/react-tooltip.css'
+
+import TextareaAutosize from '@mui/material/TextareaAutosize';
+import Module_Alert_Confirmation from "./Module_Alert_Confirmation";
+import { FaComment } from "react-icons/fa6";
+
+import {
+ Bell,
+ BookOpen,
+ Building2,
+ Check,
+ CheckCircle2,
+ ChevronDown,
+ ChevronLeft,
+ ChevronRight,
+ ClipboardList,
+ FileText,
+ GraduationCap,
+ Grid2X2,
+ LayoutDashboard,
+ List,
+ Mail,
+ Menu,
+ MessageSquare,
+ Plus,
+ RefreshCw,
+ Search,
+ Settings,
+ SlidersHorizontal,
+ UserPlus,
+ Users,
+ X,
+ AlertCircle,
+ Clock3,
+} from "lucide-react";
+
+const useStyles = makeStyles((theme) => ({
+
+ dialog: {
+ position: 'absolute',
+ // left: 10,
+ top: 400
+ },
+
+ paper: {
+ overflowY: 'unset',
+ },
+ customizedButton: {
+ position: 'absolute',
+ left: '98%',
+ top: '-3%',
+ backgroundColor: 'lightgray',
+ color: 'gray',
+ },
+}));
+
+function PaperComponent(props) {
+ return (
+
+
+
+ );
+}
+
+
+
+const Module_Trombinoscope = (props) => {
+ const classes = useStyles();
+ const history = useHistory();
+ const [submenu, setsubmenu] = useState("");
+ const [rowss, setRows] = useState([]);
+
+ const [isLoading, setLoading] = useState();
+
+
+ const [display_alert_mysy, setdisplay_alert_mysy] = useState("");
+ const [alert_message, setalert_message] = useState("");
+ const [alert_type, setalert_type] = useState("");
+
+ function clear_alert_message() {
+ setalert_message("");
+ }
+ function clear_alert_type() {
+ setalert_type("");
+ }
+ function clear_display_alert_mysy() {
+ setdisplay_alert_mysy("");
+ }
+
+ const studentsData = [
+ {
+ id: 1,
+ prenom: "Chérif",
+ nom: "BALDE",
+ email: "cherif.balde@email.fr",
+ formation: "BTS MCO",
+ pcode_session: "Promo 2026",
+ group: "Groupe A",
+ company: "Orange France",
+ presence: 97,
+ average: 15.8,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "CB",
+ },
+ {
+ id: 2,
+ prenom: "Aïssata",
+ nom: "DIALLO",
+ email: "aissata.diallo@email.fr",
+ formation: "BTS NDRC",
+ pcode_session: "Promo 2026",
+ group: "Groupe B",
+ company: "Société Générale",
+ presence: 92,
+ average: 14.6,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "AD",
+ },
+ {
+ id: 3,
+ prenom: "Mamadou",
+ nom: "CAMARA",
+ email: "mamadou.camara@email.fr",
+ formation: "Bachelor RH",
+ pcode_session: "Promo 2026",
+ group: "Groupe A",
+ company: "BNP Paribas",
+ presence: 89,
+ average: 13.9,
+ dossier: "incomplet",
+ status: "preinscrit",
+ avatar: "MC",
+ },
+ {
+ id: 4,
+ prenom: "Fatoumata",
+ nom: "BARRY",
+ email: "fatou.barry@email.fr",
+ formation: "Licence CG",
+ pcode_session: "Promo 2026",
+ group: "Groupe C",
+ company: "Carrefour",
+ presence: 99,
+ average: 16.2,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "FB",
+ },
+ {
+ id: 5,
+ prenom: "Ibrahima",
+ nom: "SYLLA",
+ email: "ibrahima.sylla@email.fr",
+ formation: "Master IA",
+ pcode_session: "Promo 2026",
+ group: "Groupe B",
+ company: "Capgemini",
+ presence: 71,
+ average: 11.3,
+ dossier: "alerte",
+ status: "suspendu",
+ avatar: "IS",
+ },
+ {
+ id: 6,
+ prenom: "Mariama",
+ nom: "KEITA",
+ email: "mariama.keita@email.fr",
+ formation: "BTS SAM",
+ pcode_session: "Promo 2027",
+ group: "Groupe A",
+ company: "L'Oréal",
+ presence: 95,
+ average: 15.1,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "MK",
+ },
+ {
+ id: 7,
+ prenom: "Abdoulaye",
+ nom: "NDIAYE",
+ email: "abdou.ndiaye@email.fr",
+ formation: "Bachelor Marketing",
+ pcode_session: "Promo 2026",
+ group: "Groupe C",
+ company: "Decathlon",
+ presence: 90,
+ average: 14.7,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "AN",
+ },
+ {
+ id: 8,
+ prenom: "Ndeye",
+ nom: "FALL",
+ email: "ndeye.fall@email.fr",
+ formation: "BTS CG",
+ pcode_session: "Promo 2027",
+ group: "Groupe B",
+ company: "AXA Assurance",
+ presence: 78,
+ average: 12.4,
+ dossier: "incomplet",
+ status: "preinscrit",
+ avatar: "NF",
+ },
+ {
+ id: 9,
+ prenom: "Ousmane",
+ nom: "DIAGNE",
+ email: "ousmane.diagne@email.fr",
+ formation: "Licence Info",
+ pcode_session: "Promo 2026",
+ group: "Groupe A",
+ company: "Sanofi",
+ presence: 93,
+ average: 15.5,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "OD",
+ },
+ {
+ id: 10,
+ prenom: "Hawa",
+ nom: "SOW",
+ email: "hawa.sow@email.fr",
+ formation: "Master Supply",
+ pcode_session: "Promo 2026",
+ group: "Groupe C",
+ company: "DHL",
+ presence: 96,
+ average: 15.9,
+ dossier: "complet",
+ status: "inscrit",
+ avatar: "HS",
+ },
+ ];
+
+ const sidebarItems = [
+ { label: "Tableau de bord", icon: LayoutDashboard },
+ { label: "Inscriptions", icon: ClipboardList },
+ { label: "Étudiants", icon: Users, active: true },
+ { label: "Formations", icon: BookOpen },
+ { label: "Entreprises", icon: Building2 },
+ { label: "Présences", icon: CheckCircle2 },
+ { label: "Évaluations", icon: GraduationCap },
+ { label: "Documents", icon: FileText },
+ { label: "Messages", icon: MessageSquare },
+ { label: "Paramètres", icon: Settings },
+ ];
+
+ function getStatusLabel(status) {
+ return {
+ inscrit: "Inscrit",
+ preinscrit: "Préinscrit",
+ suspendu: "Suspendu",
+ inactif: "Inactif",
+ }[status] || status;
+ }
+
+ function StudentCard({ student, selected, onToggle }) {
+ const dossierConfig = {
+ complet: {
+ label: "Complet",
+ icon: Check,
+ className: "success",
+ },
+ incomplet: {
+ label: "Incomplet",
+ icon: Clock3,
+ className: "warning",
+ },
+ alerte: {
+ label: "Alerte",
+ icon: AlertCircle,
+ className: "danger",
+ },
+ }[student.dossier];
+
+ // const DossierIcon = dossierConfig.icon;
+
+ return (
+
+
+
onToggle(student.id)}
+ aria-label={`Sélectionner ${student.prenom} ${student.nom}`}
+ >
+ {selected && }
+
+
+
+ {student.formation}
+ {student.pcode_session}
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+
+ {student.code_session}
+
+
+
+ );
+ }
+
+ function Sidebar({ open, onClose }) {
+ return (
+ <>
+
+
+ >
+ );
+ }
+
+
+ const [students, setstudents] = useState([]);
+
+ //const [students] = useState(studentsData);
+ const [query, setQuery] = useState("");
+ const [pcode_session, setpcode_session] = useState("Toutes");
+ const [group, setGroup] = useState("Tous");
+ const [status, setStatus] = useState("Tous");
+ const [selectedIds, setSelectedIds] = useState([]);
+ const [view, setView] = useState("grid");
+ const [sidebarOpen, setSidebarOpen] = useState(false);
+
+ const filteredStudents = useMemo(() => {
+ const normalized = query.trim().toLowerCase();
+
+ return students.filter((student) => {
+ const haystack = [
+ student.prenom,
+ student.nom,
+ student.email,
+ student.formation,
+ student.group,
+ student.company,
+ ]
+ .join(" ")
+ .toLowerCase();
+
+ return (
+ (!normalized || haystack.includes(normalized)) &&
+ (pcode_session === "Toutes" || student.pcode_session === pcode_session) &&
+ (group === "Tous" || student.group === group) &&
+ (status === "Tous" || student.status === status)
+ );
+ });
+ }, [students, query, pcode_session, group, status]);
+
+ const pcode_sessions = [...new Set(students.map((item) => item.pcode_session))];
+ const groups = [...new Set(students.map((item) => item.group))];
+
+ const toggleSelected = (studentId) => {
+ setSelectedIds((current) =>
+ current.includes(studentId)
+ ? current.filter((id) => id !== studentId)
+ : [...current, studentId]
+ );
+ };
+
+ const resetFilters = () => {
+ setQuery("");
+ setpcode_session("Toutes");
+ setGroup("Tous");
+ setStatus("Tous");
+ };
+
+ useEffect(() => {
+
+
+ var new_data2 = [];
+ const new_data = props.inscrit.map((x) => {
+
+ //---
+ var local_student = JSON.parse(x)
+ new_data2.push(local_student);
+ });
+
+
+
+ setstudents(new_data2);
+
+
+ }, [])
+
+ return (
+
+
+ {isLoading &&
}
+
+ {/*** Affichage des messages d'alerte*/}
+ {display_alert_mysy && String(display_alert_mysy) === "1" &&
+
+ }
+ {/*** FIN Affichage des messages d'alerte*/}
+
+
+
+
+
+ {filteredStudents.length ? (
+
+ {filteredStudents.map((student) => (
+
+ ))}
+
+ ) : (
+
+
+ Aucun étudiant trouvé
+ Modifiez les critères de recherche ou réinitialisez les filtres.
+
+ Réinitialiser
+
+
+ )}
+
+
+
+
+
+
+
+
+ );
+}
+
+export default Module_Trombinoscope;
+
+
+const local_css = `
+
+
+`;
\ No newline at end of file
diff --git a/src/components/Mon_Catalogue_Public.js b/src/components/Mon_Catalogue_Public.js
index e5ae972..421b244 100644
--- a/src/components/Mon_Catalogue_Public.js
+++ b/src/components/Mon_Catalogue_Public.js
@@ -2,7 +2,7 @@ import React, { useRef, useState, useMemo, useEffect } from "react";
import { useForm } from "react-hook-form";
import axios from "axios";
import Formation_Partner_Catalog from "./Formation_Partner_Catalog";
-import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
+import { FaSearch, FaRegArrowAltCircleDown, FaRegArrowAltCircleUp } from 'react-icons/fa';
import { IoAppsSharp, IoListSharp } from "react-icons/io5";
import Formation_Grid_2Col from "./Formation_Grid_2Col";
@@ -12,8 +12,8 @@ import { useHistory } from "react-router-dom";
import { getCookie, removeCookie } from 'react-use-cookie';
import { Helmet } from "react-helmet";
-import AideRecherche from "./AideRecherche"
-import { useParams } from 'react-router-dom'
+import AideRecherche from "./AideRecherche";
+import { useParams } from 'react-router-dom';
import Fotter_Catalog_Pub from "./Fotter_Catalog_Pub";
import img_header_jmg from "../mysy_img2/img_jmj_modif.jpg"
@@ -47,7 +47,11 @@ const Mon_Catalogue_Public = (props) => {
const [TrainingPrice, setTrainingPrice] = useState("");
const [SearchText, setSearchText] = useState("");
const [SearchcitiesText, setSearchcitiesText] = useState("");
- const [result, setResult] = useState("");
+ const [result, setResult] = useState([]);
+
+ const [result_for_atelier, setresult_for_atelier] = useState([]);
+
+
const [myApiResponse, setmyApiResponse] = useState("false");
const [displayAllClasses, setdisplayAllClasses] = useState("0");
const [showelement, setshowelement] = useState("init");
@@ -107,6 +111,7 @@ const Mon_Catalogue_Public = (props) => {
const onSubmit = async (data) => {
searchFunction();
+ searchFunction_for_ateliers();
};
const [Trainingdistance, setTrainingdistance] = useState(0);
@@ -139,11 +144,13 @@ const Mon_Catalogue_Public = (props) => {
function clearsearchtext(event) {
setSearchText("");
setResult([]);
+ setresult_for_atelier([]);
document.getElementById("SearchText").value = "";
setempltysearch("1")
setbesoinaiderecherche("");
settext("");
DisplayXfirstClas();
+ DisplayXfirstClas_for_atelier();
}
const [suggestion2, setsuggestion2] = useState([]);
@@ -947,7 +954,10 @@ const Mon_Catalogue_Public = (props) => {
}
}
+
+
DisplayXfirstClas(result.data);
+ DisplayXfirstClas_for_atelier();
}
@@ -995,7 +1005,7 @@ const Mon_Catalogue_Public = (props) => {
});
}
- loadDomainMetier();
+ // loadDomainMetier();
async function loadDomain() {
@@ -1021,7 +1031,7 @@ const Mon_Catalogue_Public = (props) => {
}
- loadDomain();
+ // loadDomain();
const listener = event => {
if (event.code === "Enter" || event.code === "NumpadEnter") {
@@ -1081,6 +1091,7 @@ const Mon_Catalogue_Public = (props) => {
if (tab_domaine.length <= 0) {
setdomaine_v11(domaine_v11_orig);
DisplayXfirstClas();
+ DisplayXfirstClas_for_atelier()
return;
}
@@ -1133,6 +1144,7 @@ const Mon_Catalogue_Public = (props) => {
if (event.length <= 0) {
setdomaine_v11(domaine_v11_orig);
DisplayXfirstClas();
+ DisplayXfirstClas_for_atelier()
return;
}
//console.log(domaine_metier);
@@ -1195,6 +1207,7 @@ const Mon_Catalogue_Public = (props) => {
// Nettoyage du resultat precedent.
setResult([]);
+
var crit_TrainingSupport = "";
var crit_TrainingType = "";
var crit_TrainingCertif = "";
@@ -1203,13 +1216,9 @@ const Mon_Catalogue_Public = (props) => {
var crit_TrainingPrice = "";
var crit_TrainingDuration = "";
var my_ville = "";
-
var my_cp = "";
-
var my_domaine = "";
-
-
if (document.getElementById("searchdomain"))
my_domaine = document.getElementById("searchdomain").value;
@@ -1330,8 +1339,8 @@ const Mon_Catalogue_Public = (props) => {
// alert("myurl = " + myurl);
axios.post(myurl, form).then(res => {
if (String(res.data.status) != String("false")) {
- //console.log(" In test res.data.status = " + res.data.status);
- // console.log(" In test res.data.message = " + res.data.message);
+ //console.log(" In searchFunction res.data.status = " + res.data.status);
+ console.log(" In searchFunction res.data.message = " + res.data.message);
setmyApiResponse("True");
setResult(res.data.message)
@@ -1375,6 +1384,175 @@ const Mon_Catalogue_Public = (props) => {
+ }
+
+
+
+ /// Recherche pour les formation de type atelier
+ function searchFunction_for_ateliers(e) {
+ // Nettoyage du resultat precedent.
+ setresult_for_atelier([]);
+
+ var crit_TrainingSupport = "";
+ var crit_TrainingType = "";
+ var crit_TrainingCertif = "";
+ var crit_TrainingLang = "";
+ var crit_TrainingPresentiel = "";
+ var crit_TrainingPrice = "";
+ var crit_TrainingDuration = "";
+ var my_ville = "";
+ var my_cp = "";
+ var my_domaine = "";
+
+ if (document.getElementById("searchdomain"))
+ my_domaine = document.getElementById("searchdomain").value;
+
+
+ //Get Criterias
+ var crit_SearchText = document.getElementById("SearchText").value;
+
+ if (document.getElementById("TrainingSupport"))
+ crit_TrainingSupport = document.getElementById("TrainingSupport").value;
+
+ if (document.getElementById("TrainingType"))
+ crit_TrainingType = document.getElementById("TrainingType").value;
+
+ if (document.getElementById("TrainingCertif"))
+ crit_TrainingCertif = document.getElementById("TrainingCertif").value;
+ if (crit_TrainingCertif.length == 0)
+ crit_TrainingCertif = "NA";
+
+
+ if (document.getElementById("TrainingLang"))
+ crit_TrainingLang = document.getElementById("TrainingLang").value;
+
+ if (document.getElementById("TrainingPresentiel"))
+ crit_TrainingPresentiel = document.getElementById("TrainingPresentiel").value;
+
+ if (document.getElementById("TrainingPrice"))
+ crit_TrainingPrice = document.getElementById("TrainingPrice").value;
+
+ if (document.getElementById("duration"))
+ crit_TrainingDuration = document.getElementById("duration").value;
+
+
+ if (document.getElementById("ville")) {
+ my_ville = crit_TrainingSupport = document.getElementById("ville").value;
+
+ }
+
+ if (document.getElementById("zip_code")) {
+ my_cp = crit_TrainingSupport = document.getElementById("zip_code").value;
+
+ }
+
+
+ var crit_Trainingdistance = Trainingdistance;
+
+ var form = new FormData();
+ form.append("search_text", crit_SearchText);
+
+
+ var my_local_user_connect;
+ var my_local_part_connect;
+ if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
+ my_local_user_connect = 0;
+ } else {
+ my_local_user_connect = 1;
+ }
+
+ if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
+ my_local_part_connect = 0;
+ } else {
+ my_local_part_connect = 1;
+ }
+
+
+
+ if (String(my_local_user_connect) === "1") {
+ form.append("token", stored_user);
+ form.append("connection_type", "user");
+ }
+ else if (String(my_local_part_connect) === "1") {
+ form.append("token", stored_part);
+ form.append("connection_type", "partner");
+ }
+ else {
+ form.append("token", "");
+ form.append("connection_type", "");
+ }
+ form.append("certif", crit_TrainingCertif);
+ form.append("support", crit_TrainingSupport);
+ form.append("type", crit_TrainingType);
+ form.append("lang", crit_TrainingLang);
+ form.append("price", crit_TrainingPrice);
+ form.append("distance", crit_Trainingdistance);
+ form.append("duration", crit_TrainingDuration);
+
+
+ // Ajout des info IP user
+ 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);
+ form.append("subdomain", window.location.host.split(".")[0]);
+
+
+ form.append("formation_type", "atelier");
+
+
+ var myurl = ""
+ if (displayAllClasses == true) {
+ myurl = process.env.REACT_APP_API_URL + "myclass/api/get_all_class_Given_partner_owner_recid_No_Login/";
+ }
+ else {
+ myurl = process.env.REACT_APP_API_URL + "myclass/api/recherche_text_simple_for_partner_catalog/";
+
+ }
+
+ // alert("myurl = " + myurl);
+ axios.post(myurl, form).then(res => {
+ if (String(res.data.status) != String("false")) {
+ //console.log(" In test res.data.status = " + res.data.status);
+ console.log(" In searchFunction_for_ateliers res.data.message = " + res.data.message);
+ //setmyApiResponse("True");
+ setresult_for_atelier(res.data.message)
+
+
+
+ var myelement;
+
+ if (document.getElementById('rech_middlebox')) {
+ myelement = document.getElementById('rech_middlebox');
+ }
+
+ if (myelement) {
+ myelement.scrollIntoView({ behavior: 'smooth' });
+ }
+
+ }
+
+ else {
+ //console.log(" In test res.data.status = " + res.data.status);
+ //console.log(" In test res.data.message = " + res.data.message);
+ setmyApiResponse("False");
+ //setmyApimyApiMessage("")
+ //textInput.current.focus();
+ }
+
+
+ }).catch((error) => {
+ // console.warn('Not good man :( mysearchtext = ');
+ //setmyApiResponse("False");
+ //setmyApimyApiMessage("")
+ })
+
+
+
}
// Cette fonction affiche les X premieres formations
@@ -1384,6 +1562,132 @@ const Mon_Catalogue_Public = (props) => {
setResult([]);
+ //Get Criterias
+ var crit_SearchText = "";
+ var myurl = "";
+
+ var form = new FormData();
+ form.append("search_text", crit_SearchText);
+
+
+ if (typeof (NewSearchText) === "undefined" || String(NewSearchText) === '') {
+ crit_SearchText = "";
+ myurl = process.env.REACT_APP_API_URL + "myclass/api/get_all_class_Given_partner_owner_recid_No_Login_With_Valide_Session/";
+ form.append("subdomain", window.location.host.split(".")[0]);
+
+ // console.log(" ######### laaaaaaaaaaaaa subdomain = ", window.location.host.split(".")[0])
+
+
+ } else {
+ crit_SearchText = NewSearchText;
+ myurl = process.env.REACT_APP_API_URL + "myclass/api/recherche_text_simple_for_partner_catalog/";
+
+ }
+
+
+ var my_local_user_connect;
+ var my_local_part_connect;
+
+ if (typeof (stored_user) === "undefined" || String(stored_user) === '') {
+ my_local_user_connect = 0;
+ } else {
+ my_local_user_connect = 1;
+ }
+
+ if (typeof (stored_part) === "undefined" || String(stored_part) === '') {
+ my_local_part_connect = 0;
+ } else {
+ my_local_part_connect = 1;
+ }
+
+ if (String(my_local_user_connect) === "1") {
+ form.append("token", stored_user);
+ form.append("connection_type", "user");
+ }
+ else if (String(my_local_part_connect) === "1") {
+ form.append("token", stored_part);
+ form.append("connection_type", "partner");
+ }
+ else {
+ form.append("token", "");
+ form.append("connection_type", "");
+ }
+
+ form.append("certif", "");
+ form.append("support", "");
+ form.append("type", "");
+ form.append("lang", "");
+ form.append("price", "");
+ form.append("distance", "");
+ form.append("duration", "");
+ form.append("cpf", "");
+
+
+
+ // Ajout des info IP user
+ if (ip) {
+ //console.log(" ### with IP");
+ form.append("user_ip", ip.IPv4);
+ form.append("user_country_code", ip.country_code);
+ form.append("user_country_name", ip.country_name);
+ form.append("user_city", ip.city);
+ form.append("user_postal", ip.postal);
+ form.append("user_latitude", ip.latitude);
+ form.append("user_longitude", ip.longitude);
+ form.append("user_state", ip.state);
+ }
+ else {
+ //console.log(" ### with OUT IP");
+ 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);
+ // alert(" rrtt ");
+ }
+
+
+ //alert("myurl zzz = " + myurl);
+ axios.post(myurl, form).then(res => {
+ if (String(res.data.status) != String("false")) {
+ //console.log(" In test res.data.status = " + res.data.status);
+ // console.log(" In DisplayXfirstClas res.data.message = " + res.data.message);
+
+ setmyApiResponse("True");
+ setResult(res.data.message)
+ // textInput.current.focus();
+ setbesoinaiderecherche("");
+
+ }
+ else {
+ //console.log(" In test res.data.status = " + res.data.status);
+ //console.log(" In test res.data.message = " + res.data.message);
+ setmyApiResponse("False");
+ //setmyApimyApiMessage("")
+ //textInput.current.focus();
+ }
+
+
+ }).catch((error) => {
+ // console.warn('Not good man :( mysearchtext = ');
+ setmyApiResponse("False");
+ //setmyApimyApiMessage("")
+ })
+
+
+ }
+
+
+ // Cette fonction affiche les X premieres formations de type atelier
+ function DisplayXfirstClas_for_atelier(ip) {
+
+ // Nettoyage du resultat precedent.
+
+ setresult_for_atelier([]);
+
//Get Criterias
var crit_SearchText = "";
@@ -1472,23 +1776,22 @@ const Mon_Catalogue_Public = (props) => {
// alert(" rrtt ");
}
+ form.append("formation_type", "atelier");
- // alert("myurl = " + myurl);
+ //alert("myurl DisplayXfirstClas_for_atelier = " + myurl);
axios.post(myurl, form).then(res => {
if (String(res.data.status) != String("false")) {
//console.log(" In test res.data.status = " + res.data.status);
- //console.log(" In DisplayXfirstClas res.data.message = " + res.data.message);
+ //console.log(" In DisplayXfirstClas_for_atelier res.data.message = " + res.data.message);
+
+ setresult_for_atelier(res.data.message)
- setmyApiResponse("True");
- setResult(res.data.message)
- // textInput.current.focus();
- setbesoinaiderecherche("");
}
else {
//console.log(" In test res.data.status = " + res.data.status);
//console.log(" In test res.data.message = " + res.data.message);
- setmyApiResponse("False");
+ //setmyApiResponse("False");
//setmyApimyApiMessage("")
//textInput.current.focus();
}
@@ -1496,13 +1799,15 @@ const Mon_Catalogue_Public = (props) => {
}).catch((error) => {
// console.warn('Not good man :( mysearchtext = ');
- setmyApiResponse("False");
+ //setmyApiResponse("False");
//setmyApimyApiMessage("")
})
}
+
+
const [trier_par, settrier_par] = useState("1");
function trier(e) {
@@ -1757,6 +2062,7 @@ const Mon_Catalogue_Public = (props) => {
setdomaine_v11(domaine_v11_orig);
DisplayXfirstClas();
+ DisplayXfirstClas_for_atelier();
//setResult([]);
/*const pieces = window.location.href.split("/")
@@ -2834,7 +3140,7 @@ const Mon_Catalogue_Public = (props) => {
const [display_formation_session, setdisplay_formation_session] = useState("formation");
-
+ const [activeTab, setActiveTab] = useState("formations");
return (
@@ -4671,9 +4977,9 @@ const Mon_Catalogue_Public = (props) => {