28/08/23 - 13h30

recette2
cherif 2023-08-28 13:41:29 +02:00
parent 4a5d0e9542
commit 78d23dda68
1 changed files with 455 additions and 27 deletions

View File

@ -123,7 +123,7 @@ const Employes = (props) => {
trigger={<Button
onClick={(event) => {
//handleClick_delete(event, cellValues);
// handleClick_delete(event, cellValues);
}}
>
<CiTrash />
@ -148,7 +148,7 @@ const Employes = (props) => {
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_delete(event, cellValues);
handleClick_delete(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
@ -215,13 +215,13 @@ const Employes = (props) => {
<div className="gest_content">
{' '}
En confirmant cette opération, la fonction sera <i><font color="red"> définitivement supprimé</font></i>. <br />
En confirmant cette opération, la fonction sera <i><font color="red"> définitivement supprimée</font></i>. <br />
</div>
<div className="gest_actions">
<div style={{ "width": "45%", "float": "left" }}>
<button className="gest_bton_popup" onClick={(event) => {
//handleClick_delete(event, cellValues);
handleClick_delete_affection(event, cellValues);
//console.log('modal closed ');
close();
}}> Valider </button>
@ -322,10 +322,14 @@ const Employes = (props) => {
}
const [Add_new_affectation, setAdd_new_affectation] = useState();
const [selected_affectation_id, set_selected_affectation_id] = useState();
function handleClick_edit_affectation_From_Line(selected_row_id) {
setSelectionModel_affectations([]);
setdisplay_affectation("1");
setAdd_new_affectation("")
var line = JSON.parse(rows_affectations[selected_row_id]);
@ -353,6 +357,21 @@ const Employes = (props) => {
}
function handleClick_delete(event, cellValues) {
var local_rh_id = cellValues.row._id;
Delete_Employee(local_rh_id);
}
function handleClick_delete_affection(event, cellValues) {
var local_affectation_id = cellValues.row._id;
Delete_affection(selected_id, local_affectation_id);
}
const [p_detail_nom, setp_detail_nom] = useState();
@ -426,8 +445,8 @@ const Employes = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === "true") {
console.log(" In Get_Employee_Data res.data.status = " + res.data.status);
console.log(" In Get_Employee_Data res.data.message r_class = " + res.data.message);
//console.log(" In Get_Employee_Data res.data.status = " + res.data.status);
//console.log(" In Get_Employee_Data res.data.message r_class = " + res.data.message);
setGetAttendee_api("true");
setGetAttendee_result(res.data.message);
@ -767,8 +786,8 @@ const Employes = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Get_Given_Employee_Affectation res.data.status = " + res.data.status);
//console.log(" In Get_Given_Employee_Affectation res.data.message r_class = " + res.data.message);
console.log(" In Get_Given_Employee_Affectation res.data.status = " + res.data.status);
console.log(" In Get_Given_Employee_Affectation res.data.message r_class = " + res.data.message);
setGet_Given_Employee_Affectation_api("true");
@ -888,7 +907,7 @@ const Employes = (props) => {
//console.log(" In Get_Employee_Related_Target_Collection_Data res.data.message r_class = " + res.data.message);
setGet_Employee_Related_Target_Collection_Data_api("true");
setGet_Employee_Related_Target_Collection_Data_result(res.data.message);
setrows_affectations(res.data.message);
}
else {
setGet_Employee_Related_Target_Collection_Data_api("false");
@ -1480,6 +1499,89 @@ const Employes = (props) => {
}
const [Delete_Employee_api, setDelete_Employee_api] = useState();
const [Delete_Employee_message, setDelete_Employee_message] = useState();
const [Delete_Employee_result, setDelete_Employee_result] = useState();
function Delete_Employee(local_rh_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("_id", local_rh_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Ressource_Humaine/";
axios.post(myurl, form).then(res => {
//console.log(" In Delete_Employee res.data.status = " + res.data.status);
//console.log(" In Delete_Employee res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setDelete_Employee_api("true");
setDelete_Employee_result(res.data.message);
clean_all_filters();
alert(" L'employé a été correctement supprimé.")
}
else {
setDelete_Employee_api("false");
setDelete_Employee_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.log('Delete_Employee : Not good man :( Delete_Employee = ' + error);
setDelete_Employee_api("false");
alert(" Impossible de supprimer l'employee");
})
}
const [Delete_affection_api, setDelete_affection_api] = useState();
const [Delete_affection_message, setDelete_affection_message] = useState();
const [Delete_affection_result, setDelete_affection_result] = useState();
function Delete_affection(local_rh_id, local_affectation_id) {
var form = new FormData();
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("rh_id", local_rh_id);
form.append("_id", local_affectation_id);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Affectation_Ressource_Humaine_Poste/";
axios.post(myurl, form).then(res => {
//console.log(" In Delete_affection res.data.status = " + res.data.status);
//console.log(" In Delete_affection res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setDelete_affection_api("true");
setDelete_affection_result(res.data.message);
Getall_Employee_Affectation(local_rh_id);
alert(" La fonction a été correctement supprimée.")
}
else {
setDelete_affection_api("false");
setDelete_affection_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.log('Delete_affection : Not good man :( Delete_affection = ' + error);
setDelete_affection_api("false");
alert(" Impossible de supprimer la fonction");
})
}
const [isimgclassdeleted, setisimgclassdeleted] = useState("");
const [isimgclassdeleted_message, setisimgclassdeleted_message] = useState("");
const [isimgclassSaved, setisimgclassSaved] = useState("");
@ -1488,8 +1590,9 @@ const Employes = (props) => {
const [userimgclassprofil, setuserimgclassprofil] = useState();
const [userimgclassprofilchanged, setuserimgclassprofilchanged] = useState("");
const myRef_head = useRef(null)
const myRef_affectation = useRef(null)
const myRef_head = useRef(null);
const myRef_affectation = useRef(null);
const myRef_new_affectation = useRef(null);
const hiddenFileInput_session = React.useRef(null);
const [Employee_data_changed, setEmployee_data_changed] = useState();
@ -1766,6 +1869,7 @@ const Employes = (props) => {
const [p_affect_date_du, setp_affect_date_du] = useState();
const [p_affect_date_au, setp_affect_date_au] = useState();
const [p_affect_cible, setp_affect_cible] = useState();
const [p_affect_cible_nom, setp_affect_cible_nom] = useState();
const [edite_affectation_form, setedite_affectation_form] = useState();
const [p_affect_comment, setp_affect_comment] = useState();
@ -1773,6 +1877,33 @@ const Employes = (props) => {
const [p_related_target_collection_id, setp_related_target_collection_id] = useState();
function clean_affectation_fields() {
setp_affect_poste();
setp_affect_date_du();
setp_affect_date_au();
setp_affect_cible();
setp_affect_cible_nom();
setp_affect_comment();
}
const [p_one_affect_poste, setp_one_affect_poste] = useState();
const [p_one_affect_date_du, setp_one_affect_date_du] = useState(new Date().toLocaleDateString('fr-FR'));
const [p_one_affect_date_au, setp_one_affect_date_au] = useState(new Date().toLocaleDateString('fr-FR'));
const [p_one_affect_cible, setp_one_affect_cible] = useState();
const [p_one_affect_cible_nom, setp_one_affect_cible_nom] = useState();
const [p_one_affect_comment, setp_one_affect_comment] = useState();
function clean_nouvelle_affectation_fields() {
setp_one_affect_poste();
setp_one_affect_date_du();
setp_one_affect_date_au();
setp_one_affect_cible();
setp_one_affect_cible_nom();
setp_one_affect_comment();
}
const [Affectation_data_changed, setAffectation_data_changed] = useState();
@ -1864,6 +1995,25 @@ const Employes = (props) => {
}
function Fermer_Affectation_Fields() {
clean_affectation_fields();
setedite_affectation_form();
setdisplay_affectation();
setSelectionModel_affectations([]);
}
function Fermer_nouvelle_Affectation_Fields() {
clean_nouvelle_affectation_fields();
setedite_affectation_form();
setdisplay_affectation();
setAdd_new_affectation();
setSelectionModel_affectations([]);
}
const [Update_One_Affectation_Data_api, setUpdate_One_Affectation_Data_api] = useState();
const [Update_One_Affectation_Data_message, setUpdate_One_Affectation_Data_message] = useState();
const [Update_One_Affectation_Data_result, setUpdate_One_Affectation_Data_result] = useState();
@ -1885,14 +2035,14 @@ const Employes = (props) => {
}
if (p_affect_date_du)
form.append("date_du", format(p_affect_date_du, 'dd/MM/yyyy'));
form.append("date_du", p_affect_date_du);
else {
alert(" Vous devez definir une date de debut pour cette affectation");
return;
}
if (p_affect_date_au)
form.append("date_au", format(p_affect_date_au, 'dd/MM/yyyy'));
form.append("date_au", p_affect_date_au);
else
form.append("date_au", "");
@ -1927,11 +2077,11 @@ const Employes = (props) => {
setUpdate_One_Affectation_Data_api("true");
setUpdate_One_Affectation_Data_result(res.data.message);
Get_Given_Employee_Affectation(selected_affectation_id);
Disable_Detail_Affectation_Fields();
setAffectation_data_changed("");
setedite_affectation_form("");
Getall_Employee_Affectation(selected_id);
setSelectionModel_affectations([]);
alert(" La mise à jour été correctement faite.");
@ -1949,7 +2099,7 @@ const Employes = (props) => {
console.log('UpdateStagiaireData : Not good man :( Update_One_Affectation_Data = ' + error);
setUpdate_One_Affectation_Data_api("false");
alert(" Impossible de mettre à jour l'employé");
alert(" Impossible de mettre à jour l'affectation");
})
}
@ -1963,6 +2113,108 @@ const Employes = (props) => {
};
function add_one_affectation_block() {
setdisplay_affectation("");
setAdd_new_affectation("1");
if (myRef_new_affectation.current) {
myRef_new_affectation.current.scrollIntoView({ behavior: "smooth" });
}
}
const [Add_one_affectation_api, setAdd_one_affectation_api] = useState();
const [Add_one_affectation_message, setAdd_one_affectation_message] = useState();
const [Add_one_affectation_result, setAdd_one_affectation_result] = useState();
function Add_one_affectation() {
var form = new FormData();
//form.append("token","K3cw63eKokKSbV4spjQ48SUNnfy80yrXfA");
const stored_cookie = getCookie('tokenmysypart');
form.append("token", stored_cookie);
form.append("rh_id", selected_id);
if (p_one_affect_poste)
form.append("poste", p_one_affect_poste);
else {
alert(" Vous devez definir une poste pour cette affectation");
return;
}
if (p_one_affect_date_du)
form.append("date_du", p_one_affect_date_du);
else {
alert(" Vous devez definir une date de debut pour cette affectation");
return;
}
if (p_one_affect_date_au)
form.append("date_au", p_one_affect_date_au );
else
form.append("date_au", "");
if (p_one_affect_comment)
form.append("comment", p_one_affect_comment);
else
form.append("comment", "");
if (p_one_affect_cible)
form.append("related_target_collection", p_one_affect_cible);
else
form.append("related_target_collection", "");
if (p_one_affect_cible_nom)
form.append("related_target_collection_id", p_one_affect_cible_nom);
else
form.append("related_target_collection_id", "");
console.log(" Add_one_affectation affectation form == ", form);
var myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_Affectation_Ressource_Humaine_Poste/";
axios.post(myurl, form).then(res => {
console.log(" In Add_one_affectation res.data.status = " + res.data.status);
console.log(" In Add_one_affectation res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setAdd_one_affectation_api("true");
setAdd_one_affectation_result(res.data.message);
Disable_Detail_Affectation_Fields();
setAffectation_data_changed("");
setedite_affectation_form("");
setAdd_new_affectation("");
Getall_Employee_Affectation(selected_id);
setSelectionModel_affectations([]);
alert(" L'affectation a été ajoutée.");
if (myRef_affectation)
myRef_affectation.current.scrollIntoView({ behavior: "smooth" });
}
else {
setAdd_one_affectation_api("false");
setAdd_one_affectation_message(res.data.message);
alert(res.data.message);
}
}).catch((error) => {
console.log('UpdateStagiaireData : Not good man :( Add_one_affectation = ' + error);
setAdd_one_affectation_api("false");
alert(" Impossible d'ajouter l'affectation");
})
}
return (
<div className="employes">
<Dialog
@ -3442,11 +3694,11 @@ const Employes = (props) => {
<div className="session_data">
<div style={{ "border": "None" }}>
<div style={{ height: 550, width: '100%', paddingRight: '1px' }}>
<div style={{ height: 350, width: '100%', paddingRight: '1px' }}>
&nbsp;
<Box
sx={{
height: 500,
height: 300,
width: '100%',
paddingRight: '1px',
@ -3578,6 +3830,22 @@ const Employes = (props) => {
</div>
<div className="div_row" style={{ "border": "None" }}>
<div className="div_row_gauche div_row_gauche_etendu" style={{ "textAlign": "left", "paddingLeft": "5px" }}>
<Button variant="outlined" onClick={add_one_affectation_block}
className="detail_class_submenu bton_add_session"
id='menu_add_participant' name='menu_add_participant'>Ajout 1 affectation &nbsp;
<img src={add_plus} alt="ajout affectation" className="icon_plus" />
</Button>
<br />
</div>
</div>
<nav ref={myRef_affectation}> &nbsp; </nav>
{String(display_affectation) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Détail Affectation </nav>
@ -3620,7 +3888,11 @@ const Employes = (props) => {
</div>}
{String(edite_affectation_form) === "1" && <div className="session_caract">Cible <br />
{String(edite_affectation_form) === "1" && <div className="session_caract">Cible edit<br />
p_affect_cible = {p_affect_cible} <br/>
<TextField
name="affect_cible"
id="affect_cible"
@ -3635,10 +3907,11 @@ const Employes = (props) => {
setp_affect_cible(e.target.value);
setAffectation_data_changed("1");
}}
>
<MenuItem value="myclass" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Formation &nbsp;&nbsp;</MenuItem>
<MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem>
<MenuItem key="Formation" value="myclass" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Formation &nbsp;&nbsp;</MenuItem>
<MenuItem key="Session de formation" value="Session de formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem>
</TextField>
@ -3719,7 +3992,7 @@ const Employes = (props) => {
id="affect_date_du"
selected={new Date(moment(p_affect_date_du, "DD/MM/YYYY HH:mm:ss"))}
onChange={(date) => {
setp_affect_date_du(date);
setp_affect_date_du(format(date, 'dd/MM/yyyy'));
setAffectation_data_changed("1");
}
}
@ -3755,7 +4028,7 @@ const Employes = (props) => {
id="affect_date_au"
selected={new Date(moment(p_affect_date_au, "DD/MM/YYYY HH:mm:ss"))}
onChange={(date) => {
setp_affect_date_au(date);
setp_affect_date_au(format(date, 'dd/MM/yyyy'));
setAffectation_data_changed("1");
}
}
@ -3789,14 +4062,23 @@ const Employes = (props) => {
</Button>
</div>}
</div>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
{String(edite_affectation_form) !== "1" && <div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_annule" onClick={Fermer_Affectation_Fields}>Fermer
</Button>
</div>}
{String(edite_affectation_form) !== "1" && <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
{String(edite_affectation_form) !== "1" && <div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }}>
<Button variant="contained" className="bton_edit" onClick={Enable_Detail_Affectation_Fields}>Editer
</Button>
<Button variant="contained" className="bton_edit" onClick={Enable_Detail_Affectation_Fields}>Editer
</Button>
</div>}
</div>}
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
@ -3804,6 +4086,152 @@ const Employes = (props) => {
</div>
</div>}
<nav ref={myRef_new_affectation}> &nbsp; </nav>
{String(Add_new_affectation) === "1" && <div className="div_row" style={{ "border": "None", "background": '#F8F9F9', "padding": '5px' }}>
<nav style={{ "border": "None", "fontSize": "22px", "fontWeight": "600" }}> Nouvelle affectation </nav>
<div className="session_data" >
<div>
<div className="session_caract">Poste Occupé <br />
<TextField
name="one_affect_poste"
id="one_affect_poste"
text
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style enable_style"
value={p_one_affect_poste}
onChange={(e) => {
setp_one_affect_poste(e.target.value);
}}
/>
</div>
<div className="session_caract">Cible <br />
<TextField
name="one_affect_cible"
id="one_affect_cible"
select
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style enable_style"
value={p_one_affect_cible}
onChange={(e) => {
setp_one_affect_cible(e.target.value);
}}
>
<MenuItem value="myclass" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }}>Formation &nbsp;&nbsp;</MenuItem>
<MenuItem value="session_formation" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Session de formation &nbsp;</MenuItem>
<MenuItem value="" style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%" }} >Aucun &nbsp;</MenuItem>
</TextField>
</div>
<div className="session_caract">Cible Nom <br />
<TextField
name="one_affect_cible_nom"
id="one_affect_cible_nom"
select
InputLabelProps={{
shrink: true,
}}
disabled={false}
className="disabled_style enable_style"
value={p_one_affect_cible_nom}
onChange={(e) => {
setp_one_affect_cible_nom(e.target.value);
}}
>
{Get_Employee_Related_Target_Collection_Data_result &&
Get_Employee_Related_Target_Collection_Data_result.filter((local_mymanager) => JSON.parse(local_mymanager).related_target_collection === p_one_affect_cible).map((mymanager) => (
<MenuItem key={JSON.parse(mymanager).related_target_collection_id} value={JSON.parse(mymanager).related_target_collection_id}
style={{ "paddingLeft": "5px", "textAlign": "left", "width": "100%", "fontSize": "12px" }}>
{JSON.parse(mymanager).related_target_collection_id_nom}&nbsp;&nbsp;
</MenuItem>
))}
</TextField>
</div>
<div className="session_caract">Date du <br />
<DatePicker
name="one_affect_date_du"
id="one_affect_date_du"
selected={new Date(moment(p_one_affect_date_du, "DD/MM/YYYY HH:mm:ss"))}
onChange={(date) => {
setp_one_affect_date_du(format(date, 'dd/MM/yyyy'));
}
}
showTimeSelect={false}
//filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy"
className="disabled_style enable_style"
locale='fr-FR'
/>
</div>
<div className="session_caract">Date au <br />
<DatePicker
name="one_affect_date_au"
id="one_affect_date_au"
selected={new Date(moment(p_one_affect_date_au, "DD/MM/YYYY HH:mm:ss"))}
onChange={(date) => {
setp_one_affect_date_au(format(date, 'dd/MM/yyyy') );
}
}
showTimeSelect={false}
//filterTime={filterPassedTime_start}
dateFormat="dd/MM/yyyy"
className="disabled_style enable_style"
locale='fr-FR'
/>
</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
<div className="div_row" style={{ "border": "None", "color": "orange", "textAlign": "center" }}>
<div className="div_row_gauche" style={{ "textAlign": 'left', 'marginLeft': '15px' }}>
<Button variant="contained" className="bton_enreg" onClick={Add_one_affectation}>Enregistrer
</Button>
</div>
<div className="div_row_droite" style={{ "textAlign": 'right', 'marginRight': '15px' }} >
<Button variant="contained" className="bton_annule" onClick={Fermer_nouvelle_Affectation_Fields}>Annuler
</Button>
</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
&nbsp;
</div>
</div>
</div>}
</div>}
{String(submenu) === "droit_acces" && <div className="div_row">