06/09/2024 - 22h

recette2
cherif 2024-09-06 21:53:43 +02:00
parent 27046bfce7
commit 066bd48cf9
3 changed files with 228 additions and 21 deletions

View File

@ -1216,6 +1216,8 @@ const Partner = (props) => {
const [document_super_admin, setdocument_super_admin] = useState("");
const [conntected_employee_activite_retard, setconntected_employee_activite_retard] = useState("");
const [conntected_employee_activite_new, setconntected_employee_activite_new] = useState("");
const [conntected_employee_email, setconntected_employee_email] = useState("");
const [conntected_employee_id, setconntected_employee_id] = useState("");
function GetPartnerNameFromToken(event) {
@ -1231,7 +1233,7 @@ const Partner = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In GetPartnerNameFromToken res.data.status = " + res.data.status);
//console.log(" In GetPartnerNameFromToken res.data.message = " + res.data.message);
console.log(" In GetPartnerNameFromToken res.data.message = " + res.data.message);
setparntername(JSON.parse(res.data.message).nom);
setconntected_employee_email(JSON.parse(res.data.message).email);
@ -1242,6 +1244,12 @@ const Partner = (props) => {
setconntected_employee_activite_retard("")
if (JSON.parse(res.data.message).nb_activite_new)
setconntected_employee_activite_new(JSON.parse(res.data.message).nb_activite_new)
else
setconntected_employee_activite_new("")
if (JSON.parse(res.data.message).pack_service) {
setpartnerPackService(JSON.parse(res.data.message).pack_service);
@ -1523,6 +1531,11 @@ const Partner = (props) => {
setconntected_employee_activite_retard(String(new_val));
}
function update_nb_activite_en_new(new_val) {
setconntected_employee_activite_new(String(new_val));
}
return (
<div className="partner">
@ -1631,11 +1644,30 @@ const Partner = (props) => {
{parntername && <nav>
<b> {parntername}&nbsp;-&nbsp;{String(partnerPackService).toUpperCase()} ({parnternbformation})</b> &nbsp; &nbsp;
{conntected_employee_activite_retard && parseFloat(conntected_employee_activite_retard) > 0 &&
<StyledBadge badgeContent={conntected_employee_activite_retard} color="secondary" style={{ "cursor": "pointer" }}
<StyledBadge badgeContent={conntected_employee_activite_retard} color="red" style={{ "cursor": "pointer" }}
onClick={(event) => {
monactivite_func();
}}></StyledBadge>}
}}>
<Tooltip className="tooltip_css" id="badge_tool_01" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="badge_tool_01" data-tooltip-html="Activité(s) en retard">
&nbsp; &nbsp;</a>
</StyledBadge>} &nbsp; &nbsp;
{conntected_employee_activite_new && parseFloat(conntected_employee_activite_new) > 0 &&
<StyledBadge badgeContent={conntected_employee_activite_new} color="secondary" style={{ "cursor": "pointer" }}
onClick={(event) => {
monactivite_func();
}}>
<Tooltip className="tooltip_css" id="badge_tool_02" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="badge_tool_02" data-tooltip-html="Nouvelle(s) activité(s) pour vous">
&nbsp; &nbsp;</a>
</StyledBadge>}
</nav>}
{!parntername && <b> Partenaire </b>} </div>}
@ -1645,11 +1677,28 @@ const Partner = (props) => {
{parnter_user_employee}
{!parntername && <b> Utilisateur </b>} &nbsp; &nbsp;
{conntected_employee_activite_retard && parseFloat(conntected_employee_activite_retard) > 0 &&
<StyledBadge badgeContent={conntected_employee_activite_retard} color="secondary" style={{ "cursor": "pointer" }}
<StyledBadge badgeContent={conntected_employee_activite_retard} color="red" style={{ "cursor": "pointer" }}
onClick={(event) => {
monactivite_func();
}}></StyledBadge>}
}}>
<Tooltip className="tooltip_css" id="badge_tool_03" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="badge_tool_03" data-tooltip-html="Activité(s) en retard">
&nbsp; &nbsp;</a>
</StyledBadge>} &nbsp; &nbsp;
{conntected_employee_activite_new && parseFloat(conntected_employee_activite_new) > 0 &&
<StyledBadge badgeContent={conntected_employee_activite_new} color="secondary" style={{ "cursor": "pointer" }}
onClick={(event) => {
monactivite_func();
}}>
<Tooltip className="tooltip_css" id="badge_tool_04" style={{ "fontSize": "12px" }} />
<a data-tooltip-id="badge_tool_04" data-tooltip-html="Nouvelle(s) activité(s) pour vous">
&nbsp; &nbsp;</a>
</StyledBadge>}
</div>}
{String(formation_initiale) === "1" && <div className="nom_prenom"> Ftion Initiale
@ -2411,7 +2460,10 @@ const Partner = (props) => {
{String(menu) === "monactivite" && <div className="div_droite">
<PartnerClientActivite conntected_employee_id={conntected_employee_id} check_user_acces_right={check_user_acces_right}
email={conntected_employee_email} related_collection={"partnair_account"} update_nb_activite_en_retard={update_nb_activite_en_retard} />
email={conntected_employee_email} related_collection={"partnair_account"} update_nb_activite_en_retard={update_nb_activite_en_retard}
update_nb_activite_en_new={update_nb_activite_en_new}
/>
</div>
}

View File

@ -36,6 +36,8 @@ import fileDownload from 'js-file-download'
import { IoAddCircleOutline, IoCloseCircleOutline } from "react-icons/io5";
import { AiOutlineUserAdd } from "react-icons/ai";
import FiberNewIcon from '@mui/icons-material/FiberNew';
import Timeline from '@mui/lab/Timeline';
import TimelineItem from '@mui/lab/TimelineItem';
import TimelineSeparator from '@mui/lab/TimelineSeparator';
@ -248,7 +250,7 @@ const PartnerClientActivite = (props) => {
const [p_activite_deadline_label, setp_activite_deadline_label] = useState("");
const [p_activite_type, setp_activite_type] = useState("");
const [p_activite_status, setp_activite_status] = useState("");
const [p_activite_status, setp_activite_status] = useState("0");
const [p_activite_status_label, setp_activite_status_label] = useState("");
const [p_activite_employee_assigned_id, setp_activite_employee_assigned_id] = useState(props.conntected_employee_id);
const [p_activite_employee_assigned_nom_prenom, setp_activite_employee_assigned_nom_prenom] = useState();
@ -257,6 +259,7 @@ const PartnerClientActivite = (props) => {
const [nb_activite_en_retard, setnb_activite_en_retard] = useState("");
const [nb_activite_new, setnb_activite_new] = useState("");
// Recuperation des activités du client d'un partner
const [Get_List_Activite_Of_client_Part_api, setGet_List_Activite_Of_client_Part_api] = useState();
@ -284,8 +287,12 @@ const PartnerClientActivite = (props) => {
setGet_List_Activite_Of_client_Part_api("true");
setGet_List_Activite_Of_client_Part_result(res.data.message);
setnb_activite_en_retard(res.data.nb_activite_en_retard);
setnb_activite_new(res.data.nb_new_activite_assigned_to_me);
props.update_nb_activite_en_retard(res.data.nb_activite_en_retard);
props.update_nb_activite_en_new(res.data.nb_new_activite_assigned_to_me);
var new_data2 = [];
const new_data = res.data.message.map((x) => {
@ -360,7 +367,7 @@ const PartnerClientActivite = (props) => {
axios.post(myurl, form).then(res => {
//console.log(" In Get_List_Activite_Assign_To_Me res.data.status = " + res.data.status);
//console.log(" In Get_List_Activite_Assign_To_Me res.data.message r_class = " + res.data.message);
console.log(" In Get_List_Activite_Assign_To_Me res.data.message r_class = " + res.data.message);
if (String(res.data.status) === String("true")) {
setGet_List_Activite_Assign_To_Me_api("true");
@ -400,7 +407,7 @@ const PartnerClientActivite = (props) => {
const [Getall_Training_Employee_No_Filter_api, setGetall_Training_Employee_No_Filter_api] = useState();
const [Getall_Training_Employee_No_Filter_message, setGetall_Training_Employee_No_Filter_message] = useState();
const [Getall_Training_Employee_No_Filter_result, setGetall_Training_Employee_No_Filter_result] = useState();
const [Getall_Training_Employee_No_Filter_result, setGetall_Training_Employee_No_Filter_result] = useState([]);
function Getall_Training_Employee_No_Filter(event) {
var form = new FormData();
@ -696,8 +703,19 @@ const PartnerClientActivite = (props) => {
else
form.append("detail", "");
var new_dead_line_format = "";
if (typeof p_activite_deadline == "object") {
var act_deadline = format(p_activite_deadline, 'dd/MM/yyyy');
new_dead_line_format = act_deadline;
} else {
new_dead_line_format = p_activite_deadline;
}
if (p_activite_deadline)
form.append("deadline", p_activite_deadline);
form.append("deadline", new_dead_line_format);
if (p_activite_type)
form.append("type", p_activite_type);
@ -901,10 +919,11 @@ const PartnerClientActivite = (props) => {
axios.post(myurl, form).then(res => {
if (String(res.data.status) === String("true")) {
//console.log(" In Display_Given_Activite_From_Activite_Recid res.data.status = " + res.data.status);
//console.log(" In Display_Given_Activite_From_Activite_Recid res.data.message = " + res.data.message);
// console.log(" In Display_Given_Activite_From_Activite_Recid res.data.message = " + res.data.message);
setDisplay_Given_Activite_From_Activite_Recid_api("true");
setDisplay_Given_Activite_From_Activite_Recid_result(res.data.message);
props.update_nb_activite_en_new(res.data.nb_new_activite_assigned_to_me);
var mylocalclient_activite = JSON.parse(res.data.message);
@ -967,6 +986,12 @@ const PartnerClientActivite = (props) => {
setcurrent_activite_recid(mylocalclient_activite.recid);
else
setcurrent_activite_recid("");
// Apres avoir ouvert l'activité, on va rafraichir l'affichage de a liste des activitées qui me sont assignée
// ceci pour actualiser le statut "employee_assigned_view_statut"
Get_List_Activite_Assign_To_Me();
}
@ -1075,7 +1100,7 @@ const PartnerClientActivite = (props) => {
setp_activite_detail("");
setp_activite_deadline(new Date());
setp_activite_type("");
setp_activite_status("");
setp_activite_status("0");
setp_activite_status_label("");
setp_activite_detail("");
@ -1545,6 +1570,7 @@ const PartnerClientActivite = (props) => {
<div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }}>
<div className="div_row" onClick={Add_Activite} style={{ "cursor": "pointer" }}> <AiOutlineUserAdd /> Ajouter une activité </div>
{/*<div>
<div className="div_row">
<div className="div_row" style={{ "border": "None" }}>
<div className="titre1" > Activité(s) qui me sont Assignée(s) </div>
@ -1564,6 +1590,10 @@ const PartnerClientActivite = (props) => {
}}
className="detail_activite">
{JSON.parse(client).employee_assigned_view_statut && String(JSON.parse(client).employee_assigned_view_statut) !== "1" &&
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
<nav className="detail_header" recid={String(JSON.parse(client).recid)} > {String(JSON.parse(client).deadline)} : {String(JSON.parse(client).type)}</nav>
<nav recid={String(JSON.parse(client).recid)} >
<i>FAIT </i> <br />
@ -1578,6 +1608,10 @@ const PartnerClientActivite = (props) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(client).recid));
setDialog_ACTIVITE_open(true);
}} className="detail_activite">
{JSON.parse(client).employee_assigned_view_statut && String(JSON.parse(client).employee_assigned_view_statut) !== "1" &&
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
<nav className="detail_header" recid={String(JSON.parse(client).recid)} > {String(JSON.parse(client).deadline)} : {String(JSON.parse(client).type)}</nav>
<nav recid={String(JSON.parse(client).recid)} >
@ -1597,6 +1631,9 @@ const PartnerClientActivite = (props) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(client).recid));
setDialog_ACTIVITE_open(true);
}} className="detail_activite">
{JSON.parse(client).employee_assigned_view_statut && String(JSON.parse(client).employee_assigned_view_statut) !== "1" &&
<nav> <FiberNewIcon style={{ color: 'red', fontSize: '10px' }} /> </nav>}
<nav className="detail_header" recid={String(JSON.parse(client).recid)} > {String(JSON.parse(client).deadline)} : {String(JSON.parse(client).type)}</nav>
<nav recid={String(JSON.parse(client).recid)} >
<i>ANNULE </i> <br />
@ -1647,6 +1684,8 @@ const PartnerClientActivite = (props) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(client).recid));
setDialog_ACTIVITE_open(true);
}} className="detail_activite">
<nav className="detail_header" recid={String(JSON.parse(client).recid)} > {String(JSON.parse(client).deadline)} : {String(JSON.parse(client).type)}</nav>
<nav recid={String(JSON.parse(client).recid)} >
@ -1654,7 +1693,6 @@ const PartnerClientActivite = (props) => {
{parseInt(String(JSON.parse(client).retard)) > 0 && <i> DANS {String(JSON.parse(client).retard)} jours <br /></i>}
{parseInt(String(JSON.parse(client).retard)) == 0 && <i style={{ "color": "orange" }}> AUJOURD'HUI <br /></i>}
{(JSON.parse(client).description).substring(0, 50)}<br />
{(JSON.parse(client).detail).substring(0, 50)}<br />
@ -1680,17 +1718,125 @@ const PartnerClientActivite = (props) => {
</div>
</div>
</div>*/}
<div className="div_row" style={{ "border": "None" }}>
<div className="titre1" > Activité(s) qui me sont Assignée(s) </div>
</div>
{/*<div style={{ "textAlign": "right", "float": "right", "width": "100%", "paddingRight": "15px" }}>
Affichage : <nav className="mode_affichage" onClick={"func_display_kanban_view"}> <FcPlanner /> Kanban </nav>
<nav className="mode_affichage" onClick={"func_display_list_view"}> <CiBoxList /> Liste </nav>
</div>*/}
<div className="div_row">
<DndProvider backend={HTML5Backend}>
<section style={classes.board}>
{activite_status_list_pave_affiche.map(channel => (
<KanbanColumn
key={channel.id}
status={channel.id}
changeTaskStatus={changeTaskStatus}
>
<div style={classes.column}>
<div style={classes.columnHead}>{Opportunite_chanel_label[channel.id]}</div>
<div style={{ overflowY: 'auto', height: '95%' }}>
{Get_List_Activite_Assign_To_Me_result && Get_List_Activite_Assign_To_Me_result.length > 0 &&
Get_List_Activite_Assign_To_Me_result.filter(item => JSON.parse(item).status === channel.id)
.map(item => (
<KanbanItem key={JSON.parse(item)._id} id={JSON.parse(item)._id} actvite_recid={JSON.parse(item).recid}>
<br />
<div id={JSON.parse(item)._id}
>
{String(String(JSON.parse(item).status)) === "1" &&
<nav recid={String(JSON.parse(item).recid)}
onClick={(event) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
setDialog_ACTIVITE_open(true);
}}
className="detail_activite">
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
<nav recid={String(JSON.parse(item).recid)} >
<i>FAIT </i> <br />
{(JSON.parse(item).description).substring(0, 50)}<br />
{(JSON.parse(item).detail).substring(0, 50)}<br />
</nav>
</nav>}
{String(String(JSON.parse(item).status)) === "0" &&
<nav recid={String(JSON.parse(item).recid)}
onClick={(event) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
setDialog_ACTIVITE_open(true);
}}
className="detail_activite">
{JSON.parse(item).employee_assigned_view_statut && String(JSON.parse(item).employee_assigned_view_statut) !== "1" &&
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
<nav recid={String(JSON.parse(item).recid)} >
{parseInt(String(JSON.parse(item).retard)) < 0 && <i style={{ "color": "red" }}> RETARD de {String(JSON.parse(item).retard)} jours <br /></i>}
{parseInt(String(JSON.parse(item).retard)) > 0 && <i> DANS {String(JSON.parse(item).retard)} jours <br /></i>}
{parseInt(String(JSON.parse(item).retard)) == 0 && <i style={{ "color": "orange" }}> AUJOURD'HUI <br /></i>}
{(JSON.parse(item).description).substring(0, 50)}<br />
{(JSON.parse(item).detail).substring(0, 50)}<br />
</nav>
</nav>}
{String(String(JSON.parse(item).status)) === "-1" &&
<nav recid={String(JSON.parse(item).recid)}
onClick={(event) => {
Display_Given_Activite_From_Activite_Recid(String(JSON.parse(item).recid));
setDialog_ACTIVITE_open(true);
}}
className="detail_activite">
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
<nav recid={String(JSON.parse(item).recid)} >
<i>ANNULE </i> <br />
{(JSON.parse(item).description).substring(0, 50)}<br />
{(JSON.parse(item).detail).substring(0, 50)}<br />
</nav>
</nav>}
</div>
</KanbanItem>
))}
</div>
</div>
</KanbanColumn>
))}
</section>
</DndProvider>
<div className="div_row"> &nbsp;</div>
</div>
<div className="div_row" style={{ "border": "None" }}>
<hr className="hr_break" />
<div className="titre1" > Activté(s) que j'ai créée(s) </div>
</div>
<div style={{ "textAlign": "right", "float": "right", "width": "100%", "paddingRight": "15px" }}>
{/*<div style={{ "textAlign": "right", "float": "right", "width": "100%", "paddingRight": "15px" }}>
Affichage : <nav className="mode_affichage" onClick={"func_display_kanban_view"}> <FcPlanner /> Kanban </nav>
<nav className="mode_affichage" onClick={"func_display_list_view"}> <CiBoxList /> Liste </nav>
</div>
</div>*/}
<div className="div_row">
@ -1741,7 +1887,10 @@ const PartnerClientActivite = (props) => {
className="detail_activite">
<nav className="detail_header" recid={String(JSON.parse(item).recid)} > {String(JSON.parse(item).deadline)} : {String(JSON.parse(item).type)}</nav>
<nav recid={String(JSON.parse(item).recid)} >
<nav recid={String(JSON.parse(item).recid)} > ttt
{JSON.parse(item).employee_assigned_view_statut && String(JSON.parse(item).employee_assigned_view_statut) !== "1" &&
<nav style={{ marginRight: "10px", textAlign: "right" }}> <FiberNewIcon style={{ color: 'red', }} /> </nav>}
{parseInt(String(JSON.parse(item).retard)) < 0 && <i style={{ "color": "red" }}> RETARD de {String(JSON.parse(item).retard)} jours <br /></i>}
{parseInt(String(JSON.parse(item).retard)) > 0 && <i> DANS {String(JSON.parse(item).retard)} jours <br /></i>}
@ -1788,7 +1937,13 @@ const PartnerClientActivite = (props) => {
</div>}
{String(showactivite_detail) === "ttt1" && <div className="div_row" style={{ "marginLeft": "5px", "marginRight": "5px" }} onChange={DataUpdated_Activite_Data}>
<div className="training_caract"> Description <br />
@ -2221,7 +2376,7 @@ const PartnerClientActivite = (props) => {
<div className="div_row" style={{ "border": "None" }}>
<Button variant="outlined" onClick={Add_Activite} style={{ "width":'20rem' }}
<Button variant="outlined" onClick={Add_Activite} style={{ "width": '20rem' }}
className="detail_class_submenu bton_add_session"
id='menu_import_participant' name='menu_import_participant'>Ajout 1 Activité &nbsp;
<IoAddCircleOutline style={{ "fontSize": "x-large", "color": "green" }} />

View File

@ -520,7 +520,7 @@
text-align: left;
min-width: 90% !important;
border-top-right-radius: 10px !important;
height: 8rem !important;
height: 9rem !important;
font-size: small;
width: 96%;
margin-left: 2%;
@ -789,7 +789,7 @@
text-align: left;
min-width: 90% !important;
border-top-right-radius: 10px !important;
height: 8rem !important;
height: 9rem !important;
font-size: small;
width: 96%;
margin-left: 2%;
@ -1085,7 +1085,7 @@
width: 96%;
margin-left: 2%;
border-radius: 10px !important;
height: 7rem !important;
height: 9rem !important;
font-size: small;
padding-bottom: 10px;
}