23/05/2026 - 20h00

branche_01062025
Cherif 2026-05-23 19:53:50 +02:00
parent 05906fdf67
commit 5304730e7b
18 changed files with 908 additions and 202 deletions

View File

@ -106,7 +106,7 @@ function App() {
const Intranet_Client_Account = lazy(() => import("./pages/intranet_client_account"));
const Account = lazy(() => import("./pages/account"));
const TestUrl = lazy(() => import("./pages/testurl"));
@ -121,6 +121,10 @@ function App() {
const Maintenance = lazy(() => import("./pages/maintenance_page"));
const MySyIA = lazy(() => import("./pages/iamysy"));
const AutomaticQuotation = lazy(() => import("./pages/automaticquotation"));
const Automatic_Absence_Action = lazy(() => import("./pages/Absence_Action_From_Mail"));
const Emarge_QR_Code = lazy(() => import("./pages/emarge_qr_code"));
const Survey_Eval_QR_Code = lazy(() => import("./pages/survey_eval_qr_code"));
@ -309,6 +313,8 @@ function App() {
<Route path="/automatic-quotation/:partner_owner_recid/:objid/" exact component={AutomaticQuotation} />
<Route path="/absence/:action/:partner_owner_recid/:objid/" exact component={Automatic_Absence_Action} />
<Route path="/intelligence-artificielle-mysy-training/" exact component={MySyIA} />
{/**** New design 2025 */}

View File

@ -1342,7 +1342,7 @@ const Apprenant = (props) => {
const formData = new FormData();
formData.append('File', file_1_name);
//formData.append('token', 'K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA');
const stored_cookie = getCookie('tokenmysypart');
const stored_cookie = getCookie('tokenmysypart');
formData.append("token", stored_cookie);
formData.append("file_business_object", p_detail_one_file_to_download_type_name);
@ -1353,7 +1353,16 @@ const Apprenant = (props) => {
formData.append("type_document", "");
if (file_date_expiration) {
formData.append("file_date_expiration", file_date_expiration);
if (file_date_expiration instanceof Date) {
const jour = String(file_date_expiration.getDate()).padStart(2, "0");
const mois = String(file_date_expiration.getMonth() + 1).padStart(2, "0");
const annee = file_date_expiration.getFullYear();
var local_date = `${jour}/${mois}/${annee}`;
formData.append("file_date_expiration", local_date);
} else {
formData.append("file_date_expiration", file_date_expiration);
}
} else {
formData.append("file_date_expiration", "01/01/2099");
}
@ -6820,7 +6829,7 @@ const Apprenant = (props) => {
{ "id": "permis", "label": "Permis Conduire", "value": "permis" },
{ "id": "passport", "label": "Passport", "value": "passport" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
{ "id": "autre", "label": "Autre", "value": "passport" },
{ "id": "autre", "label": "Autre", "value": "autre" },
{ "id": "", "label": "", "value": "" },
]
@ -10789,7 +10798,8 @@ const Apprenant = (props) => {
{String(display_detail_absence) === "1" && String(add_One_Apprenant) !== "1" && selected_apprenant_id && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<Module_Absence attendee_email={selected_apprenant_email}
inscription_id={selected_apprenant_id}
inscription_id={""}
apprenant_id={selected_apprenant_id}
related_collection={"apprenant"}
read_access={props.read_access}
write_access={props.write_access}

View File

@ -7117,7 +7117,16 @@ const DisplayPartnerStagiaires = (props) => {
formData.append("type_document", "");
if (file_date_expiration) {
formData.append("file_date_expiration", file_date_expiration);
if (file_date_expiration instanceof Date) {
const jour = String(file_date_expiration.getDate()).padStart(2, "0");
const mois = String(file_date_expiration.getMonth() + 1).padStart(2, "0");
const annee = file_date_expiration.getFullYear();
var local_date = `${jour}/${mois}/${annee}`;
formData.append("file_date_expiration", local_date);
} else {
formData.append("file_date_expiration", file_date_expiration);
}
} else {
formData.append("file_date_expiration", "01/01/2099");
}
@ -8724,6 +8733,7 @@ const DisplayPartnerStagiaires = (props) => {
{ "id": "permis", "label": "Permis Conduire", "value": "permis" },
{ "id": "passport", "label": "Passport", "value": "passport" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
{ "id": "autre", "label": "Autre", "value": "autre" },
{ "id": "", "label": "", "value": "" },
]
@ -15364,13 +15374,13 @@ const DisplayPartnerStagiaires = (props) => {
name="type_piece_identite"
id="type_piece_identite"
value={New_Option_Piece_Identite.filter((data) => (data).value === String(p_detail_piece_identite_type))[0].label}
className="disabled_style"
options={New_Option_Piece_Identite}
onChange={(event, value) => {
setparticipant_data_changed("1");
setp_detail_tel_changed("1");
setparticipant_data_changed("1");
setp_detail_tel_changed("1");
if (value && value.value) {
setp_detail_piece_identite_type(value.value);
} else {

View File

@ -5086,7 +5086,16 @@ const Employes = (props) => {
formData.append("type_document", "");
if (file_date_expiration) {
formData.append("file_date_expiration", file_date_expiration);
if (file_date_expiration instanceof Date) {
const jour = String(file_date_expiration.getDate()).padStart(2, "0");
const mois = String(file_date_expiration.getMonth() + 1).padStart(2, "0");
const annee = file_date_expiration.getFullYear();
var local_date = `${jour}/${mois}/${annee}`;
formData.append("file_date_expiration", local_date);
} else {
formData.append("file_date_expiration", file_date_expiration);
}
} else {
formData.append("file_date_expiration", "01/01/2099");
}

View File

@ -17,9 +17,9 @@ import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import Autocomplete from '@mui/material/Autocomplete';
import moment from "moment";
import { BsCheck2Circle } from "react-icons/bs";
import Box from '@mui/material/Box';
import { FlagTriangleRight } from 'lucide-react';
import { CiBoxList } from "react-icons/ci";
import Dialog from '@mui/material/Dialog';
@ -575,8 +575,20 @@ const Module_Absence = (props) => {
//console.log(eventInfo);
return (
<>
<b>{eventInfo.timeText}</b><br />
{eventInfo.event.extendedProps.code_session && <i>{eventInfo.event.extendedProps.code_session}</i>}
<div style={{ width: '100%', float: 'left', height: '30px' }}> <div style={{ width: '65%', float: 'left' }}> <b> {eventInfo.timeText}</b> </div>
<div style={{ width: '30%', float: 'right', textAlign: 'right', paddingLeft: '10px' }}>
{eventInfo.event.extendedProps.justified && eventInfo.event.extendedProps.justified === "true" &&
<nav style={{ background: '#c2f0bc', borderRadius: '20rem', textAlign: 'center', height: '20px', width: '20px', width: '20px' }}> <FlagTriangleRight size={14} style={{ color: 'green' }} /> </nav>}
{eventInfo.event.extendedProps.justified && eventInfo.event.extendedProps.justified !== "true" &&
<nav style={{ background: '#f57373', borderRadius: '20rem', textAlign: 'center', height: '20px', width: '20px', width: '20px' }}> <FlagTriangleRight size={14} style={{ color: 'red' }} /> </nav>}
</div>
</div>
{eventInfo.event.title && <> <i>{eventInfo.event.title}</i> <br /></>}
{eventInfo.event.extendedProps.code_session && <> <i>{eventInfo.event.extendedProps.code_session}</i> <br /></>}
</>
)
};
@ -876,11 +888,15 @@ const Module_Absence = (props) => {
}, [attendee_email])
const [local_heure_non_justifie, setlocal_heure_non_justifie] = useState();
const [Get_ENT_Apprenant_Total_Heure_api, setGet_ENT_Apprenant_Total_Heure_api] = useState();
const [Get_ENT_Apprenant_Total_Heure_message, setGet_ENT_Apprenant_Total_Heure_message] = useState();
const [Get_ENT_Apprenant_Total_Heure_result, setGet_ENT_Apprenant_Total_Heure_result] = useState();
function Get_ENT_Apprenant_Total_Heure(event) {
setlocal_heure_non_justifie();
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
@ -896,13 +912,14 @@ const Module_Absence = (props) => {
axios.post(myurl, form).then(res => {
//console.log(" In Get_ENT_Apprenant_Total_Heure res.data.status = " + res.data.status);
console.log(" In Get_ENT_Apprenant_Total_Heure res.data.message r_class = " + res.data.message);
//console.log(" In Get_ENT_Apprenant_Total_Heure res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_ENT_Apprenant_Total_Heure_api("true");
setGet_ENT_Apprenant_Total_Heure_result(res.data.message);
setlocal_heure_non_justifie(JSON.parse(res.data.message).total_heure_absence_non_justifie)
}
else if (String(res.data.status) === String("Err_Connexion")) {
@ -985,6 +1002,7 @@ const Module_Absence = (props) => {
form.append("token", stored_cookie);
form.append("_id", p_detail_event_id);
form.append("inscription_id", props.inscription_id);
form.append("apprenant_id", props.apprenant_id);
form.append("related_collection", props.related_collection);
form.append("event_title", new_title);
@ -1322,19 +1340,19 @@ const Module_Absence = (props) => {
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
@ -1485,8 +1503,15 @@ const Module_Absence = (props) => {
</Dialog>
<h3 style={{ fontFamily: 'DM Sans', fontSize:'26px', width:'100%', textAlign:"center" }}> Absences - {Get_ENT_Apprenant_Total_Heure_result && <font style={{ "color": "orange", "textAlign": "center" }}>
{JSON.parse(Get_ENT_Apprenant_Total_Heure_result).total_heure} heure(s) </font>}</h3>
{local_heure_non_justifie && local_heure_non_justifie.length > 0 && <h3 style={{ fontFamily: 'DM Sans', fontSize: '26px', width: '100%', textAlign: "center" }}> Absences - {Get_ENT_Apprenant_Total_Heure_result &&
<font style={{ "color": "orange", "textAlign": "center" }}>
{JSON.parse(Get_ENT_Apprenant_Total_Heure_result).total_heure} heure(s) <font style={{ "color": "red", "textAlign": "center" }} > dont {JSON.parse(Get_ENT_Apprenant_Total_Heure_result).total_heure_absence_non_justifie} non justifiée (s) </font> </font>}
</h3>}
{!local_heure_non_justifie || local_heure_non_justifie.length <= 0 && <h3 style={{ fontFamily: 'DM Sans', fontSize: '26px', width: '100%', textAlign: "center" }}> Absences - {Get_ENT_Apprenant_Total_Heure_result &&
<font style={{ "color": "orange", "textAlign": "center" }}>
{JSON.parse(Get_ENT_Apprenant_Total_Heure_result).total_heure} heure(s) </font>}
</h3>}
<div style={{ "textAlign": "right", "float": "right", "width": "100%" }}>
Affichage : <nav className="mode_affichage" onClick={func_display_planning_view}> <FcPlanner /> planning </nav>
@ -1522,7 +1547,7 @@ const Module_Absence = (props) => {
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
hiddenDays={[0]}
/>
@ -1704,4 +1729,19 @@ width: 100%;
.fc-event-main{
word-wrap: break-word;
}
.fc .fc-timegrid-slot {
height: 35px !important;
}
.fc .fc-timegrid-slot-label-cushion {
font-size: 13px;
font-weight: 700;
color: #475569;
}
.fc .fc-timegrid-axis-cushion {
font-size: 13px;
color: #64748b;
}
`;

View File

@ -15,7 +15,7 @@ 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 { FlagTriangleRight } from 'lucide-react';
import moment from "moment";
import Box from '@mui/material/Box';
@ -200,7 +200,6 @@ const Module_ENT_Absence = (props) => {
'start': String(JSON.parse(obj).event_start),
'end': String(JSON.parse(obj).event_end),
'id': String(JSON.parse(obj)._id),
'type': String(JSON.parse(obj).event_type),
'justified': String(JSON.parse(obj).justified),
'session_id': String(JSON.parse(obj).session_id),
@ -416,12 +415,14 @@ const Module_ENT_Absence = (props) => {
})
}
const [local_heure_non_justifie, setlocal_heure_non_justifie] = useState();
const [Get_ENT_Apprenant_Total_Heure_Absence_api, setGet_ENT_Apprenant_Total_Heure_Absence_api] = useState();
const [Get_ENT_Apprenant_Total_Heure_Absence_message, setGet_ENT_Apprenant_Total_Heure_Absence_message] = useState();
const [Get_ENT_Apprenant_Total_Heure_Absence_result, setGet_ENT_Apprenant_Total_Heure_Absence_result] = useState();
function Get_ENT_Apprenant_Total_Heure_Absence(event) {
setlocal_heure_non_justifie();
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
form.append("token", stored_cookie);
@ -434,13 +435,15 @@ const Module_ENT_Absence = (props) => {
axios.post(myurl, form).then(res => {
//console.log(" In Get_ENT_Apprenant_Total_Heure_Absence res.data.status = " + res.data.status);
console.log(" In Get_ENT_Apprenant_Total_Heure_Absence res.data.message r_class = " + res.data.message);
// console.log(" In Get_ENT_Apprenant_Total_Heure_Absence res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setGet_ENT_Apprenant_Total_Heure_Absence_api("true");
setGet_ENT_Apprenant_Total_Heure_Absence_result(res.data.message);
setlocal_heure_non_justifie(JSON.parse(res.data.message).total_heure_absence_non_justifie)
}
else if (String(res.data.status) === String("Err_Connexion")) {
@ -702,8 +705,21 @@ const Module_ENT_Absence = (props) => {
//console.log(eventInfo);
return (
<>
<b>{eventInfo.timeText}</b><br />
{eventInfo.event.extendedProps.code_session && <i>{eventInfo.event.extendedProps.code_session}</i>}
<div style={{ width: '100%', float: 'left', height: '30px' }}> <div style={{ width: '65%', float: 'left' }}> <b> {eventInfo.timeText}</b> </div>
<div style={{ width: '30%', float: 'right', textAlign: 'right', paddingLeft: '10px' }}>
{eventInfo.event.extendedProps.justified && eventInfo.event.extendedProps.justified === "true" &&
<nav style={{ background: '#c2f0bc', borderRadius: '20rem', textAlign: 'center', height: '20px', width: '20px', width: '20px' }}> <FlagTriangleRight size={14} style={{ color: 'green' }} /> </nav>}
{eventInfo.event.extendedProps.justified && eventInfo.event.extendedProps.justified !== "true" &&
<nav style={{ background: '#f57373', borderRadius: '20rem', textAlign: 'center', height: '20px', width: '20px', width: '20px' }}> <FlagTriangleRight size={14} style={{ color: 'red' }} /> </nav>}
</div>
</div>
{eventInfo.event.title && <> <i>{eventInfo.event.title}</i> <br /></>}
</>
)
};
@ -1425,11 +1441,21 @@ const Module_ENT_Absence = (props) => {
</DialogActions>}
</Dialog>
<h3 style={{ fontFamily: 'DM Sans' }}> Absences - {Get_ENT_Apprenant_Total_Heure_Absence_result && <font style={{ "color": "orange", "textAlign": "center" }}> {JSON.parse(Get_ENT_Apprenant_Total_Heure_Absence_result).total_heure_absence} heure(s) </font>}
</h3>
{local_heure_non_justifie && local_heure_non_justifie.length > 0 && <h3 style={{ fontFamily: 'DM Sans', fontSize: '26px', width: '100%', textAlign: "center" }}> Absences - {Get_ENT_Apprenant_Total_Heure_Absence_result &&
<font style={{ "color": "orange", "textAlign": "center" }}>
{JSON.parse(Get_ENT_Apprenant_Total_Heure_Absence_result).total_heure_absence} heure(s) <font style={{ "color": "red", "textAlign": "center" }} > dont {JSON.parse(Get_ENT_Apprenant_Total_Heure_Absence_result).total_heure_absence_non_justifie} non justifiée (s) </font> </font>}
</h3>}
{!local_heure_non_justifie || local_heure_non_justifie.length <= 0 && <h3 style={{ fontFamily: 'DM Sans', fontSize: '26px', width: '100%', textAlign: "center" }}> Absences - {Get_ENT_Apprenant_Total_Heure_Absence_result &&
<font style={{ "color": "orange", "textAlign": "center" }}>
{JSON.parse(Get_ENT_Apprenant_Total_Heure_Absence_result).total_heure_absence} heure(s) </font>}
</h3>}
<div style={{ "textAlign": "right", "float": "right", "width": "100%" }}>
Affichage : <nav className="mode_affichage" onClick={func_display_planning_view}> <FcPlanner /> planning </nav>
@ -1468,6 +1494,7 @@ const Module_ENT_Absence = (props) => {
eventContent={renderEventContent}
eventClick={handleEventClick}
editable={false}
hiddenDays={[0]}
/>
</div>

View File

@ -453,9 +453,9 @@ const Module_Email_Management = (props) => {
}
}
console.log(" ### form = ",form)
//console.log(" ### form = ", form)
// return;
// return;
setLoading(true);
@ -503,7 +503,7 @@ const Module_Email_Management = (props) => {
}
useEffect(() => {
Get_Partner_List_SendEmail_Document("SENDEMAIL_MODELE");
@ -764,23 +764,23 @@ const Module_Email_Management = (props) => {
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
}
/>}
</div>
@ -924,8 +924,8 @@ const Module_Email_Management = (props) => {
height: 400,
menubar: true,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace',
'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'code', 'help', 'wordcount',
'lists', 'link', 'image', 'charmap', 'preview', 'anchor', 'searchreplace', 'visualblocks',
],
@ -1024,7 +1024,7 @@ const Module_Email_Management = (props) => {
</div>
<div style={{ "width": "45%", "float": "right" }}>
<button
className="gest_bton_popup"
className="gest_bton_popup_annuler"
onClick={() => {
//console.log('modal closed ');
close();
@ -1068,6 +1068,8 @@ const Module_Email_Management = (props) => {
</div>
<div className="div_row">
<div className="div_row_gauche">
<Popup

View File

@ -792,10 +792,10 @@ registerLocale('fr', fr);
formData.append("apprenant_id", props.apprenant_id);
//formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie);
setLoading(true);
fetch(
process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_List_object_owner_collection_Stored_Files/",
{

View File

@ -21,12 +21,13 @@ import { FcInfo } from "react-icons/fc";
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import parse from 'html-react-parser';
import FormControlLabel from '@mui/material/FormControlLabel';
import { FcAcceptDatabase, } from "react-icons/fc";
import { format } from 'date-fns'
import InputAdornment from '@mui/material/InputAdornment';
import { AiFillCloseCircle, AiOutlineConsoleSql } from "react-icons/ai";
import Box from '@mui/material/Box';
import AttachFileIcon from '@mui/icons-material/AttachFile';
import Modules_ENT_Mes_Documents from "./Modules_ENT_Mes_Documents";
import { CiTrash } from "react-icons/ci";
@ -512,26 +513,31 @@ const Module_Ent_Mes_Formations = (props) => {
const [Getall_Sequence_Of_Session_api, setGetall_Sequence_Of_Session_api] = useState();
const [Getall_Sequence_Of_Session_message, setGetall_Sequence_Of_Session_message] = useState();
const [Getall_Sequence_Of_Session_result, setGetall_Sequence_Of_Session_result] = useState();
function Getall_Sequence_Of_Session(local_session_id, local_associated_inscription_id) {
const [Getall_Sequence_Of_Session_result, setGetall_Sequence_Of_Session_result] = useState([]);
function Getall_Sequence_Of_Session(local_session_id, local_inscription_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysych');
const stored_apprenant_id = getCookie('tokenmysychapprenant');
form.append("token", stored_cookie);
form.append("session_id", local_session_id);
form.append("apprenant_id", props.apprenant_id);
if (local_associated_inscription_id)
form.append("inscription_id", local_associated_inscription_id);
else
form.append("inscription_id", selected_inscription_id);
form.append("apprenant_id", stored_apprenant_id);
if (String(local_session_id).length > 3) {
form.append("session_id", local_session_id);
}
if (String(local_inscription_id).length > 3) {
form.append("inscription_id", local_inscription_id);
}
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Ent_Student_Session_Sequence_List/";
setLoading(true);
axios.post(myurl, form).then(res => {
// console.log(" In Getall_Sequence_Of_Session res.data.status = " + res.data.status);
// console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
//console.log(" In Getall_Sequence_Of_Session res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
@ -545,7 +551,6 @@ const Module_Ent_Mes_Formations = (props) => {
var new_data2 = [];
const new_data = res.data.message.map((x) => {
//---
var localid = JSON.parse(x)._id; // on donne volontairement a l'id la valeur de '_id'
var local_id = JSON.parse(x)._id;
@ -559,7 +564,17 @@ const Module_Ent_Mes_Formations = (props) => {
var local_session_id = JSON.parse(x).session_id;
var local_session_comment = JSON.parse(x).commentaire;
var local_mode_animation = JSON.parse(x).mode_animation;
var local_session_color = "#3788d8";
var local_obligatoire = JSON.parse(x).obligatoire;
var local_session_color = JSON.parse(x).grp_apprenant_color;
var local_session_grp_code = JSON.parse(x).grp_apprenant_code;
var local_liste_groupe_code = JSON.parse(x).liste_groupe_code;
var local_domaine_competence_id = JSON.parse(x).domaine_competence_id;
var local_sequence_code_couleur_setup = JSON.parse(x).sequence_code_couleur_setup;
var local_type = JSON.parse(x).type;
@ -573,17 +588,40 @@ const Module_Ent_Mes_Formations = (props) => {
local_session_color = "#4ea860";
}
else if (JSON.parse(x).sequence_code_couleur_setup && JSON.parse(x).sequence_code_couleur_setup === "grp_apprenant") {
// On affiche les couleurs par couleur de bloc de compétence aux quel est rattaché l'UE
local_session_color = JSON.parse(x).grp_apprenant_color
} else {
local_session_color = "#3573CB"
}
if (local_type === "eval" && couleur_seq && couleur_seq.length > 0) {
local_session_color = couleur_seq;
}
if (JSON.parse(x).sequence_code_couleur_setup && JSON.parse(x).sequence_code_couleur_setup === "ue") {
// On affiche les couleurs par couleur de bloc de compétence aux quel est rattaché l'UE
local_session_color = JSON.parse(x).domaine_competence_color
}
var local_obligatoire = JSON.parse(x).obligatoire;
var local_type = JSON.parse(x).type;
var local_last_emargement_request_date = ""
if (JSON.parse(x).last_emargement_request_date) {
local_last_emargement_request_date = JSON.parse(x).last_emargement_request_date;
var local_session_ue_id = JSON.parse(x).ue_id;
var local_session_ue_titre = JSON.parse(x).ue_titre;
var local_session_ue_code = JSON.parse(x).ue_code;
var local_session_grp_apprenant_id = JSON.parse(x).grp_apprenant_id;
var local_session_ue_planif_line_id = JSON.parse(x).unite_enseignement_planif_id;
var local_session_grp_code = JSON.parse(x).grp_apprenant_code;
var local_mode_animation = JSON.parse(x).mode_animation;
var local_liste_groupe_code = JSON.parse(x).liste_groupe_code;
var local_tab_grp_apprenant_ids = []
if (JSON.parse(x).tab_grp_apprenant_ids) {
local_tab_grp_apprenant_ids = JSON.parse(x).tab_grp_apprenant_ids
}
var local_tab_ressource_humaine = ""
@ -592,17 +630,13 @@ const Module_Ent_Mes_Formations = (props) => {
}
var local_tab_ressource_materiel = ""
if (JSON.parse(x).tab_ressource_materiel) {
local_tab_ressource_materiel = JSON.parse(x).tab_ressource_materiel;
}
// console.log(" ## local_type=== ", local_type)
//console.log(" ## local_session_color=== ", local_session_color)
// console.log(" ## ENT local_session_color = ", local_session_color)
//---
var node = {
"_id": localid,
@ -611,14 +645,29 @@ const Module_Ent_Mes_Formations = (props) => {
"start": local_start,
"end": local_end,
"local_mode_animation": local_mode_animation,
"local_obligatoire": local_obligatoire,
"local_agenda": local_agenda,
"local_objectif": local_objectif,
"local_comment": local_session_comment,
"color": local_session_color,
"type": local_type,
"local_ue_id": local_session_ue_id,
"local_ue_titre": local_session_ue_titre,
"local_ue_code": local_session_ue_code,
"local_domaine_competence_id": local_domaine_competence_id,
"local_sequence_code_couleur_setup": local_sequence_code_couleur_setup,
"local_grp_apprenant_id": local_session_grp_apprenant_id,
"local_ue_planif_line_id": local_session_ue_planif_line_id,
"tab_grp_apprenant_ids": local_tab_grp_apprenant_ids,
"liste_groupe_code": local_liste_groupe_code,
"local_tab_ressource_humaine": local_tab_ressource_humaine.toString(),
"local_tab_ressource_materiel": local_tab_ressource_materiel.toString(),
"local_obligatoire": local_obligatoire,
};
new_data2.push(node);
@ -627,7 +676,7 @@ const Module_Ent_Mes_Formations = (props) => {
if (new_data2.length > 0) {
setGetall_Sequence_Of_Session_result_planning_view(new_data2);
// console.log(" ### new_data2 = ", new_data2);
// console.log(" ### ENT - new_data2 = ", new_data2);
}
@ -652,6 +701,7 @@ const Module_Ent_Mes_Formations = (props) => {
}
const New_Option_mode_animation = [
{ "id": "1", "label": "Distanciel", "value": "1" },
{ "id": "2", "label": "Hybride", "value": "2" },
@ -896,6 +946,7 @@ const Module_Ent_Mes_Formations = (props) => {
const [p_detail_event_id, setp_detail_event_id] = useState();
const [p_detail_sequence_title, setp_detail_sequence_title] = useState();
const [p_detail_sequence_id, setp_detail_sequence_id] = useState();
const [p_detail_sequence_comment, setp_detail_sequence_comment] = useState();
const [p_detail_sequence_agenda, setp_detail_sequence_agenda] = useState();
const [p_detail_sequence_objectif, setp_detail_sequence_objectif] = useState();
@ -903,6 +954,10 @@ const Module_Ent_Mes_Formations = (props) => {
const [sequence_endDate, setsequence_endDate] = useState(new Date());
const [absence_motif, setabsence_motif] = useState("");
const [absence_comment, setabsence_comment] = useState("");
const [selected_detail_sequence_title, setselected_detail_sequence_title] = useState();
const [selected_detail_sequence_comment, setselected_detail_sequence_comment] = useState();
const [selected_sequence_startDate, setselected_sequence_startDate] = useState(new Date());
@ -923,7 +978,12 @@ const Module_Ent_Mes_Formations = (props) => {
const Dialog_DIALOG_AGENDA_handleClose_buton = () => {
setDialog_DIALOG_AGENDA_open(false);
setabsence_motif("");
setabsence_comment("");
setdeclare_absence("")
settab_email_pieces_jointes_result([])
};
const New_Option_Type_Event = [
@ -942,20 +1002,33 @@ const Module_Ent_Mes_Formations = (props) => {
const handleEventClick = (arg) => {
//console.log(" ## ARG = ", arg.event)
// console.log(" ## ARG = ", arg.event)
// console.log(" ## arg.event.id = ", arg.event.id)
setabsence_motif("");
setabsence_comment("");
setdeclare_absence("")
settab_email_pieces_jointes_result([])
setp_detail_sequence_title(arg.event.title)
setsequence_startDate(arg.event.start)
setsequence_endDate(arg.event.end)
setp_detail_event_id(arg.event.id);
if (arg.event.extendedProps.type) {
setp_detail_event_type(arg.event.extendedProps.type);
}
else
setp_detail_event_type("");
if (arg.event.extendedProps._id) {
setp_detail_sequence_id(arg.event.extendedProps._id);
}
else
setp_detail_sequence_id("");
if (arg.event.extendedProps.local_comment) {
setp_detail_sequence_comment(arg.event.extendedProps.local_comment);
@ -1551,9 +1624,6 @@ const Module_Ent_Mes_Formations = (props) => {
const [sessions_file_change_1_convention_api, setsessions_file_change_1_convention_api] = useState();
const [sessions_file_change_1_convention_result, setsessions_file_change_1_convention_result] = useState();
const [sessions_file_change_1_convention_message, setsessions_file_change_1_convention_message] = useState();
const sessions_file_change_1_convention = event => {
@ -1563,19 +1633,18 @@ const Module_Ent_Mes_Formations = (props) => {
if (file_type !== "application/pdf") {
// alert("Le fichier n'est pas de type PDF");
// alert("Le fichier n'est pas de type PDF");
setdisplay_alert_mysy("1");
setalert_message("Le fichier n'est pas de type PDF");
setalert_type("error");
return;
}
if (file_size > 10000000) {
// alert("Le fichier ne doit pas depasser un 1 Méga octets");
// alert("Le fichier ne doit pas depasser un 1 Méga octets");
// console.log("Le fichier ne doit pas depasser un 1 Méga octets");
setdisplay_alert_mysy("1");
@ -1589,9 +1658,8 @@ const Module_Ent_Mes_Formations = (props) => {
var new_tmp = [];
if (tab_convention_pieces_jointes_result && tab_convention_pieces_jointes_result.length > 0) {
tab_convention_pieces_jointes_result.map((x) => {
if (tab_email_pieces_jointes_result && tab_email_pieces_jointes_result.length > 0) {
tab_email_pieces_jointes_result.map((x) => {
new_tmp.push(x);
});
@ -1600,14 +1668,13 @@ const Module_Ent_Mes_Formations = (props) => {
new_tmp.push(event.target.files[0])
settab_convention_pieces_jointes_result(new_tmp);
settab_email_pieces_jointes_result(new_tmp);
//console.log(" tab_convention_pieces_jointes_result = ", tab_convention_pieces_jointes_result)
return;
};
const [file_2_name, setfile_2_name] = useState();
const [sessions_file_change_2_api, setsessions_file_change_2_api] = useState();
@ -1816,12 +1883,14 @@ const Module_Ent_Mes_Formations = (props) => {
formData.append("token", stored_cookie);
formData.append("object_owner_collection", "inscription");
formData.append("object_owner_id", local_employee_id);
formData.append("object_owner_id", selected_inscription_id);
formData.append("apprenant_id", props.apprenant_id);
//formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie);
console.log( "### formData = ", formData)
setLoading(true);
fetch(
@ -1914,6 +1983,122 @@ const Module_Ent_Mes_Formations = (props) => {
const [tuteur_apprenant_selected_nom, settuteur_apprenant_selected_nom] = useState("");
const [tuteur_apprenant_selected_prenom, settuteur_apprenant_selected_prenom] = useState("");
const [tab_email_pieces_jointes_result, settab_email_pieces_jointes_result] = useState([]);
function Delete_Email_Attached_Doc(event) {
var doc_to_del_name = event.target.id;
const myArray = tab_email_pieces_jointes_result;
console.log(" Suppression du fichier : ", doc_to_del_name)
let new_myArray = myArray.filter(file => file.name !== String(doc_to_del_name));
//console.log(" new_myArray = ", new_myArray);
var new_tab = []
for (let i = 0; i < new_myArray.length; i++) {
new_tab.push(new_myArray[i]);
}
settab_email_pieces_jointes_result(new_tab);
}
const [include_client, setinclude_client] = useState(false);
const [include_tuteur, setinclude_tuteur] = useState(false);
const [store_file_in_ent, setstore_file_in_ent] = useState(false);
const handleChange_file_to_ent = (event) => {
if (event.currentTarget.checked) {
setstore_file_in_ent(true);
}
else {
setstore_file_in_ent(false);
}
}
const New_Option_Absence_Raison = [
{ "id": "transport", "label": "Transport", "value": "transport" },
{ "id": "sante", "label": "Santé", "value": "sante" },
{ "id": "autre", "label": "Autre", "value": "passport" },
{ "id": "", "label": "", "value": "" },
]
const [Add_ENT_Absence_Etudiant_api, setAdd_ENT_Absence_Etudiant_api] = useState();
const [Add_ENT_Absence_Etudiant_message, setAdd_ENT_Absence_Etudiant_message] = useState();
const [Add_ENT_Absence_Etudiant_result, setAdd_ENT_Absence_Etudiant_result] = useState();
const Add_ENT_Absence_Etudiant = event => {
const stored_cookie = getCookie('tokenmysych');
const stored_apprenant_id = getCookie('tokenmysychapprenant');
var form = new FormData();
form.append("token", stored_cookie);
form.append("apprenant_id", props.apprenant_id);
form.append("session_id", selected_session_id);
form.append("sequence_id", p_detail_sequence_id);
form.append("inscription_id", selected_inscription_id);
form.append("raison", absence_motif);
form.append("comment", absence_comment);
for (let i = 0; i < tab_email_pieces_jointes_result.length; i++) {
form.append('File', tab_email_pieces_jointes_result[i]);
}
//console.log(" form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Create_Ent_Student_Absence/";
setLoading(true);
axios.post(myurl, form).then(res => {
//console.log(" In Add_ENT_Absence_Etudiant res.data.status = " + res.data.status);
//console.log(" In Add_ENT_Absence_Etudiant res.data.message r_class = " + res.data.message);
setLoading(false);
if (String(res.data.status) === String("true")) {
setAdd_ENT_Absence_Etudiant_api("true");
setAdd_ENT_Absence_Etudiant_result(res.data.message);
// alert(res.data.message);
setdisplay_alert_mysy("1");
setalert_message(res.data.message);
setalert_type("success");
Dialog_DIALOG_AGENDA_handleClose_buton();
}
else {
setAdd_ENT_Absence_Etudiant_api("false");
setAdd_ENT_Absence_Etudiant_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('UpdateStagiaireData : Not good man :( Add_ENT_Absence_Etudiant = ' + error);
setAdd_ENT_Absence_Etudiant_api("false");
setdisplay_alert_mysy("1");
setalert_message(" Impossible d'envoyer la demande d'absence");
setalert_type("error");
})
}
const [declare_absence, setdeclare_absence] = useState("0");
return (
<div className="module_ent_mes_formations" >
@ -1954,6 +2139,8 @@ const Module_Ent_Mes_Formations = (props) => {
position: 'absolute',
top: '7rem',
margin: "2px",
maxWidth: 'unset',
width: '40rem'
},
}}
hideBackdrop={true}
@ -1969,47 +2156,25 @@ const Module_Ent_Mes_Formations = (props) => {
>
<DialogTitle style={{ cursor: 'move', fontFamily: "DM Sans" }} id="draggable-dialog-title" >MySy Information</DialogTitle>
<DialogContent className="DialogContent_width">
<DialogContent className="DialogContent_width" style={{ "width": "40rem" }}>
<DialogContentText>
{Dialog_DIALOG_AGENDA_message}
</DialogContentText>
<nav style={{ "float": "left", "width": "100%" }}>
<div className="session_caract_Dialog" style={{ width: '50%' }}>
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Type </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
<div className="session_caract_Dialog" > Animation <br />
name="event_dialog_event_type"
id="event_dialog_event_type"
fullWidth
value={p_detail_event_type}
disabled={true}
/>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
</nav>
</div>
name="event_dialog_event_type"
id="event_dialog_event_type"
fullWidth
value={p_detail_mode_animation_label}
disabled={true}
/>
</div>
<div className="session_caract_Dialog" style={{ width: '50%' }}>
<nav style={{ "float": "left", "width": "30%", "paddingTop": "15px" }}> Animation </nav>
<nav style={{ "float": "right", "width": "65%" }}>
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
name="event_dialog_event_type"
id="event_dialog_event_type"
fullWidth
value={p_detail_mode_animation_label}
disabled={true}
/>
</nav>
</div>
</nav>
<div className="session_caract_Dialog" > Titre
<TextField
@ -2066,7 +2231,7 @@ const Module_Ent_Mes_Formations = (props) => {
</div>
</nav>
<div className="session_caract_Dialog_comment_2_lines" > Agenda
{declare_absence !== "1" && <div className="session_caract_Dialog_comment_2_lines" > Agenda
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2082,9 +2247,9 @@ const Module_Ent_Mes_Formations = (props) => {
/>
</div>
</div>}
<div className="session_caract_Dialog_comment_2_lines" > Objectif
{declare_absence !== "1" && <div className="session_caract_Dialog_comment_2_lines" > Objectif
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
@ -2100,24 +2265,215 @@ const Module_Ent_Mes_Formations = (props) => {
disabled={true}
/>
</div>
</div>}
<div className="session_caract_Dialog_comment_2_lines" > Commentaire
<TextField
sx={{ '& legend': { display: 'none' }, '& fieldset': { top: 0 }, }}
{declare_absence !== "1" && <div className="div_row">
<div className="div_row_gauche">
&nbsp;
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={(event) => {
setabsence_motif("");
setabsence_comment("");
setdeclare_absence("")
settab_email_pieces_jointes_result([])
name="event_dialog_comment"
id="event_dialog_comment"
setdeclare_absence("1");
fullWidth
value={p_detail_sequence_comment}
multiline
minRows={2}
maxRows={2}
rows={2}
disabled={true}
/>
</div>
}} className="bton_enreg_dialog" >Déclater une absence</Button>
</div>
</div>}
{declare_absence === "1" && <>
<div style={{ width: '100%' }}>
</div>
<div className="session_caract_Dialog" > Motif <br />
{New_Option_Absence_Raison && New_Option_Absence_Raison.length > 0 &&
<Autocomplete
disablePortal
name="detail_classe"
id="detail_classe"
// className="disabled_style"
//className="disabled_style enable_style"
// options={New_Getall_Partner_Session_Reduice_Fields_result}
options={New_Option_Absence_Raison}
fullWidth
onChange={(event, value) => {
if (value && value.value) {
setabsence_motif(value.value);
} else {
setabsence_motif("");
}
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
}
/>
}
</div>
<div className="session_caract_Dialog" > <b> Commentaire </b>
<TextareaAutosize
name="absence_motif"
id="absence_motif"
aria-label="minimum height"
minRows={3}
maxRows={3}
maxLength={255}
//placeholder="Minimum 3 rows"
style={{
border: "1px solid #e8eef6", width: '99%', padding: '2px',
maxHeight: '4rem', height: '4rem', minHeight: '4rem', marginBottom: '1rem',
fontFamily: 'DM Sans'
}}
value={absence_comment}
onChange={(e) => {
setabsence_comment(e.target.value);
}}
/>
</div>
<div>
<div className="div_row" style={{ "padding": "5px" }}>
<div style={{ "fontSize": "12px" }}>
<label htmlFor="upload_convention_file">
<input
style={{ display: "none" }}
id="upload_convention_file"
name="upload_convention_file"
type="file"
onChange={sessions_file_change_1_convention}
/>
<Fab
color="secondary"
size="small"
component="span"
aria-label="add"
variant="extended"
>
<IoMdAddCircle /> <nav style={{ "fontSize": "12px" }}> Ajouter un fichier </nav>
</Fab>
</label>
</div>
</div>
{tab_email_pieces_jointes_result && <div className="div_row" style={{ "padding": "5px" }}>
<div className="div_row">
Liste des pièces jointes <br />
{tab_email_pieces_jointes_result && <div className="div_row" style={{ "padding": "5px", "border": "None" }}>
<div className="div_row" style={{ "padding": "5px", "border": "None", "marginBottom": "1px" }}>
<div className="div_row" style={{ "padding": "5px", "border": "None" }}>
{tab_email_pieces_jointes_result && tab_email_pieces_jointes_result.map((val) => (
<div className="div_row_list_pj" >
<nav name={((val).name)}
id={((val).name)}> <i> <AttachFileIcon />{((val).name)} </i> <font style={{ "color": "green", }}
name={((val).name)}
id={((val).name)} onClick={"Download_one_attached_document"}> &nbsp;</font></nav>
<Popup
trigger={
<nav style={{ "color": "red", "cursor": "pointer" }} > Supprimer</nav>
}
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">
{' '}
Confirmer <font color="red"> la suppression </font> de la pièce jointe. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
Delete_Email_Attached_Doc(event);
close();
}}
name={((val).name)} id={((val).name)}
> 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>
))}
</div>
</div>
</div>}
</div>
</div>}
</div>
</>}
</DialogContent>
@ -2132,14 +2488,16 @@ const Module_Ent_Mes_Formations = (props) => {
<CancelPresentationIcon />
</IconButton>
<div className="div_row">
{declare_absence === "1" && <div className="div_row">
<div className="div_row_gauche">
&nbsp;
</div>
<div className="div_row_droite" style={{ "textAlign": 'center' }}>
<Button onClick={Dialog_DIALOG_AGENDA_handleClose_buton} className="bton_annule_dialog" >Fermer</Button>
<Button onClick={(event) => {
Add_ENT_Absence_Etudiant();
}} className="bton_enreg_dialog" > Envoyer l'absence </Button>
</div>
</div>
</div>}
</DialogActions>
@ -2186,19 +2544,19 @@ const Module_Ent_Mes_Formations = (props) => {
}}
renderInput={(params) => <TextField {...params} label="" placeholder="Choisir une option"
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
sx={{
"& .MuiOutlinedInput-root": {
"& fieldset": {
border: "solid #e8eef6 1px;",
},
"&:hover fieldset": {
border: "solid #e8eef6 1px;",
},
"&.Mui-focused fieldset": {
border: "solid #e8eef6 1px;",
},
},
}}
inputProps={{ ...params.inputProps, style: { fontSize: 12, height: "1.4rem" } }}
/>
@ -2579,7 +2937,6 @@ const Module_Ent_Mes_Formations = (props) => {
eventClick={handleEventClick}
editable={false}
hiddenDays={[0]}
/>
</div>
@ -2884,6 +3241,7 @@ const Module_Ent_Mes_Formations = (props) => {
<Modules_ENT_Mes_Documents
apprenant_id={props.apprenant_id}
class_id={selected_id}
inscription_id={selected_inscription_id}
/>
</div>}
@ -2895,6 +3253,7 @@ const Module_Ent_Mes_Formations = (props) => {
<Module_ENT_Absence attendee_email={props.email_apprenant}
apprenant_id={props.apprenant_id}
class_id={selected_id} />
</div>}
@ -3036,10 +3395,6 @@ width: 100%;
.fc-event-main{
word-wrap: break-word;
}
.fc-event-main{
word-wrap: break-word;
}
.fc .fc-timegrid-slot {

View File

@ -199,7 +199,7 @@ const Module_Ent_Mon_Planning = (props) => {
const [sequence_endDate, setsequence_endDate] = useState(new Date());
const renderEventContent = (eventInfo) => {
//console.log(eventInfo);
console.log(eventInfo);
var local_grp = []
if (eventInfo.event.extendedProps.tab_grp_apprenant_ids) {
@ -552,10 +552,7 @@ const Module_Ent_Mon_Planning = (props) => {
local_session_color = "#4ea860";
}
if (JSON.parse(x).sequence_code_couleur_setup && JSON.parse(x).sequence_code_couleur_setup === "ue") {
// On affiche les couleurs par couleur de bloc de compétence aux quel est rattaché l'UE
local_session_color = JSON.parse(x).domaine_competence_color
}
else if (JSON.parse(x).sequence_code_couleur_setup && JSON.parse(x).sequence_code_couleur_setup === "grp_apprenant") {
// On affiche les couleurs par couleur de bloc de compétence aux quel est rattaché l'UE
local_session_color = JSON.parse(x).grp_apprenant_color
@ -567,6 +564,10 @@ const Module_Ent_Mon_Planning = (props) => {
if (local_type === "eval" && couleur_seq && couleur_seq.length > 0) {
local_session_color = couleur_seq;
}
if (JSON.parse(x).sequence_code_couleur_setup && JSON.parse(x).sequence_code_couleur_setup === "ue") {
// On affiche les couleurs par couleur de bloc de compétence aux quel est rattaché l'UE
local_session_color = JSON.parse(x).domaine_competence_color
}
var local_type = JSON.parse(x).type;
@ -576,8 +577,7 @@ const Module_Ent_Mon_Planning = (props) => {
var local_session_ue_code = JSON.parse(x).ue_code;
var local_session_grp_apprenant_id = JSON.parse(x).grp_apprenant_id;
var local_session_ue_planif_line_id = JSON.parse(x).unite_enseignement_planif_id;
var local_session_color = JSON.parse(x).grp_apprenant_color;
var local_session_ue_planif_line_id = JSON.parse(x).unite_enseignement_planif_id;
var local_session_grp_code = JSON.parse(x).grp_apprenant_code;
var local_mode_animation = JSON.parse(x).mode_animation;
@ -586,10 +586,21 @@ const Module_Ent_Mon_Planning = (props) => {
var local_tab_grp_apprenant_ids = []
if (JSON.parse(x).tab_grp_apprenant_ids) {
local_tab_grp_apprenant_ids = JSON.parse(x).tab_grp_apprenant_ids
} else {
}
var local_tab_ressource_humaine = ""
if (JSON.parse(x).tab_ressource_humaine) {
local_tab_ressource_humaine = JSON.parse(x).tab_ressource_humaine;
}
var local_tab_ressource_materiel = ""
if (JSON.parse(x).tab_ressource_materiel) {
local_tab_ressource_materiel = JSON.parse(x).tab_ressource_materiel;
}
console.log(" ## ENT local_session_color = ", local_session_color)
//---
var node = {
"_id": localid,
@ -618,6 +629,9 @@ const Module_Ent_Mon_Planning = (props) => {
"tab_grp_apprenant_ids": local_tab_grp_apprenant_ids,
"liste_groupe_code": local_liste_groupe_code,
"local_tab_ressource_humaine": local_tab_ressource_humaine.toString(),
"local_tab_ressource_materiel": local_tab_ressource_materiel.toString(),
};
new_data2.push(node);
@ -626,7 +640,7 @@ const Module_Ent_Mon_Planning = (props) => {
if (new_data2.length > 0) {
setGetall_Sequence_Of_Session_result_planning_view(new_data2);
//console.log(" ### new_data2 = ", new_data2);
console.log(" ### ENT - new_data2 = ", new_data2);
}
@ -1093,6 +1107,7 @@ const Module_Ent_Mon_Planning = (props) => {
displayEventEnd={true}
eventContent={renderEventContent}
eventClick={handleEventClick}
hiddenDays={[0]}
/>
</div>
@ -1122,4 +1137,19 @@ width: 100%;
.fc-event-main{
word-wrap: break-word;
}
.fc .fc-timegrid-slot {
height: 35px !important;
}
.fc .fc-timegrid-slot-label-cushion {
font-size: 13px;
font-weight: 700;
color: #475569;
}
.fc .fc-timegrid-axis-cushion {
font-size: 13px;
color: #64748b;
}
`;

View File

@ -1753,7 +1753,7 @@ const Module_Session_Planification = (props) => {
local_session_color = "#3573CB"
}
console.log(" ## PROMO local_session_color = ", local_session_color)
//---
var node = {
"_id": local_id,

View File

@ -407,6 +407,7 @@ const Modules_ENT_Mes_Documents = (props) => {
useEffect(() => {
console.log(" props.inscription_id={selected_inscription_id} = ", props.inscription_id)
let windowWidth = window.innerWidth;
if (windowWidth <= 991) {
setDevice('mobile');
@ -784,11 +785,11 @@ const Modules_ENT_Mes_Documents = (props) => {
const stored_cookie = getCookie('tokenmysych');
formData.append("token", stored_cookie);
formData.append("token", stored_cookie);
formData.append("apprenant_id", props.apprenant_id);
formData.append("object_owner_collection", "inscription");
formData.append("object_owner_id", props.inscription_id);
if (props.class_id && props.class_id.length > 5) {
formData.append("class_id", props.class_id);
@ -799,9 +800,7 @@ const Modules_ENT_Mes_Documents = (props) => {
formData.append("object_owner_collection", props.object_owner_collection);
}
//formData.append("class_internal_url", internal_url);
//console.log("token = " + stored_cookie);
setLoading(true);

View File

@ -122,7 +122,7 @@ const Partner_Configuration_Technique = (props) => {
const columns = [
{ field: '_id', headerName: '_id', hide: true },
{ field: 'id', headerName: 'id', hide: true },
{ field: 'config_name', headerName: 'Configuration', hide: false, flex: 1, editable: false },
{ field: 'config_name', headerName: 'Configuration', hide: true, flex: 1, editable: false },
{ field: 'config_desc', headerName: 'Description', flex: 1, hide: false, editable: false },
{ field: 'config_value', headerName: 'Valeur Config.', flex: 1, hide: false, editable: false },
]

View File

@ -2402,10 +2402,11 @@ const Session_Admission_FI = (props) => {
]
const New_Option_Piece_Identite = [
{ "id": "cni", "label": "CNI", "value": "cni" },
{ "id": "cni", "label": "CNI", "value": "cni" },
{ "id": "permis", "label": "Permis Conduire", "value": "permis" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
{ "id": "passport", "label": "Passport", "value": "passport" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
{ "id": "autre", "label": "Autre", "value": "autre" },
{ "id": "", "label": "", "value": "" },
]

View File

@ -650,10 +650,12 @@ function UpdateUserInfo(props) {
{ "id": "permis", "label": "Permis Conduire", "value": "permis" },
{ "id": "passport", "label": "Passport", "value": "passport" },
{ "id": "titre_sejour", "label": "Titre Séjour", "value": "titre_sejour" },
{ "id": "autre", "label": "Autre", "value": "autre" },
{ "id": "", "label": "", "value": "" },
]
const New_Option_Famille_Situation = [
{ "id": "marie", "label": "Marié", "value": "marie" },
{ "id": "pacse", "label": "Pacsé", "value": "pacse" },
@ -1094,7 +1096,7 @@ function UpdateUserInfo(props) {
<div style={{ width: '100%', float: 'left' }}>
<div className="Grid_2_col_sub_colone_header">
&nbsp;
&nbsp;
</div>
<div className="div_row" style={{ "border": "None" }}>
<div className="div_row_gauche" style={{ width: '20%', maxWidth: '200px' }}>

View File

@ -0,0 +1,181 @@
import React, { useState, useEffect, useRef } from "react";
import Navigation from "../components/Navigation";
import bannerimg2 from "./../mysy_img/MYSY-LOGO-BLUE.png";
import ok_png from "./../mysy_img/Ok_PNG.png";
import { Helmet } from "react-helmet";
import Footer from "../components/Fotter";
import Header from "../components/Header";
import { useParams } from 'react-router-dom';
import img_loading_spin from "./../mysy_img/mysy_spin_loading.gif";
import axios from "axios";
import New_Navigation_2025 from "../components/New_Navigation_2025";
import New_C_Header_2025_V2 from "../components/header_automatic_files/Header";
import New_C_Footer_Without_Testimony_2025_V2 from "../components/footer_automatic_files/Layout_Without_Testimony";
const Absence_Action_From_Mail = () => {
const { action, partner_owner_recid, objid } = useParams();
const [tempo, settempo] = useState(".");
setInterval(check, 3000);
window.setTimeout(function () {
if (String(already_run) === "true")
window.location.href = "/";
}, 10000);
function check() {
var val = " . " + tempo;
//alert(" val = "+val);
settempo(val);
}
const [isLoading, setLoading] = useState(false);
const [already_run, setalready_run] = useState(false);
const [quotation_ref, setquotation_ref] = useState("");
const [Absence_Motif_Accept_Refuse_api, setAbsence_Motif_Accept_Refuse_api] = useState();
const [Absence_Motif_Accept_Refuse_message, setAbsence_Motif_Accept_Refuse_message] = useState();
const [Absence_Motif_Accept_Refuse_result, setAbsence_Motif_Accept_Refuse_result] = useState();
function Absence_Motif_Accept_Refuse() {
setalready_run(true);
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
form.append("partner_owner_recid", partner_owner_recid);
form.append("agenda_id", objid);
var myurl = ""
if (action === "accept")
myurl = process.env.REACT_APP_API_URL + "myclass/api/Absence_Accept_Motif_From_Mail_No_Token/";
else if (action === "refuse")
myurl = process.env.REACT_APP_API_URL + "myclass/api/Absence_Refuse_Motif_From_Mail_No_Token/";
setLoading(true);
axios.post(myurl, form).then(res => {
console.log(" In Absence_Motif_Accept_Refuse res.data.status = " + res.data.status);
console.log(" In Absence_Motif_Accept_Refuse res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setAbsence_Motif_Accept_Refuse_api("true");
setAbsence_Motif_Accept_Refuse_result(res.data.message);
setAbsence_Motif_Accept_Refuse_message(res.data.message);
setquotation_ref(res.data.quotation_ref)
//myRef_head.current.scrollIntoView({ behavior: "smooth" });
}
else {
setAbsence_Motif_Accept_Refuse_api("false");
setAbsence_Motif_Accept_Refuse_message(res.data.message);
if (String(setquotation_ref) === "")
alert(res.data.message);
}
setLoading(false);
}).catch((error) => {
setLoading(false);
console.warn('UpdateStagiaireData : Not good man :( Absence_Motif_Accept_Refuse = ' + error);
setAbsence_Motif_Accept_Refuse_api("false");
alert(" Impossible de créer le devis");
})
}
const initialized = useRef(false)
useEffect(() => {
if (!initialized.current) {
initialized.current = true
if (String(already_run) === "false")
Absence_Motif_Accept_Refuse();
}
}, []);
return (
<div className="notfound">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
<div>
<Navigation />
</div>
<Helmet>
<title>MySy Training, Emargement</title>
<meta name="description" content="Nous sommes une base de données uniquement dediée aux formations et tutoriels" />
<meta name="robots" content="index,follow" />
<meta name="title" content="Trouver des Formations.Acces libre.Qualité top" />
<link rel="canonical" href={`${process.env.REACT_APP_BASE_URL}` + "/Emargement"} />
</Helmet>
<New_C_Header_2025_V2 />
<div className="div_mobile">
{isLoading && <div className="loader-container">
<div className="mysy_spinner"> <img src={img_loading_spin} /> </div>
</div>}
{/*<div className="nom_prenom"> Votre devis est en cours de création <img src={ok_png} className="img_ok" /> </div>*/}
<div className="nom_prenom">
<div>
{Absence_Motif_Accept_Refuse_api && String(Absence_Motif_Accept_Refuse_api) === "false" && (
<div style={{ color: "red", marginTop: "10rem" }}>
Cette demande a déjà été traitée, ou le document est introuvable. <br />
Vous allez être redirigé vers le moteur de recherche dans quelques secondes {tempo}
</div>
)}
{Absence_Motif_Accept_Refuse_api && String(Absence_Motif_Accept_Refuse_api) === "true" &&
<div style={{ "color": "green", "marginTop": "10rem" }}>
{action === 'accept' && <div>
<img src={ok_png} className="img_ok" /> &nbsp; Le motif d'absence a été accepté <br />
</div>}
{action !== 'accept' && <div>
<img src={ok_png} className="img_ok" /> &nbsp; Le motif d'absence a été refusé <br />
</div>}
Vous allez être redirigé vers le moteur de recherche dans quelques secondes {tempo}
</div>
}
</div>
</div>
</div>
<New_C_Footer_Without_Testimony_2025_V2 />
</div>
)
}
export default Absence_Action_From_Mail;

View File

@ -131,7 +131,7 @@
border: 1px solid #9cf;
color: #3b3e40;
font-family: "DM Sans", "sans-serif";
font-size: 11px;
font-size: 11px;
letter-spacing: 0.1rem;
font-weight: normal;
width: 100%;
@ -678,6 +678,14 @@
cursor: pointer;
}
.div_row_list_pj {
width: 100%;
border-left: 3mm ridge rgba(211, 220, 50, .6);
float: left;
font-size: medium;
}
}
@media only screen and (min-width: 601px) and (max-width: 991px) {
@ -1307,6 +1315,14 @@
}
.div_row_list_pj {
width: 50%;
border-left: 3mm ridge rgba(211, 220, 50, .6);
float: left;
font-size: medium;
text-align: left;
padding-left: 5px;
}
}
@media only screen and (min-width: 992px) and (max-width: 1199px) {
@ -1839,6 +1855,15 @@
}
.div_row_list_pj {
width: 30%;
border-left: 3mm ridge rgba(211, 220, 50, .6);
float: left;
font-size: medium;
text-align: left;
padding-left: 5px;
}
}
@media only screen and (min-width: 1200px) {
@ -1994,7 +2019,7 @@
.session_caract_Dialog {
font-family: 'DM Sans';
color: #0a2a4d;
color: #0a2a4d;
width: 100%;
padding: 5px;
float: left;
@ -2499,6 +2524,15 @@
cursor: pointer;
}
.div_row_list_pj {
width: 30%;
border-left: 3mm ridge rgba(211, 220, 50, .6);
float: left;
font-size: medium;
text-align: left;
padding-left: 5px;
}
}
// end media
@ -2553,11 +2587,11 @@
}
.css-1v4ccyo {
border: solid #e8eef6 1px;
.css-1v4ccyo {
border: solid #e8eef6 1px;
height: 3.5rem !important;
font-size: small;
color: #0a2a4d !important;
color: #0a2a4d !important;
}
option {
@ -2654,11 +2688,11 @@
width: 110%;
}
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
color: #0a2a4d !important;
font-size: small !important;
font-family: "DM Sans" !important;
.css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input {
color: #0a2a4d !important;
font-size: small !important;
font-family: "DM Sans" !important;
padding-left: 5px !important;
padding-right: 1rem !important;
}

View File

@ -1,6 +1,6 @@
.module_email_management {
.test01 {
font-size: 3rem;
// color: red;