diff --git a/src/components/DisplayPartnerStagiaires.js b/src/components/DisplayPartnerStagiaires.js index b456e60..3eba1ae 100644 --- a/src/components/DisplayPartnerStagiaires.js +++ b/src/components/DisplayPartnerStagiaires.js @@ -1020,6 +1020,8 @@ const DisplayPartnerStagiaires = (props) => { setalert_message(res.data.message); setalert_type("success"); + setactionmass_ftion_val(""); + } else if (String(res.data.status) === String("Err_Connexion")) { setLoading(false); @@ -1047,6 +1049,62 @@ const DisplayPartnerStagiaires = (props) => { } + const [Annule_List_Inscritpion_api, setAnnule_List_Inscritpion_api] = useState(); + const [Annule_List_Inscritpion_message, setAnnule_List_Inscritpion_message] = useState(); + const [Annule_List_Inscritpion_result, setAnnule_List_Inscritpion_result] = useState(); + function Annule_List_Inscritpion(list_inscription_id) { + + var form = new FormData(); + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("tab_inscription_ids", list_inscription_id); + + + setLoading(true); + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Cancel_Tab_Inscription/"; + + axios.post(myurl, form).then(res => { + + if (String(res.data.status) === String("true")) { + setLoading(false); + //console.log(" In UpdateStagiaireData res.data.status = " + res.data.status); + //console.log(" In UpdateStagiaireData res.data.message r_class = " + res.data.message); + setAnnule_List_Inscritpion_api("true"); + setAnnule_List_Inscritpion_result(res.data.message); + Getall_TrainingParticipant(); + // alert(res.data.message); + setdisplay_alert_mysy("1"); + setalert_message(res.data.message); + setalert_type("success"); + + setactionmass_ftion_val(""); + + } else if (String(res.data.status) === String("Err_Connexion")) { + setLoading(false); + alert('Erreur: ' + res.data.message); + history.push("/Connexion"); + } + else { + setLoading(false); + setAnnule_List_Inscritpion_api("false"); + setAnnule_List_Inscritpion_message(res.data.message); + // alert(res.data.message); + setdisplay_alert_mysy("1"); + setalert_message(res.data.message); + setalert_type("error"); + + } + + }).catch((error) => { + setLoading(false); + console.warn('Annule_List_Inscritpion : Not good man :( mysearchtext = ' + error); + setAnnule_List_Inscritpion_api("false"); + alert(" Impossible d'annuler la liste d'inscriptions"); + + }) + } + const [Recyclage_Desactivation_api, setRecyclage_Desactivation_api] = useState(); const [Recyclage_Desactivation_message, setRecyclage_Desactivation_message] = useState(); const [Recyclage_Desactivation_result, setRecyclage_Desactivation_result] = useState(); @@ -1312,7 +1370,9 @@ const DisplayPartnerStagiaires = (props) => { form.append("token", stored_cookie); //console.log(" ### Getall_TrainingParticipant form = ", form) - var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Statgaire_List_Partner_with_filter/"; + // var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Statgaire_List_Partner_with_filter/"; + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Statgaire_List_Partner_with_filter_uptimized/"; setLoading(true); @@ -1322,7 +1382,7 @@ const DisplayPartnerStagiaires = (props) => { if (String(res.data.status) === String("true")) { setloading_datagrid(false); //console.log(" In Getall_TrainingParticipant res.data.status = " + res.data.status); - //console.log(" In Getall_TrainingParticipant res.data.message r_class = " + res.data.message); + // console.log(" In Getall_TrainingParticipant res.data.message r_class = " + res.data.message); setGetall_TrainingParticipant_api("true"); setGetall_TrainingParticipant_result(res.data.message); setRows(res.data.message); @@ -1435,7 +1495,7 @@ const DisplayPartnerStagiaires = (props) => { }).catch((error) => { setloading_datagrid(false); setLoading(false); - // console.warn('Not good man :( Getall_TrainingParticipant = ', error); + // console.warn('Not good man :( Getall_TrainingParticipant = ', error); setGetall_TrainingParticipant_api("false"); //setmyApimyApiMessage("") }) @@ -5940,7 +6000,7 @@ const DisplayPartnerStagiaires = (props) => { setdisplay_alert_mysy("1"); setalert_message(" La mise à jour a été correctement faite."); setalert_type("success"); - + setactionmass_ftion_val(""); //myRef_head.current.scrollIntoView({ behavior: "smooth" }); if (document.getElementById('myRef_head')) { @@ -7374,6 +7434,12 @@ const DisplayPartnerStagiaires = (props) => { } + + if (String(actionmass_ftion_val) === String("annule_inscr")) { + Annule_List_Inscritpion(liste_session); + } + + if (String(actionmass_ftion_val) === String("supprimer")) { Delete_LIST_Stagiaires(liste_session); } @@ -7403,7 +7469,7 @@ const DisplayPartnerStagiaires = (props) => { var myid = parseInt(String(selectionModel[0])); var first_line_selected = JSON.parse(rowss[myid]); - console.log(" first_line_selected == ", first_line_selected); + // console.log(" first_line_selected == ", first_line_selected); Get_List_UE_From_Session_Id(first_line_selected.session_id); // console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste); @@ -7517,7 +7583,8 @@ const DisplayPartnerStagiaires = (props) => { if (String(res.data) === String("false")) { alert("Impossible d'exporter les inscrits (2) "); } else { - fileDownload(res.data, nom_fichier_cmd) + fileDownload(res.data, nom_fichier_cmd); + setactionmass_ftion_val(""); } }).catch((error) => { @@ -7656,6 +7723,8 @@ const DisplayPartnerStagiaires = (props) => { setdisplay_alert_mysy("1"); setalert_message(res.data.message); setalert_type("success"); + + setactionmass_ftion_val(""); } else { setDelete_LIST_Stagiaires_api("false"); @@ -8533,6 +8602,7 @@ const DisplayPartnerStagiaires = (props) => { const New_Option = [ { "id": "0", "label": "Valider Insc.", "value": "valide_inscr" }, + { "id": "7", "label": "Annuler Insc.", "value": "annule_inscr" }, { "id": "1", "label": "Supprimer", "value": "supprimer" }, { "id": "2", "label": "Exporter", "value": "exporter" }, { "id": "3", "label": "Desactiver Recyclage", "value": "recyclage_disable" }, @@ -10616,7 +10686,7 @@ const DisplayPartnerStagiaires = (props) => { Getall_TrainingParticipant(); setis_recherche("1"); setDialog_Filtre_Ouverture_open(false); - }} className="bton_enreg_dialog" >Rechercher + }} className="bton_enreg_dialog" >Rechercher @@ -13744,6 +13814,7 @@ const DisplayPartnerStagiaires = (props) => { || String(value.value) === "convention" || String(value.value) === "exporter" || String(value.value) === "valide_inscr" + || String(value.value) === "annule_inscr" || String(value.value) === "recyclage_disable" || String(value.value) === "archive_desarchive") { @@ -13780,7 +13851,7 @@ const DisplayPartnerStagiaires = (props) => { var first_line_selected = JSON.parse(rowss[myid]); Get_List_UE_From_Session_Id(first_line_selected.session_id); - console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste); + //console.log(" #### selectedtraining_emails_liste = ", selectedtraining_emails_liste); settab_email_pieces_jointes_result([]); setDialog_PUSH_DOCUMENT_TO_ENT_open(true); setent_push_doc_message_notif(""); @@ -13843,6 +13914,10 @@ const DisplayPartnerStagiaires = (props) => { Confirmer la validation des inscriptions en masse pour {selectionModel.length} lignes. } + {String(actionmass_ftion_val) === "annule_inscr" && + Confirmer l'annulation des inscriptions en masse pour {selectionModel.length} lignes. + } + {String(actionmass_ftion_val) === "supprimer" && Confirmer la suppression en masse pour {selectionModel.length} lignes. } diff --git a/src/components/DisplayPartnerStagiaires_ORIG_2706.js b/src/components/DisplayPartnerStagiaires_ORIG_2706.js new file mode 100644 index 0000000..2bc9938 --- /dev/null +++ b/src/components/DisplayPartnerStagiaires_ORIG_2706.js @@ -0,0 +1,18474 @@ +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'; +import "react-draft-wysiwyg/dist/react-draft-wysiwyg.css"; +import 'react-tooltip/dist/react-tooltip.css' +import { Tooltip } from 'react-tooltip' + +import excel_icone from "../mysy_img/excel_icone.png"; +import { format } from 'date-fns'; +import fileDownload from 'js-file-download' +import Popup from 'reactjs-popup'; +import 'reactjs-popup/dist/index.css'; +import { + FcAcceptDatabase, + FcExpired +} from "react-icons/fc"; +import { FcInfo } from "react-icons/fc"; + +import { CiTrash, CiBoxList } from "react-icons/ci"; +import fr from 'date-fns/locale/fr'; +import { registerLocale } from 'react-datepicker'; +import DatePicker from "react-datepicker"; +import "react-datepicker/dist/react-datepicker.css"; +import moment from "moment"; +import InputAdornment from '@mui/material/InputAdornment'; +import { AiFillCloseCircle } from "react-icons/ai"; +import Box from '@mui/material/Box'; +import { LinearProgress } from '@mui/material'; +import styled from 'styled-components'; + +import { MdAddCircleOutline, MdRemoveCircleOutline } from "react-icons/md"; +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 img_loading_spin from "./../mysy_img/mysy_spin_loading.gif"; +import { Fab } from "@material-ui/core"; +import { IoMdAddCircle, IoIosRemoveCircleOutline, IoIosAddCircleOutline } from "react-icons/io"; +import { AiTwotoneSave } from "react-icons/ai"; +import Module_Absence from "./Module_Absence"; +import { RiMoreFill } from "react-icons/ri"; +import { FcEditImage } from "react-icons/fc"; +import { useHistory } from "react-router-dom"; +import Module_Historique_Action from "./Module_Historique_Action"; +import ToggleSwitch from "./ToggleSwitch"; +import TextareaAutosize from '@mui/material/TextareaAutosize'; +import Autocomplete from '@mui/material/Autocomplete'; +import { FcSearch, FcViewDetails, FcOpenedFolder } from "react-icons/fc"; +import Link from '@mui/material/Link'; +import { PiDotsThree } from "react-icons/pi"; +import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5"; +import CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank'; +import CheckBoxIcon from '@mui/icons-material/CheckBox'; +import Checkbox from '@mui/material/Checkbox'; +import Module_Email_Management from "./Module_Email_Management"; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import { FaComment } from "react-icons/fa6"; +import { + GridToolbarContainer, GridToolbarExport, GridToolbarColumnsButton, + GridToolbarFilterButton, GridToolbarDensitySelector, GridToolbarExportContainer, useGridApiContext, + gridFilteredSortedRowIdsSelector, + gridVisibleColumnFieldsSelector, + GridValueGetterParams, + GridPreferencePanelsValue, + +} from '@mui/x-data-grid'; +import { gridClasses } from '@mui/x-data-grid'; +import * as XLSX from 'xlsx'; +import Modules_Mes_Documents from "./Modules_Mes_Documents"; +import Module_Alert_Confirmation from "./Module_Alert_Confirmation"; + +import { makeStyles } from "@material-ui/core/styles"; +import Paper from '@material-ui/core/Paper'; +import Draggable from 'react-draggable'; +import { IconButton } from '@material-ui/core'; +import AutoFixHighOutlinedIcon from '@mui/icons-material/AutoFixHighOutlined'; +import CancelPresentationIcon from '@mui/icons-material/CancelPresentation'; +import Module_Gestion_Stage from "./Module_Gestion_Stage"; + +function PaperComponent(props) { + return ( + + + + ); +} + + +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', + }, +})); + +const DisplayPartnerStagiaires_ORIG_2706 = (props) => { + + const classes = useStyles(); + registerLocale('fr', fr); + const history = useHistory(); + const [submenu, setsubmenu] = useState(""); + + + const [rowss, setRows] = useState([]); + const [selectionModel, setSelectionModel] = React.useState([]); + + const [selectionModel_notes, setselectionModel_notes] = React.useState([]); + const [selectionModel_jury, setselectionModel_jury] = React.useState([]); + + const [selectionModel_tuteurs, setSelectionModel_tuteurs] = React.useState([]); + + + const [p_filtre1, setp_filtre1] = useState(""); + const [p_filtre1_value, setp_filtre1_value] = useState(""); + + const [p_filtre2, setp_filtre2] = useState(""); + const [p_filtre2_value, setp_filtre2_value] = useState(""); + + const [p_filtre3, setp_filtre3] = useState(""); + const [p_filtre3_value, setp_filtre3_value] = useState(""); + + const [p_filtre4, setp_filtre4] = useState(""); + const [p_filtre4_value, setp_filtre4_value] = useState(""); + + const filters = [ + { value: 'code_session', label: 'Code Promo' }, + { value: 'class_title', label: 'Titre Formation' }, + { value: 'certif', label: 'Certification' } + ] + + const [gridline_id, setgridline_id] = useState(""); + + const [gridline_id_notes, setgridline_id_notes] = useState(""); + + 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, }, + { field: 'archive', headerName: 'archive', hide: true, editable: false, Width: 0, disableExport: true, }, + { field: 'id', headerName: 'id', hide: true, Width: 0, disableExport: true, }, + { field: 'class_id', headerName: 'class_id', hide: true, Width: 0, disableExport: true, }, + { field: 'class_internal_url', headerName: 'class_internal_url', hide: true, editable: false, Width: 0, disableExport: true, }, + + { field: 'telephone', headerName: 'Téléphone', hide: true, editable: false, Width: 0 }, + { field: 'date_naissance', headerName: 'date_naissance', hide: true, editable: false, Width: 0 }, + + { + field: 'warning_recyclage_alert', headerName: 'Alert', hide: false, Width: 150, + + + renderCell: (cellValues) => { + return ( +
+ {cellValues.row.warning_recyclage_alert && String(cellValues.row.warning_recyclage_alert) === "1" && } + {cellValues.row.warning_recyclage_alert && String(cellValues.row.warning_recyclage_alert) !== "1" && ""} + +
+ + ); + } + + }, + + { + field: 'civilite', headerName: 'Civ.', minWidth: 100, flex: 1, maxWidth: 100, hide: false, editable: false, editable: false, + + renderCell: (cellValues) => { + return ( + +
+ {New_civilite && New_civilite.length > 0 && cellValues.row.civilite && + + } + +
+ + ); + }, + }, + + + + { field: 'nom', headerName: 'Nom', minWidth: 200, flex: 1, hide: false, editable: false, editable: false, renderCell: (params) => , }, + { field: 'prenom', headerName: 'Prénom', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => , }, + { field: 'email', headerName: 'Email', minWidth: 250, flex: 1, editable: false, renderCell: (params) => , }, + { field: 'employeur', headerName: 'Employeur', minWidth: 200, hide: true, editable: false }, + { field: 'client_nom', headerName: 'Client', minWidth: 200, flex: 1, hide: false, editable: false, renderCell: (params) => , }, + { + field: 'client_facture', headerName: 'Client Fact.', minWidth: 200, flex: 1, hide: false, editable: false, + + + + renderCell: (cellValues) => { + return ( +
+ {New_Get_List_Partner_Clients_result && New_Get_List_Partner_Clients_result.length > 0 && cellValues.row.client_facture && } +
+ + ); + } + }, + + + { + field: 'status', headerName: 'Statut', hide: false, width: datagrid_columns_size_model2, + valueFormatter: (params) => { + if (String(params.value) === "0") + return "PréIns."; + else if (String(params.value) === "1") + return "Inscrit"; + else if (String(params.value) === "-1") + return "Annulé"; + else if (String(params.value) === "2") + return "Encours"; + else + return "???"; + }, + }, + { 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, hide: true, + valueFormatter: (params) => { + if (String(params.value) === "0") + return "Non"; + else if (String(params.value) === "1") + return "Oui"; + else + return "?"; + }, + }, + { + field: 'presentiel', headerName: 'Presentiel', width: datagrid_columns_size_model2, hide: true, + valueFormatter: (params) => { + if (String(params.value) === "0") + return "Non"; + else if (String(params.value) === "1") + return "Oui"; + else + return "?"; + }, + + }, + { 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: true, editable: false, + valueFormatter: (params) => { + if (String(params.value) === "1") + return "Oui"; + else + return "Non"; + }, + }, + { field: 'invoiced_ref', headerName: 'Num Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, }, + { field: 'invoiced_date', headerName: 'Date Fact.', minWidth: 100, flex: 1, maxWidth: 150, flex: 1, editable: false, hide: true, }, + + { 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: true, flex: 1, minWidth: 100, }, + + + { + 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("session", "write")) === "1" &&