diff --git a/src/components/AddPartnerClient.js b/src/components/AddPartnerClient.js index 18e2325..56f21d9 100644 --- a/src/components/AddPartnerClient.js +++ b/src/components/AddPartnerClient.js @@ -4654,7 +4654,8 @@ const AddParnerClient = (props) => { {String(submenu).trim() === "submenu_activite" &&
- < PartnerClientActivite email={p_client_email} conntected_employee_id={props.conntected_employee_id} /> +
} {String(submenu).trim() === "submenu_piece_jointe" &&
diff --git a/src/components/Crm_Opportunite.js b/src/components/Crm_Opportunite.js index a4bca06..3747ac1 100644 --- a/src/components/Crm_Opportunite.js +++ b/src/components/Crm_Opportunite.js @@ -527,9 +527,7 @@ const CRM_Opportunite = (props) => { local_opport_chanel_label[String(local_opport_chanel[i])] = temp_val[0].toUpperCase() + temp_val.slice(1); } - setOpportunite_chanel_label(local_opport_chanel_label); - } else { setGetall_Partner_CRM_Opport_Step_api("false"); @@ -1358,6 +1356,8 @@ const CRM_Opportunite = (props) => { // MySy Comment : quand on change la position d'une tache, dans cette fonction on appel l'api de mise à jour const changeTaskStatus = useCallback( (id, status) => { + + let task = tasks.find(task => task._id === id); const taskIndex = tasks.indexOf(task); task = { ...task, status }; @@ -1958,7 +1958,7 @@ const CRM_Opportunite = (props) => {
-
+ {selected_id && String(selected_id).length > 2 &&
-
+
} diff --git a/src/components/DisplayPartnerUnite_Enseignement.js b/src/components/DisplayPartnerUnite_Enseignement.js index 8591bf0..cd6102a 100644 --- a/src/components/DisplayPartnerUnite_Enseignement.js +++ b/src/components/DisplayPartnerUnite_Enseignement.js @@ -4057,7 +4057,7 @@ const DisplayPartnerUnite_Enseignement = (props) => {
-
diff --git a/src/components/Module_Activite.js b/src/components/Module_Activite.js index 0fc1a6a..546b03d 100644 --- a/src/components/Module_Activite.js +++ b/src/components/Module_Activite.js @@ -191,49 +191,51 @@ const Module_Activite = (props) => { } - // 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(); - const [Get_List_Activite_Of_client_Part_message, setGet_List_Activite_Of_client_Part_message] = useState(); - const [Get_List_Activite_Of_client_Part_result, setGet_List_Activite_Of_client_Part_result] = useState(); - function Get_List_Activite_Of_client_Part(event) { - - var form = new FormData(); - const stored_cookie = getCookie('tokenmysypart'); - const related_collection = "partner_client" - - - form.append("token", stored_cookie); - form.append("related_collection", related_collection); - form.append("related_collection_owner_email", props.email); - - - var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Activite/"; - - axios.post(myurl, form).then(res => { - //console.log(" In Get_List_Activite_Of_client_Part res.data.status = " + res.data.status); - //console.log(" In Get_List_Activite_Of_client_Part res.data.message r_class = " + res.data.message); - - if (String(res.data.status) === String("true")) { - setGet_List_Activite_Of_client_Part_api("true"); - setGet_List_Activite_Of_client_Part_result(res.data.message); - - } - else if (String(res.data.status) === String("Err_Connexion")) { - alert('Erreur: ' + res.data.message); - history.push("/Connexion"); - } - else { - setGet_List_Activite_Of_client_Part_api("false"); - setGet_List_Activite_Of_client_Part_message(res.data.message); - } - - }).catch((error) => { - console.warn('Not good man :( Get_List_Activite_Of_client_Part = ', error); + const [nb_activite_en_retard, setnb_activite_en_retard] = 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(); + const [Get_List_Activite_Of_client_Part_message, setGet_List_Activite_Of_client_Part_message] = useState(); + const [Get_List_Activite_Of_client_Part_result, setGet_List_Activite_Of_client_Part_result] = useState(); + function Get_List_Activite_Of_client_Part(event) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + const related_collection = "partner_client" + + + form.append("token", stored_cookie); + form.append("related_collection", related_collection); + form.append("related_collection_owner_email", props.email); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Entity_Activite/"; + + axios.post(myurl, form).then(res => { + //console.log(" In Get_List_Activite_Of_client_Part res.data.status = " + res.data.status); + //console.log(" In Get_List_Activite_Of_client_Part res.data.message r_class = " + res.data.message); + + if (String(res.data.status) === String("true")) { + 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); + } + else if (String(res.data.status) === String("Err_Connexion")) { + alert('Erreur: ' + res.data.message); + history.push("/Connexion"); + } + else { setGet_List_Activite_Of_client_Part_api("false"); - //setmyApimyApiMessage("") - }) - } - + setGet_List_Activite_Of_client_Part_message(res.data.message); + } + + }).catch((error) => { + console.warn('Not good man :( Get_List_Activite_Of_client_Part = ', error); + setGet_List_Activite_Of_client_Part_api("false"); + //setmyApimyApiMessage("") + }) + } + useEffect(() => { diff --git a/src/components/Partner.js b/src/components/Partner.js index fe39a92..a4b7937 100644 --- a/src/components/Partner.js +++ b/src/components/Partner.js @@ -125,6 +125,21 @@ import Partner_Product_Service from "./Partner_Product_Service"; import Module_Email_Management from "./Module_Email_Management"; import ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox'; +import Badge from '@mui/material/Badge'; +import { styled } from '@mui/material/styles'; +import IconButton from '@mui/material/IconButton'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; + +const StyledBadge = styled(Badge)(({ theme }) => ({ + '& .MuiBadge-badge': { + right: 0, + top: 0, + border: `2px solid ${theme.palette.background.paper}`, + padding: '0 4px', + }, +})); + + const Partner = (props) => { const { commingmenu, commingpack } = useParams(); const [myApiResponse, setmyApiResponse] = useState(""); @@ -525,7 +540,7 @@ const Partner = (props) => { setmenu("monactivite"); setapiexcelimportmessage(); setformation_file_name(); - history.push("/Partner/infopartner"); + history.push("/Partner/monactivite"); document.body.style.backgroundColor = "#ffffff"; inactive_active_menu_header("monactivite"); @@ -1200,6 +1215,8 @@ const Partner = (props) => { const [formation_initiale, setformation_initiale] = useState(""); const [document_super_admin, setdocument_super_admin] = useState(""); + const [conntected_employee_activite_retard, setconntected_employee_activite_retard] = useState(""); + const [conntected_employee_email, setconntected_employee_email] = useState(""); const [conntected_employee_id, setconntected_employee_id] = useState(""); function GetPartnerNameFromToken(event) { @@ -1217,6 +1234,13 @@ const Partner = (props) => { //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); + + if (JSON.parse(res.data.message).nb_activite_retard) + setconntected_employee_activite_retard(JSON.parse(res.data.message).nb_activite_retard) + else + setconntected_employee_activite_retard("") + if (JSON.parse(res.data.message).pack_service) { @@ -1495,6 +1519,10 @@ const Partner = (props) => { } + function update_nb_activite_en_retard(new_val) { + setconntected_employee_activite_retard(String(new_val)); + } + return (
@@ -1591,6 +1619,7 @@ const Partner = (props) => { +
} {isimgSelected &&
@@ -1598,12 +1627,30 @@ const Partner = (props) => {
} - {String(part_is_partner_admin_account) === "1" &&
{parntername && {parntername} - {String(partnerPackService).toUpperCase()} ({parnternbformation})} + {String(part_is_partner_admin_account) === "1" &&
+ {parntername && } {!parntername && Partenaire }
} - {String(part_is_partner_admin_account) !== "1" &&
{parnter_user_employee} - {!parntername && Utilisateur }
} + {String(part_is_partner_admin_account) !== "1" &&
+ {parnter_user_employee} + {!parntername && Utilisateur }     + {conntected_employee_activite_retard && parseFloat(conntected_employee_activite_retard) > 0 && + { + monactivite_func(); + + }}>} +
} {String(formation_initiale) === "1" &&
Ftion Initiale @@ -1615,6 +1662,8 @@ const Partner = (props) => {
+ + } style={{ overflow: 'hidden' }}> {String(menu) !== "infopartner" && }> MES INFORMATIONS } {String(menu) === "infopartner" && }> MES INFORMATIONS } @@ -2361,7 +2410,8 @@ const Partner = (props) => { } {String(menu) === "monactivite" &&
- +
} diff --git a/src/components/PartnerClient_Activite.js b/src/components/PartnerClient_Activite.js index 1271bc7..921d0b2 100644 --- a/src/components/PartnerClient_Activite.js +++ b/src/components/PartnerClient_Activite.js @@ -12,7 +12,7 @@ import { Alert } from "@mui/material"; import { AiTwotoneEdit, AiTwotoneSave } from "react-icons/ai"; import profileimg from "../mysy_img/MYSY-profil-2.png"; import Abonnement from "./Abonnement"; -import { ConstructionOutlined, PropaneSharp } from "@mui/icons-material"; +import { ConstructionOutlined, PropaneSharp, ResetTvRounded } from "@mui/icons-material"; import { useHistory } from "react-router-dom"; import CheckOut from "./CheckOut"; import DatePicker from "react-datepicker"; @@ -49,6 +49,24 @@ import HotelIcon from '@mui/icons-material/Hotel'; import RepeatIcon from '@mui/icons-material/Repeat'; import Typography from '@mui/material/Typography'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; + +import { useCallback, } from "react"; +import { DndProvider, useDrag } from "react-dnd"; +import { useDrop } from 'react-dnd' + +import { HTML5Backend } from "react-dnd-html5-backend"; +import update from "immutability-helper"; +import Rating from '@mui/material/Rating'; + + +import { CiBoxList } from "react-icons/ci"; +import { FcPlanner } from "react-icons/fc"; + const PartnerClientActivite = (props) => { @@ -60,6 +78,11 @@ const PartnerClientActivite = (props) => { return new Promise(resolve => setTimeout(resolve, ms)); } + const [selected_id, setselected_id] = useState(""); + + + const [related_collection, setrelated_collection] = useState(""); + const [current_activite_recid, setcurrent_activite_recid] = useState(""); const [show_all_activite_list, setshow_all_activite_list] = useState("1"); @@ -67,14 +90,18 @@ const PartnerClientActivite = (props) => { const [add_one_activite, setadd_one_activite] = useState(""); function Add_Activite() { - setdatamodification_activite("0"); - setformedit_mode_activite("0"); - setcurrent_activite_recid(""); - //clean_contact_set_values(); + /* setdatamodification_activite("0"); + setformedit_mode_activite("0"); + setcurrent_activite_recid(""); + //clean_contact_set_values(); + + setadd_one_activite("1"); + setshowactivite_detail(); + setshow_all_activite_list(); + */ - setadd_one_activite("1"); - setshowactivite_detail(); - setshow_all_activite_list(); + setselected_id(""); + setDialog_ACTIVITE_open(true); Clear_activite_P_fields(); @@ -151,6 +178,11 @@ const PartnerClientActivite = (props) => { value: 'facture', label: 'facture', }, + { + id: '', + value: '', + label: '', + }, ]; @@ -158,7 +190,7 @@ const PartnerClientActivite = (props) => { { id: '0', value: '0', - label: 'encours', + label: 'Encours', }, { id: '1', @@ -168,17 +200,52 @@ const PartnerClientActivite = (props) => { { id: '-1', value: '-1', - label: 'annulé', + label: 'Annulé', }, + { + id: '2', + value: '2', + label: 'Archivé', + }, + { + id: '', + value: '', + label: '', + }, + ]; + const activite_status_list_pave_affiche = [ + { + id: '0', + value: '0', + label: 'Encours', + }, + { + id: '1', + value: '1', + label: 'Fait', + }, + { + id: '-1', + value: '-1', + label: 'Annulé', + }, + { + id: '2', + value: '2', + label: 'Archivé', + }, + ]; // Données Activites const [p_activite_description, setp_activite_description] = useState(""); const [p_activite_detail, setp_activite_detail] = useState(""); - const [p_activite_deadline, setp_activite_deadline] = useState(""); + + const [p_activite_deadline, setp_activite_deadline] = useState(new Date()); + 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(""); @@ -189,15 +256,17 @@ const PartnerClientActivite = (props) => { const [p_activite_employee_assigned, setp_activite_employee_assigned] = useState(props.conntected_employee_id); + const [nb_activite_en_retard, setnb_activite_en_retard] = 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(); const [Get_List_Activite_Of_client_Part_message, setGet_List_Activite_Of_client_Part_message] = useState(); - const [Get_List_Activite_Of_client_Part_result, setGet_List_Activite_Of_client_Part_result] = useState(); + const [Get_List_Activite_Of_client_Part_result, setGet_List_Activite_Of_client_Part_result] = useState([]); function Get_List_Activite_Of_client_Part(event) { var form = new FormData(); const stored_cookie = getCookie('tokenmysypart'); - const related_collection = "partner_client" + const related_collection = props.related_collection form.append("token", stored_cookie); @@ -214,6 +283,45 @@ const PartnerClientActivite = (props) => { if (String(res.data.status) === String("true")) { 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); + + props.update_nb_activite_en_retard(res.data.nb_activite_en_retard); + + var new_data2 = []; + const new_data = res.data.message.map((x) => { + + //--- + var localid = JSON.parse(x).id; + var local_id = JSON.parse(x)._id; + var local_description = JSON.parse(x).description; + var local_status = JSON.parse(x).status; + var local_type = JSON.parse(x).type; + var local_recid = JSON.parse(x).recid; + + var local_deadline = JSON.parse(x).deadline; + var local_retard = JSON.parse(x).retard; + var local_employee_assigned_to_id = JSON.parse(x).employee_assigned_to_id; + var local_employee_assigned_view_statut = JSON.parse(x).employee_assigned_view_statut; + + + //--- + var node = { + "_id": local_id, + "id": localid, + "label": local_description, + "type": local_type, + "description": local_description, + "status": local_status, + "deadline": local_deadline, + "retard": local_retard, + "employee_assigned_to_id": local_employee_assigned_to_id, + "employee_assigned_view_statut": local_employee_assigned_view_statut, + "recid": local_recid, + }; + + new_data2.push(node); + setTaskStatus(new_data2); + }); } else if (String(res.data.status) === String("Err_Connexion")) { @@ -233,9 +341,58 @@ const PartnerClientActivite = (props) => { } + // Recuperation des activités du client d'un partner + const [Get_List_Activite_Assign_To_Me_api, setGet_List_Activite_Assign_To_Me_api] = useState(); + const [Get_List_Activite_Assign_To_Me_message, setGet_List_Activite_Assign_To_Me_message] = useState(); + const [Get_List_Activite_Assign_To_Me_result, setGet_List_Activite_Assign_To_Me_result] = useState(); + function Get_List_Activite_Assign_To_Me(event) { + + var form = new FormData(); + const stored_cookie = getCookie('tokenmysypart'); + const related_collection = props.related_collection + + + form.append("token", stored_cookie); + form.append("employee_assigned_to_id", props.conntected_employee_id); + + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_List_Activite_Assign_To/"; + + 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); + + if (String(res.data.status) === String("true")) { + setGet_List_Activite_Assign_To_Me_api("true"); + setGet_List_Activite_Assign_To_Me_result(res.data.message); + setnb_activite_en_retard(res.data.nb_activite_en_retard); + + props.update_nb_activite_en_retard(res.data.nb_activite_en_retard); + + } + else if (String(res.data.status) === String("Err_Connexion")) { + alert('Erreur: ' + res.data.message); + history.push("/Connexion"); + } + else { + setGet_List_Activite_Assign_To_Me_api("false"); + setGet_List_Activite_Assign_To_Me_message(res.data.message); + } + + }).catch((error) => { + console.warn('Not good man :( Get_List_Activite_Assign_To_Me = ', error); + setGet_List_Activite_Assign_To_Me_api("false"); + //setmyApimyApiMessage("") + }) + } + + useEffect(() => { + + setrelated_collection(props.related_collection); Getall_Training_Employee_No_Filter(); Get_List_Activite_Of_client_Part(); + Get_List_Activite_Assign_To_Me(); }, []); @@ -287,6 +444,17 @@ const PartnerClientActivite = (props) => { new_data2.push(node); }); + //--- + var node = { + "_id": "", + "id": "", + "label": "", + "nom": "", + "prenom": "", + "ismanager": "" + }; + new_data2.push(node); + if (new_data2.length > 0) setNew_Getall_Training_Employee_No_Filter_result(new_data2); @@ -320,6 +488,14 @@ const PartnerClientActivite = (props) => { const [recordPartnerClient_Activite_Data_message, setrecordPartnerClient_Activite_Data_message] = useState(""); function recordPartnerClient_Activite_Data(event) { + 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; + } var form = new FormData(); @@ -328,7 +504,9 @@ const PartnerClientActivite = (props) => { form.append("description", p_activite_description); form.append("detail", p_activite_detail); - form.append("deadline", format(p_activite_deadline, 'dd/MM/yyyy')); + + form.append("deadline", new_dead_line_format); + form.append("type", p_activite_type); form.append("status", p_activite_status); @@ -379,6 +557,8 @@ const PartnerClientActivite = (props) => { setrecordPartnerClient_Activite_Data_result(res.data.message); Get_List_Activite_Of_client_Part(); + Get_List_Activite_Assign_To_Me(); + setdatamodification_activite("0"); setformedit_mode_activite("0"); setcurrent_activite_recid(""); @@ -414,6 +594,70 @@ const PartnerClientActivite = (props) => { } + + // Fonction de mise à jour d'une activité + const [Update_Activite_Status_api, setUpdate_Activite_Status_api] = useState(""); + const [Update_Activite_Status_result, setUpdate_Activite_Status_result] = useState(""); + const [Update_Activite_Status_message, setUpdate_Activite_Status_message] = useState(""); + function Update_Activite_Status(activite_id, new_status) { + + + var form = new FormData(); + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("status", new_status); + form.append("_id", activite_id); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Update_activite_status/"; + + + axios.post(myurl, form).then(res => { + if (String(res.data.status) === String("true")) { + //console.log(" In Update_Activite_Status res.data.status = " + res.data.status); + //console.log(" In Update_Activite_Status res.data.message = " + res.data.message); + setUpdate_Activite_Status_api("true"); + setUpdate_Activite_Status_result(res.data.message); + + Get_List_Activite_Of_client_Part(); + Get_List_Activite_Assign_To_Me(); + + setdatamodification_activite("0"); + setformedit_mode_activite("0"); + setcurrent_activite_recid(""); + + + setshow_all_activite_list("1"); + setshowactivite_detail('0'); + setadd_one_activite('0'); + + } + + else if (String(res.data.status) === String("Err_Connexion")) { + alert('Erreur: ' + res.data.message); + history.push("/Connexion"); + return; + } + else { + + setUpdate_Activite_Status_api("false"); + setUpdate_Activite_Status_message(res.data.message); + alert(res.data.message); + + } + + + }).catch((error) => { + console.warn('Not good man :( Update_Activite_Status = ', error); + setUpdate_Activite_Status_result("false"); + setUpdate_Activite_Status_message(" Impossible d'ajouter l'activité ") + alert(" Impossible d'ajouter/mettre à jour l'activité "); + + }) + } + + + // Fonction d'ajout d'un activité const [record_One_PartnerClient_Activite_Data_api, setrecord_One_PartnerClient_Activite_Data_api] = useState(""); const [record_One_PartnerClient_Activite_Data_result, setrecord_One_PartnerClient_Activite_Data_result] = useState(""); @@ -426,52 +670,52 @@ const PartnerClientActivite = (props) => { const stored_cookie = getCookie('tokenmysypart'); form.append("token", stored_cookie); - - // Controle d'integrité des infos - if (one_activite_description && one_activite_description.length == 0) { + if (p_activite_description && p_activite_description.length == 0) { alert(" Le champ 'Description' est vide "); return; } - if (one_activite_description && one_activite_description.length > 255) { + if (p_activite_description && p_activite_description.length > 255) { alert(" Le champ 'Description' comporte plus de 255 caractères "); return; } - if (one_activite_detail && one_activite_detail.length > 255) { + if (p_activite_detail && p_activite_detail.length > 255) { alert(" Le champ 'Détail' comporte plus de 255 caractères "); return; } - if (one_activite_description) - form.append("description", one_activite_description); + if (p_activite_description) + form.append("description", p_activite_description); else form.append("description", ""); - if (one_activite_detail) - form.append("detail", one_activite_detail); + if (p_activite_detail) + form.append("detail", p_activite_detail); else form.append("detail", ""); - if (one_activite_deadline) - form.append("deadline", one_activite_deadline); + if (p_activite_deadline) + form.append("deadline", p_activite_deadline); - if (one_activite_type) - form.append("type", one_activite_type); + if (p_activite_type) + form.append("type", p_activite_type); + else + form.append("type", ""); - if (one_activite_status) - form.append("status", one_activite_status); + if (p_activite_status) + form.append("status", p_activite_status); if (p_activite_employee_assigned_id) form.append("employee_assigned_to_id", p_activite_employee_assigned_id); - + var myurl = ""; // Il s'agit d'un ajout d'une nouvelle activité. on a rien dans le current_activite_recid myurl = process.env.REACT_APP_API_URL + "myclass/api/Add_activite/"; - form.append("related_collection", "partner_client"); + form.append("related_collection", props.related_collection); form.append("related_collection_owner_email", props.email); @@ -484,6 +728,8 @@ const PartnerClientActivite = (props) => { Clear_activite_P_fields(); setshowactivite_detail("0"); Get_List_Activite_Of_client_Part(); + Get_List_Activite_Assign_To_Me(); + alert(res.data.message); setdatamodification_activite("0"); setformedit_mode_activite("0"); @@ -529,10 +775,12 @@ const PartnerClientActivite = (props) => { form.append("activite_recid", myactivity_recid); - //console.log(" ### event.currentTarget.getAttribute('recid') = ", event.currentTarget.getAttribute('recid')); + + //console.log(" ### event.currentTarget.getAttribute('recid') = ", event.currentTarget.getAttribute('recid')); zzzzz var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Activite/"; + axios.post(myurl, form).then(res => { if (String(res.data.status) === String("true")) { //console.log(" In Display_Part_Client_Activite res.data.status = " + res.data.status); @@ -567,7 +815,7 @@ const PartnerClientActivite = (props) => { setp_activite_deadline_label(mylocalclient_activite.deadline); } else - setp_activite_deadline(""); + setp_activite_deadline(new Date()); if (mylocalclient_activite.employee_assigned_to_id) { @@ -633,6 +881,121 @@ const PartnerClientActivite = (props) => { }) } + + const [Display_Given_Activite_From_Activite_Recid_api, setDisplay_Given_Activite_From_Activite_Recid_api] = useState(""); + const [Display_Given_Activite_From_Activite_Recid_result, setDisplay_Given_Activite_From_Activite_Recid_result] = useState(""); + const [Display_Given_Activite_From_Activite_Recid_message, setDisplay_Given_Activite_From_Activite_Recid_message] = useState(""); + async function Display_Given_Activite_From_Activite_Recid(myactivity_recid) { + + var form = new FormData(); + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("activite_recid", myactivity_recid); + + + //console.log(" ### event.currentTarget.getAttribute('recid') = ", event.currentTarget.getAttribute('recid')); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Get_Given_Activite/"; + + 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); + setDisplay_Given_Activite_From_Activite_Recid_api("true"); + setDisplay_Given_Activite_From_Activite_Recid_result(res.data.message); + + + var mylocalclient_activite = JSON.parse(res.data.message); + + + if (mylocalclient_activite) { + + setselected_id(mylocalclient_activite._id); + + // Remplissage des doonées de l'activite + if (mylocalclient_activite.description) + setp_activite_description(mylocalclient_activite.description); + else + setp_activite_description(""); + + if (mylocalclient_activite.detail) + setp_activite_detail(mylocalclient_activite.detail); + else + setp_activite_detail(""); + + if (mylocalclient_activite.deadline) { + + var act_deadline = new Date(moment(mylocalclient_activite.deadline, "DD/MM/YYYY HH:mm:ss")); + setp_activite_deadline(act_deadline); + setp_activite_deadline_label(mylocalclient_activite.deadline); + } + else + setp_activite_deadline(new Date()); + + + if (mylocalclient_activite.employee_assigned_to_id) { + setp_activite_employee_assigned_nom_prenom(mylocalclient_activite.employee_assigned_to_nom_prenom); + setp_activite_employee_assigned_id(mylocalclient_activite.employee_assigned_to_id); + } + + + if (mylocalclient_activite.type) + setp_activite_type(mylocalclient_activite.type); + else + setp_activite_type(""); + + + if (mylocalclient_activite.status) { + setp_activite_status(mylocalclient_activite.status); + if (String(mylocalclient_activite.status) === "0") + setp_activite_status_label("En cours"); + + else if (String(mylocalclient_activite.status) === "1") + setp_activite_status_label("Fait"); + + else if (String(mylocalclient_activite.status) === "-1") + setp_activite_status_label("Annulé"); + + } + + else + setp_activite_status(""); + + + if (mylocalclient_activite.recid) + setcurrent_activite_recid(mylocalclient_activite.recid); + else + setcurrent_activite_recid(""); + } + + + // Disable_activite_fields(); + + } + else if (String(res.data.status) === String("Err_Connexion")) { + alert('Erreur: ' + res.data.message); + history.push("/Connexion"); + return; + } + else { + + setDisplay_Given_Activite_From_Activite_Recid_api("false"); + setDisplay_Given_Activite_From_Activite_Recid_message(res.data.message); + alert(res.data.message); + + } + + + }).catch((error) => { + console.warn('Not good man :( Display_Given_Activite_From_Activite_Recid = ', error); + setDisplay_Given_Activite_From_Activite_Recid_result("false"); + setDisplay_Given_Activite_From_Activite_Recid_message(" Impossible de recuperer les details de l'activité") + alert(" Impossible de recuperer les details de l'activité"); + + }) + } + async function Disable_activite_fields() { await sleep(5); @@ -710,17 +1073,17 @@ const PartnerClientActivite = (props) => { function Clear_activite_P_fields() { setp_activite_description(""); setp_activite_detail(""); - setp_activite_deadline(""); + setp_activite_deadline(new Date()); setp_activite_type(""); setp_activite_status(""); setp_activite_status_label(""); setp_activite_detail(""); setone_activite_description(""); - setone_activite_type(""); - setone_activite_status("call"); - setone_activite_detail(""); - + setone_activite_type(""); + setone_activite_status("call"); + setone_activite_detail(""); + } @@ -775,25 +1138,432 @@ const PartnerClientActivite = (props) => { } + /******* kanban */ + + const [kanban_colonne_width, setkanban_colonne_width] = useState("20vw"); + + // MySy Comment : design d'une tache (couleur, taille, etc) + const classes = { + board: { + display: "flex", + margin: "0 auto", + width: "100%", + fontFamily: 'Arial, "Helvetica Neue", sans-serif' + }, + column: { + // minWidth: 200, + //width: "16vw", + width: kanban_colonne_width, + height: "80vh", + margin: "0 auto", + backgroundColor: "#212F3D", + border: 'double #32a1ce', + + }, + columnHead: { + textAlign: "center", + padding: 10, + fontSize: "1.2em", + backgroundColor: "#C6D8AF", + border: "red", + }, + item: { + padding: 10, + margin: 10, + fontSize: "0.8em", + cursor: "pointer", + backgroundColor: "white" + } + }; + + + const KanbanColumn = ({ status, changeTaskStatus, children }) => { + const ref = useRef(null); + const [, drop] = useDrop({ + accept: "card", + drop(item) { + changeTaskStatus(item.id, status); + } + }); + drop(ref); + return
{children}
; + }; + + const KanbanItem = ({ id, children }) => { + const ref = useRef(null); + + + const [{ isDragging }, drag] = + useDrag({ + type: "card", + item: () => ({ id }), + collect: monitor => ({ + isDragging: monitor.isDragging() + }) + }); + + const opacity = isDragging ? 0 : 1; + drag(ref); + return ( +
+ {children} +
+ ); + }; + + const [tasks, setTaskStatus] = useState([]); + + // MySy Comment : quand on change la position d'une tache, dans cette fonction on appel l'api de mise à jour + const changeTaskStatus = useCallback( + (id, status) => { + let local_task = tasks.find(task => task._id === id); + + const taskIndex = tasks.indexOf(local_task); + local_task = { ...local_task, status }; + let newTasks = update(tasks, { + [taskIndex]: { $set: local_task } + }); + + setTaskStatus(newTasks); + + + // Recuperer l'_id du statuts + if (id && status) { + Update_Activite_Status(id, status); + } + //eeeee */ + + }, + [tasks] + ); + + const [New_Option_Status, setNew_Option_Status] = useState([]); + + const [Opportunite_chanel_label, setOpportunite_chanel_label] = useState({ + "0": "Encours", + "1": "Fait", + "2": "Archivé", + "-1": "Annulé", + }); + + /******* Fin kanban */ + + const [isLoading, setLoading] = useState(); + + const [handleClick_delete_Activite_data_from_id_api, sethandleClick_delete_Activite_data_from_id_api] = useState(); + const [handleClick_delete_Activite_data_from_id_message, sethandleClick_delete_Activite_data_from_id_message] = useState(); + const [handleClick_delete_Activite_data_from_id_result, sethandleClick_delete_Activite_data_from_id_result] = useState(); + function handleClick_delete_Activite_data_from_id(id_to_delete) { + + var form = new FormData(); + + const stored_cookie = getCookie('tokenmysypart'); + form.append("token", stored_cookie); + form.append("_id", id_to_delete); + + var myurl = process.env.REACT_APP_API_URL + "myclass/api/Delete_Given_Activite/"; + setLoading(true); + axios.post(myurl, form).then(res => { + + setLoading(false); + if (String(res.data.status) === String("true")) { + //console.log(" In handleClick_delete_Activite_data_from_id res.data.status = " + res.data.status); + //console.log(" In handleClick_delete_Activite_data_from_id res.data.message r_class = " + res.data.message); + sethandleClick_delete_Activite_data_from_id_api("true"); + sethandleClick_delete_Activite_data_from_id_result(res.data.message); + + Get_List_Activite_Of_client_Part(); + Get_List_Activite_Assign_To_Me(); + Dialog_ACTIVITE_handleClose_buton(); + alert(res.data.message); + + } + else { + sethandleClick_delete_Activite_data_from_id_api("false"); + sethandleClick_delete_Activite_data_from_id_message(res.data.message); + alert(res.data.message); + } + + }).catch((error) => { + setLoading(false); + console.warn('Not good man :( handleClick_delete_Activite_data_from_id = ', error); + sethandleClick_delete_Activite_data_from_id_api("false"); + alert(" Impossible de supprimer l'activité"); + //setmyApimyApiMessage("") + }) + } + + + + + const [Dialog_ACTIVITE_open, setDialog_ACTIVITE_open] = React.useState(false); + const Dialog_ACTIVITE_handleClose = () => { + //alert(" Utiliser le bouton 'fermer' "); + //setOpen(false); + }; + + const Dialog_ACTIVITE_handleClose_buton = () => { + setDialog_ACTIVITE_open(false); + setselected_id(""); + setdatamodification_activite(""); + }; + return (
+ + {/* Dialog pour gerer une ACTIVITE */} + + + MySy Information + + + + + + +
Description
+ + { + setp_activite_description(event.target.value); + setdatamodification_activite("1"); + }} + + /> +
+ + +
+ Date souhaitée
+ { + + setp_activite_deadline(format(date, 'dd/MM/yyyy')); + setdatamodification_activite("1"); + } + } + showTimeSelect={false} + filterTime={filterPassedTime_start} + dateFormat="dd/MM/yyyy" + className="disabled_style enable_style" + locale='fr-FR' + /> + +
+ + + + {type_activite_list && type_activite_list.length > 0 &&
+ Type d'activité
+ + (data).id === String(p_activite_type))[0].label} + onChange={(event, value) => { + if (value && value.value) { + setp_activite_type(value.value); + setdatamodification_activite("1"); + } + }} + renderInput={(params) => + } + /> + + +
} + + + + {activite_status_list && activite_status_list.length > 0 &&
+ Statut
+ + (data).id === String(p_activite_status))[0].label} + onChange={(event, value) => { + if (value && value.value) { + setp_activite_status(value.value); + } + }} + renderInput={(params) => + } + /> + + + +
} + + + {New_Getall_Training_Employee_No_Filter_result && New_Getall_Training_Employee_No_Filter_result.length > 0 && +
Assigné à (employé)
+ + (data)._id === String(p_activite_employee_assigned_id))[0].label} + onChange={(event, value) => { + if (value && value._id) { + setp_activite_employee_assigned_id(value._id); + setdatamodification_activite("1"); + } + }} + + renderInput={(params) => + } + /> + + +
} + +
+ Détail
+ { + setp_activite_detail(event.target.value); + setdatamodification_activite("1"); + }} + + /> +
+ +
+   +
+ {String(datamodification_activite) === "1" &&
+
/!\ Pensez à enregistrer les modifications
} + + + +
+ + +
+
+ + + {selected_id && String(selected_id).length > 2 && } + + + {String(selected_id).length < 2 && } + + +
+ +
+ +
+ + {selected_id && String(selected_id).length > 2 &&
+
+ +
+
} +
+ +
+ +
+ {/* FIN Dialog pour gerer une ACTIVITE */} + + +
{String(show_all_activite_list) === "1" && String(showactivite_detail) !== "1" && String(add_one_activite) !== "1" &&
Ajouter une activité
-
+
+
+
Activité(s) qui me sont Assignée(s)
+
- {Get_List_Activite_Of_client_Part_result && String(Get_List_Activite_Of_client_Part_api) === "true" && - Get_List_Activite_Of_client_Part_result.map((client) => ( + {Get_List_Activite_Assign_To_Me_result && String(Get_List_Activite_Assign_To_Me_api) === "true" && + Get_List_Activite_Assign_To_Me_result.map((client) => (
+
+
+
+
+
+
Activté(s) que j'ai créée(s)
+
+
+ + {Get_List_Activite_Of_client_Part_result && String(Get_List_Activite_Of_client_Part_api) === "true" && + Get_List_Activite_Of_client_Part_result.map((client) => ( + + ))} + +
+ +
+ + +
+
+ +
+
+ Affichage : + +
+ + +
+ +
+ {activite_status_list_pave_affiche.map(channel => ( + +
+
{Opportunite_chanel_label[channel.id]}
+
+ {Get_List_Activite_Of_client_Part_result && Get_List_Activite_Of_client_Part_result.length > 0 && + Get_List_Activite_Of_client_Part_result.filter(item => JSON.parse(item).status === channel.id) + .map(item => ( + +
+
+ + {String(String(JSON.parse(item).status)) === "1" && + } + + {String(String(JSON.parse(item).status)) === "0" && + } + + {String(String(JSON.parse(item).status)) === "-1" && + } +
+ +
+ ))} +
+
+
+ ))} +
+
+
 
+ + +
+ + +
} - {String(showactivite_detail) === "1" &&
+ {String(showactivite_detail) === "ttt1" &&
Description
{
- {String(formedit_mode_activite) === "1" &&
Date souhaitée
{
} - {String(formedit_mode_activite) === "1" &&
+ {String(formedit_mode_activite) === "1" && type_activite_list && type_activite_list.length > 0 &&
Type d'activité
{ } }} renderInput={(params) => + /> } /> - {/* setp_activite_type(e.target.value)} > - {type_activite_list.map((option) => ( - - {option.label}  
-
- ))} -
*/} -
} {String(formedit_mode_activite) === "0" &&
@@ -961,49 +1889,31 @@ const PartnerClientActivite = (props) => {
} - {String(formedit_mode_activite) === "1" &&
- Statut
+ {String(formedit_mode_activite) === "1" && activite_status_list && activite_status_list.length > 0 && +
+ Statut
- (data).id === String(p_activite_status))[0].label} - onChange={(event, value) => { - if (value && value.value) { - setp_activite_status(value.value); + options={activite_status_list} + value={activite_status_list.filter((data) => (data).id === String(p_activite_status))[0].label} + onChange={(event, value) => { + if (value && value.value) { + setp_activite_status(value.value); + } + }} + renderInput={(params) => } - }} - renderInput={(params) => - /> - } - /> - - - {/* setp_activite_status(e.target.value)} > - {activite_status_list.map((option) => ( - - {option.label}  
-
- ))} -
*/} -
} +
} {String(formedit_mode_activite) === "0" &&
Statut
@@ -1022,53 +1932,30 @@ const PartnerClientActivite = (props) => {
} - {String(formedit_mode_activite) === "1" &&
Assigné à (employé)
- (data)._id === String(p_activite_employee_assigned_id))[0].label} - onChange={(event, value) => { - if (value && value._id) { - setp_activite_employee_assigned_id(value._id); + {New_Getall_Training_Employee_No_Filter_result && New_Getall_Training_Employee_No_Filter_result.length > 0 && + String(formedit_mode_activite) === "1" &&
Assigné à (employé)
+ (data)._id === String(p_activite_employee_assigned_id))[0].label} + onChange={(event, value) => { + if (value && value._id) { + setp_activite_employee_assigned_id(value._id); + } + }} + + renderInput={(params) => } - }} + /> - renderInput={(params) => - } - /> - - - {/* { - setp_activite_employee_assigned_id(e.target.value); - - } - } - > - {Getall_Training_Employee_No_Filter_result && - Getall_Training_Employee_No_Filter_result.map((myclient) => ( - - {JSON.parse(myclient).nom}  {JSON.parse(myclient).prenom} - - - ))} - */} -
} +
} {String(formedit_mode_activite) !== "1" &&
Assigné à (employé)
@@ -1107,11 +1994,6 @@ const PartnerClientActivite = (props) => { />
- - - - -
 
@@ -1200,9 +2082,9 @@ const PartnerClientActivite = (props) => { } }} renderInput={(params) => + /> } /> @@ -1242,34 +2124,15 @@ const PartnerClientActivite = (props) => { } }} renderInput={(params) => + /> } /> - - {/* setone_activite_status(e.target.value)} > - {activite_status_list.map((option) => ( - - {option.label}  
-
- ))} -
*/}
-
Assigné à (employé)
+
Assigné à (employé)
{ }} renderInput={(params) => + /> } /> @@ -1355,7 +2218,18 @@ const PartnerClientActivite = (props) => {
} + +
+ + + +
+
 
diff --git a/src/styles/components/_apprenant.scss b/src/styles/components/_apprenant.scss index b4389ab..151fb56 100644 --- a/src/styles/components/_apprenant.scss +++ b/src/styles/components/_apprenant.scss @@ -2653,7 +2653,7 @@ font-size: small; margin-bottom: 1rem !important; } - + .session_caract_Dialog_comment_2_lines { width: 100%; diff --git a/src/styles/components/_partner_client_activite.scss b/src/styles/components/_partner_client_activite.scss index f5d6ab9..f67a275 100644 --- a/src/styles/components/_partner_client_activite.scss +++ b/src/styles/components/_partner_client_activite.scss @@ -5,7 +5,7 @@ z-index: 9999; } - + .okUpdateData { font-size: small; color: green; @@ -50,12 +50,11 @@ text-align: center; margin-bottom: 0.8rem; color: white; - cursor: pointer; + cursor: unset; font-style: italic; background-color: gray; font-weight: normal; - float: left; - width: 100%; + padding: 2px !important; } @@ -221,7 +220,7 @@ box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%); } - + .detail_header { display: inline-block; @@ -281,8 +280,13 @@ float: left; margin-bottom: 1.5rem; } + .mode_affichage { + width: 25%; + float: right; + cursor: pointer; + + } - } @media only screen and (min-width: 601px) and (max-width: 991px) { @@ -317,12 +321,11 @@ text-align: center; margin-bottom: 0.8rem; color: white; - cursor: pointer; + cursor: unset; font-style: italic; background-color: gray; font-weight: normal; - float: left; - width: 100%; + padding: 2px !important; } @@ -488,7 +491,7 @@ box-shadow: 5px 1px 5px 1px rgb(0 0 0 / 25%); } - + .detail_header { display: inline-block; @@ -519,6 +522,8 @@ border-top-right-radius: 10px !important; height: 8rem !important; font-size: small; + width: 96%; + margin-left: 2%; } .scroll_mysy { @@ -548,6 +553,15 @@ float: left; margin-bottom: 1.5rem; } + + .mode_affichage { + width: 15%; + float: right; + cursor: pointer; + + } + + } @media only screen and (min-width: 992px) and (max-width: 1199px) { @@ -582,12 +596,11 @@ text-align: center; margin-bottom: 0.8rem; color: white; - cursor: pointer; + cursor: unset; font-style: italic; background-color: gray; font-weight: normal; - float: left; - width: 100%; + padding: 2px !important; } @@ -778,6 +791,8 @@ border-top-right-radius: 10px !important; height: 8rem !important; font-size: small; + width: 96%; + margin-left: 2%; } .detail_activite:hover { @@ -814,6 +829,13 @@ margin-bottom: 1.5rem; } + .mode_affichage { + width: 12%; + float: right; + cursor: pointer; + + } + } @media only screen and (min-width: 1200px) { @@ -849,12 +871,11 @@ text-align: center; margin-bottom: 0.8rem; color: white; - cursor: pointer; + cursor: unset; font-style: italic; background-color: gray; font-weight: normal; - float: left; - width: 100%; + padding: 2px !important; } @@ -1061,7 +1082,8 @@ vertical-align: middle; padding: 5px; text-align: left; - width: 20rem; + width: 96%; + margin-left: 2%; border-radius: 10px !important; height: 7rem !important; font-size: small; @@ -1095,7 +1117,7 @@ .block_activite { - width: 30%; + width: 30%; float: left; margin-bottom: 1rem; } @@ -1103,7 +1125,12 @@ .css-1t8l2tu-MuiInputBase-input-MuiOutlinedInput-input:invalid { padding-left: 5px !important; padding-top: 0px !important; - padding-bottom: 0px !important; + padding-bottom: 0px !important; + } + .mode_affichage { + width: 8%; + float: right; + cursor: pointer; } } @@ -1121,7 +1148,7 @@ padding: 0px !important; padding-left: 5px !important; padding-right: 5px !important; - + } .css-1jy569b-MuiFormLabel-root-MuiInputLabel-root {