diff --git a/src/views/OperationsModule/OperationComponents/Mentorship/UpdateMentorship.jsx b/src/views/OperationsModule/OperationComponents/Mentorship/UpdateMentorship.jsx index db88c671..4ababab0 100644 --- a/src/views/OperationsModule/OperationComponents/Mentorship/UpdateMentorship.jsx +++ b/src/views/OperationsModule/OperationComponents/Mentorship/UpdateMentorship.jsx @@ -73,19 +73,6 @@ const statusOption = [ { value: "Dropped out", label: "Dropped out" }, ]; -const Activityoptions = [ - { value: "Industry talk/Expert talk", label: "Industry talk/Expert talk" }, - { - value: "Industry visit/Exposure visit", - label: "Industry visit/Exposure visit", - }, - { - value: "Workshop/Training Session/Activity (In/Off campus)", - label: "Workshop/Training Session/Activity (In/Off campus)", - }, - { value: "Alumni Engagement", label: "Alumni Engagement" }, - { value: "Placement Drive", label: "Placement Drive" }, -]; const UpdateMentorship = (props) => { let { onHide, show, closeopsedit, refreshTableOnDataSaving } = props; diff --git a/src/views/OperationsModule/Operations.jsx b/src/views/OperationsModule/Operations.jsx index 419eae97..d2967bf1 100644 --- a/src/views/OperationsModule/Operations.jsx +++ b/src/views/OperationsModule/Operations.jsx @@ -50,11 +50,14 @@ import { // import UploadFile from "./OperationComponents/UploadFile"; import { FaDownload, FaFileUpload, FaPlus } from "react-icons/fa"; import UploadFile from "./OperationComponents/UploadFile"; -import TotUpload from "./UploadFiles/TotUpload"; +import TotUpload from "./UploadFiles/TOT/TotUpload"; import MentorshipdataField from "./OperationComponents/Mentorship/MentorshipdataField"; import MentorBulkAdd from "./OperationComponents/Mentorship/MentorBulkAdd"; import MentorshipSearchbar from "./OperationComponents/Mentorship/MentorshipSearchbar"; import { createLatestAcivity } from "src/utils/LatestChange/Api"; +import MentorshipUpload from "./UploadFiles/MentorShip/MentorshipUpload"; +import UpskillUpdate from "./OperationComponents/UpskillUpdate"; +import UpskillingUpload from "./UploadFiles/Upskilling/UpskillingUpload"; const tabPickerOptionsMain = [ { title: "Core Programs", key: "coreProgramme" }, @@ -92,6 +95,8 @@ const Styled = styled.div` const totfile=`https://medhasisstg.s3.ap-south-1.amazonaws.com/ToT-Template.xlsx`; const feildActivityFIle='https://medhasisstg.s3.ap-south-1.amazonaws.com/Field-Activities-Template.xlsx' +const mentorshipFile='https://medhasisstg.s3.ap-south-1.amazonaws.com/Field-Activities-Template.xlsx' + const Operations = ({ opsData, @@ -136,6 +141,9 @@ const Operations = ({ const [uploadModal, setUploadModal] = useState({ myData: false, tot: false, + mentorship:false, + upskill:false, + pitching:false }); const userId = localStorage.getItem("user_id"); @@ -536,7 +544,6 @@ const Operations = ({ variables, }) .then((data) => { - console.log(data.data.data); setOpts(data.data.data.activeMentoshipData.values); setoptsAggregate(data.data.data.activeMentoshipData.aggregate); }) @@ -1033,20 +1040,31 @@ const Operations = ({ let datavaluesforlatestcreate={}; try { if (key === "my_data") { - datavaluesforlatestcreate={module_name:"Operations",activity:"Field Activities Upload File",event_id:"",updatedby:userId ,changes_in:{changes_in:"N/A"}}; + datavaluesforlatestcreate={module_name:"Operations",activity:"Field Activities Upload File",event_id:"",updatedby:userId ,changes_in:{changes_in:{name:"N/A"}}}; await createLatestAcivity(datavaluesforlatestcreate); await api.post("/users-ops-activities/createBulkOperations", data); setAlert("Data created successfully.", "success"); } if (key === "tot") { - datavaluesforlatestcreate={module_name:"Operations",activity:"User-Tot Upload File",event_id:"",updatedby:userId ,changes_in:{changes_in:"N/A"}}; + datavaluesforlatestcreate={module_name:"Operations",activity:"User-Tot Upload File",event_id:"",updatedby:userId ,changes_in:{changes_in:{name:"N/A"}}}; await createLatestAcivity(datavaluesforlatestcreate); await bulkCreateUsersTots(data) .then(() => { setAlert("data created successfully.", "success"); }) .catch((err) => { - setAlert("Unable to create upskilling data.", "error"); + setAlert("Unable to create TOT data.", "error"); + }) + } + if (key === "mentorship") { + datavaluesforlatestcreate={module_name:"Operations",activity:"Mentorship Upload File",event_id:"",updatedby:userId ,changes_in:{changes_in:{name:"N/A"}}}; + await createLatestAcivity(datavaluesforlatestcreate); + await bulkCreateMentorship(data) + .then(() => { + setAlert("data created successfully.", "success"); + }) + .catch((err) => { + setAlert("Unable to create Mentorship data.", "error"); }) } getoperations() @@ -1075,6 +1093,53 @@ const Operations = ({ setUploadModal(false); }; + const openclosepopup=()=>{ + if (activeTab.key == "my_data") { + setUploadModal({ + myData: true, + tot: false, + mentorship:false, + upskill:false, + pitching:true + }); + } if(activeTab.key == "useTot") { + setUploadModal({ + tot: true, + myData: false, + mentorship:false, + upskill:false, + pitching:true + }); + } + if(activeTab.key == "mentorship"){ + setUploadModal({ + tot: false, + myData: false, + mentorship:true, + upskill:false, + pitching:true + }); + } + if(activeTab.key == "upskilling"){ + setUploadModal({ + tot: false, + myData: false, + mentorship:false, + pitching:true, + upskill:true + }); + } + if(activeTab.key == "collegePitches"){ + setUploadModal({ + tot: false, + myData: false, + mentorship:false, + upskill:false, + pitching:true + }); + } + } + return ( @@ -1115,21 +1180,11 @@ const Operations = ({ - {activeTab.key == "my_data" || activeTab.key == "useTot" ? ( + {activeTab.key == "my_data" || activeTab.key == "useTot" || activeTab.key =="mentorship" || activeTab.key == "upskilling" || activeTab.key == "collegePitches" ? ( + ) : ( + + )} + + + )} + + + + + ); +}; + +export default Check; diff --git a/src/views/OperationsModule/UploadFiles/MentorShip/MentorshipUpload.jsx b/src/views/OperationsModule/UploadFiles/MentorShip/MentorshipUpload.jsx new file mode 100644 index 00000000..11bfa6cb --- /dev/null +++ b/src/views/OperationsModule/UploadFiles/MentorShip/MentorshipUpload.jsx @@ -0,0 +1,523 @@ +import React, { useState, useEffect } from "react"; +import { Modal, Spinner } from "react-bootstrap"; +import { + FaEdit, + FaFileUpload, + FaCheckCircle, + FaRegCheckCircle, +} from "react-icons/fa"; +import { isAdmin, isSRM } from "src/common/commonFunctions"; +import { getAllSrmbyname } from "src/utils/function/lookupOptions"; +import { getAddressOptions, getStateDistricts } from "src/views/Address/addressActions"; +import * as XLSX from "xlsx"; +import Check from "./Check"; + +const expectedColumns = [ + "Mentor Name", + "Contact", + "Email ID", + "Mentor's Domain", + "Designation/Title", + "Mentor's Company Name", + "Mentor's Area", + "Mentor's State", + "Outreach (Offline/Online)", + "Onboarding Date", + "Social Media Profile Link", + "Medha Area", + "Medha Program Name", + "Status", + "Additional Comments", + "Assigned To" +]; + +const MentorshipUpload = (props) => { + const { onHide } = props; + const [showForm, setShowForm] = useState(true); + const [showSpinner, setShowSpinner] = useState(true); + const [fileName, setFileName] = useState(""); + const [nextDisabled, setNextDisabled] = useState(false); + const [uploadSuccesFully, setUploadSuccesFully] = useState(""); + const [notuploadSuccesFully, setNotUploadSuccesFully] = useState(""); + const [areaOptions, setAreaOptions] = useState([]); + const [stateOptions, setStateOptions] = useState([]); + const [assigneOption, setAssigneeOption] = useState([]); + const [excelData, setExcelData] = useState([]); + const [notUploadedData, setNotuploadedData] = useState([]); + const [uploadNew, setUploadNew] = useState(false); + const [showModalMentor,setShowModalMentor]=useState(false) + + useEffect(() => { + const timer = setTimeout(() => { + setShowSpinner(false); + }, 3000); + return () => clearTimeout(timer); + }, []); + + const validateColumns = (data, expectedColumns) => { + const fileColumns = Object.keys(data[0]); + // if(!data){ + // setUploadSuccesFully("No Data") + // } + if(data.length == 0){ + setNotUploadSuccesFully( + "File is empty please select file which has data in it" + ); + return false + } + if (!data ) { + setNotUploadSuccesFully( + "Some data fields are empty or not properly initialized" + ); + return false; + } + const missingColumns = expectedColumns.filter( + (col) => {; + return !fileColumns.includes(col.trim()) + } + ); + const extraColumns = fileColumns.filter( + (col) => !expectedColumns.includes(col.trim()) + ); + const incompleteColumns = expectedColumns.filter(col => + data.every(row => row[col] === null || row[col] === "" || row[col] ===undefined ) + ); + + if (incompleteColumns.length > 0) { + setNotUploadSuccesFully(`Columns with missing data: ${incompleteColumns.join(", ")}`); + return false; + } + + if (data.length > 0 && data.length > 200) { + setNotUploadSuccesFully(`Number of rows should be less than 200`); + } + + if (missingColumns.length > 0) { + console.error(`Missing columns: ${missingColumns.join(", ")}`); + setNotUploadSuccesFully(`Missing columns: ${missingColumns.join(", ")}`); + return false; + } + + if (extraColumns.length > 0) { + console.error(`Extra columns: ${extraColumns.join(", ")}`); + setNotUploadSuccesFully(`Extra columns: ${extraColumns.join(", ")}`); + return false; + } + return true; + }; + + const handleFileChange = (event) => { + const fileInput = event.target; + const file = fileInput.files[0]; + + setShowForm(true); + setFileName(""); // Reset the file name display + setNextDisabled(false); // Optionally disable the next button + setUploadSuccesFully(""); + setNotUploadSuccesFully(""); + + if (file) { + setFileName(`${file.name} Uploaded`); + + const reader = new FileReader(); + + reader.onload = () => { + const fileData = reader.result; + try { + convertExcel(fileData); + } catch (error) { + setNotUploadSuccesFully(error?.message); + } + }; + + reader.readAsBinaryString(file); + fileInput.value = ""; + } else { + setUploadSuccesFully("The file type should be .xlsx"); + } + }; + + const convertExcel = (excelData) => { + const workbook = XLSX.read(excelData, { type: "binary" }); + const worksheet = workbook.Sheets[workbook.SheetNames[0]]; + const results = XLSX.utils.sheet_to_json(worksheet, { header: 1 }); + + const headers = results[0]; + const data = results.slice(1).map((row) => { + const newItem = {}; + headers.forEach((header, i) => { + newItem[header.trim()] = row[i]; + }); + return newItem; + }); + processFileData(data); + }; + + const processFileData = (jsonData) => { + const validRecords = []; + const invalidRecords = []; + for (const row of jsonData) { + const isRowEmpty = Object.values(row).every( + (value) => value === null || value === "" + ); + + if (isRowEmpty) { + break; + } + validRecords.push(row); + } + const filteredArray = validRecords.filter((obj) => + Object.values(obj).some((value) => value !== undefined) + ); + if (filteredArray.length == 0) { + setNotUploadSuccesFully( + "File is empty please select file which has data in it" + ); + return; + } + if (validateColumns(filteredArray, expectedColumns)) { + setUploadSuccesFully(`File Uploaded`); + setNextDisabled(true); + processParsedData(filteredArray); + } + }; + + const excelSerialDateToJSDate = (serial) => { + const excelEpoch = new Date(Date.UTC(1899, 11, 30)); + const date = new Date(excelEpoch.getTime() + serial * 86400000); + const year = date.getUTCFullYear(); + const month = String(date.getUTCMonth() + 1).padStart(2, "0"); + const day = String(date.getUTCDate()).padStart(2, "0"); + return `${year}-${month}-${day}`; + }; + +useEffect(() => { + + getAddressOptions().then((data) => { + setStateOptions( + data?.data?.data?.geographiesConnection.groupBy.state + .map((state) => ({ + key: state?.id, + label: state?.key, + value: state?.key, + })) + .sort((a, b) => a.label.localeCompare(b.label)) + ); + }); + getStateDistricts().then((data) => { + setAreaOptions([]); + setAreaOptions( + data?.data?.data?.geographiesConnection.groupBy.district + .map((area) => ({ + key: area.id, + label: area.key, + value: area.key, + })) + .sort((a, b) => a.label.localeCompare(b.label)) + ); + }); + const getdata = async () => { + const data = await getAllSrmbyname(); + setAssigneeOption(data); + }; + + getdata(); +}, [props]); + +const processParsedData = (data) => { + const formattedData = []; + const notFoundData = []; + const userId = localStorage.getItem("user_id"); + + data.forEach((item, index) => { + const newItem = {}; + Object.keys(item).forEach((key) => { + newItem[key] = item[key]; + }); + + const currentUser = localStorage.getItem("user_id"); + const StateCheck = stateOptions.find( + (state) => state === newItem["State"] + )?.id; + const areaCheck = areaOptions.find( + (area) => area === newItem["City"] + )?.id; + + + + const srmcheck = assigneOption.find( + (user) => user.label === newItem["Assigned To"] + )?.value; + + + + const onboardingDate = excelSerialDateToJSDate(newItem["Onboarding Date"]); + + + // const isStartDateValid = isValidDateFormat(startDate); + + const createdby = Number(userId); + const updatedby = Number(userId); + + const isValidContact=(contact) =>{ + const pattern = /^[0-9]{10}$/; // Regex for 10-digit number + return contact && pattern.test(contact); + } + let parseDate; + + if (!srmcheck ||!newItem["Mentor Name"] || !newItem["Email ID"] || !newItem["Mentor's Domain"] || !isValidContact(newItem["Contact"] ) || !newItem["Mentor's Company Name"] || !newItem["Designation/Title"]) { + notFoundData.push({ + index: index + 1, + assigned_to: newItem["Assigned To"], + mentor_name: newItem["Mentor Name"] || "", + email: newItem["Email ID"] || "", + mentor_domain: newItem["Mentor's Domain"] || "", + mentor_company_name: newItem["Mentor's Company Name"] || "", + designation: newItem["Designation/Title"] || "", + mentor_area: newItem["Mentor's Area"] || "", + mentor_state: newItem["Mentor's State"] || "", + outreach: newItem["Outreach (Offline/Online)"] || "", + onboarding_date: onboardingDate || "", + social_media_profile_link: newItem["Social Media Profile Link"] || "", + medha_area: newItem["Medha Area"] || "", + status: newItem["Status"] || "", + program_name: newItem["Medha Program Name"] || "", + contact: newItem["Contact"] || "" + }); + } else { + formattedData.push({ + assigned_to: srmcheck, + mentor_name: newItem["Mentor Name"] || "", + email: newItem["Email ID"] || "", + mentor_domain: newItem["Mentor's Domain"] || "", + mentor_company_name: newItem["Mentor's Company Name"] || "", + designation: newItem["Designation/Title"] || "", + mentor_area: newItem["Mentor's Area"] || "", + mentor_state: newItem["Mentor's State"] || "", + outreach: newItem["Outreach (Offline/Online)"] || "", + onboarding_date: onboardingDate || "", + social_media_profile_link: newItem["Social Media Profile Link"] || "", + medha_area: newItem["Medha Area"] || "", + status: newItem["Status"] || "", + program_name: newItem["Medha Program Name"] || "", + contact: newItem["Contact"] || "" + }); + } + }); + setExcelData(formattedData); + setNotuploadedData(notFoundData); +}; + +const uploadDirect = () => { + if (notUploadedData.length === 0 && excelData.length > 0) { + setShowForm(false); + } else { + setShowModalMentor(true); + } +}; + +const proceedData = async () => { + if (notUploadedData.length === 0 && excelData.length > 0) { + setUploadNew(true); + props.uploadExcel(excelData, "mentorship"); + } +}; + +const uploadNewData =()=>{ + setShowForm(true); + setUploadNew(!uploadNew) +setFileName(''); +setNextDisabled(false); +setUploadSuccesFully(''); + +} + +const hideShowModal = () => { + setShowModalMentor(false); + setUploadSuccesFully(""); + setShowForm(true); + setFileName(''); // Reset the file name display + setNextDisabled(false); // Optionally disable the next button + setUploadSuccesFully(''); +}; + + return ( + <> + + + +

+ Upload Mentorship Data +

+
+
+ <> + {showForm ? ( + + {showSpinner ? ( +
+ + Loading... + +
+ ) : ( + <> +
+
+

+ Click Here To Upload{" "} +

+
+ +
+ +
+ +
+
+ {notuploadSuccesFully ? ( +
+ {" "} + {notuploadSuccesFully}{" "} +
+ ) : ( +
+ {" "} + {fileName}{" "} +
+ )} + {(isSRM() || isAdmin()) && ( +
+
+ + + +
+
+

+ Note : Maximum recomended number of records is 100 + per excel +

+
+
+ )} +
+ + )} +
+ ) : ( + +
+

+ {/* {" "} */} + {/* {!uploadNew ? `${}${excelData.length} row(s) of data will be uploaded` :`${} ${excelData.length} row(s) of data uploaded successfully` } */} + {!uploadNew ? ( + <> + {excelData.length}{" "} + row(s) of data will be uploaded. + + ) : ( + <> + {" "} + {excelData.length} row(s) of data uploaded successfully! + + )} +

+
+
+ + + {!uploadNew ? ( + + ) : ( + + )} +
+
+ )} + +
+ + hideShowModal()} + notUploadedData={notUploadedData} + excelData={excelData} + uploadExcel={props.uploadExcel} + /> + + ); +}; + +export default MentorshipUpload; diff --git a/src/views/OperationsModule/UploadFiles/Pitching/Check.jsx b/src/views/OperationsModule/UploadFiles/Pitching/Check.jsx new file mode 100644 index 00000000..e69de29b diff --git a/src/views/OperationsModule/UploadFiles/Pitching/PitchingUpload.jsx b/src/views/OperationsModule/UploadFiles/Pitching/PitchingUpload.jsx new file mode 100644 index 00000000..25eb4c46 --- /dev/null +++ b/src/views/OperationsModule/UploadFiles/Pitching/PitchingUpload.jsx @@ -0,0 +1,196 @@ +import React, { useState, useEffect } from "react"; +import { Modal, Spinner } from "react-bootstrap"; +import {FaEdit, FaFileUpload,FaCheckCircle, FaRegCheckCircle } from "react-icons/fa"; +import { isAdmin, isSRM } from "src/common/commonFunctions"; + + +const PitchingUpload = () => { + const { onHide } = props; + const [showForm, setShowForm] = useState(true); + const [showSpinner, setShowSpinner] = useState(true); + const [notuploadSuccesFully, setNotUploadSuccesFully] = useState(""); + + useEffect(() => { + const timer = setTimeout(() => { + setShowSpinner(false); + }, 3000); + return () => clearTimeout(timer); + }, []); + return ( + <> + + + +

Upload Mentorship Data

+
+
+ <> + {showForm ? ( + + {showSpinner ? ( +
+ + Loading... + +
+ ) : ( + <> +
+
+

+ Click Here To Upload{" "} +

+
+ +
+ +
+ +
+
+ {notuploadSuccesFully ? ( +
+ {" "} + {notuploadSuccesFully}{" "} +
+ ) : ( +
+ {" "} + {fileName}{" "} +
+ )} + {(isSRM() || isAdmin()) && ( +
+
+ + + +
+
+

+ Note : Maximum recomended number of records is 100 + per excel +

+
+
+ )} +
+ + )} +
+ ) : ( + +
+

+ {/* {" "} */} + {/* {!uploadNew ? `${}${excelData.length} row(s) of data will be uploaded` :`${} ${excelData.length} row(s) of data uploaded successfully` } */} + {/* {!uploadNew ? ( + <> + {excelData.length}{" "} + row(s) of data will be uploaded. + + ) : ( + <> + {" "} + {excelData.length} row(s) of data uploaded successfully! + + )} */} +

+
+
+ + + {/* {!uploadNew ? ( + + ) : ( + + )} */} +
+
+ )} + +
+ + {/* hideShowModal()} + notUploadedData={notUploadedData} + excelData={excelData} + uploadExcel={props.uploadExcel} + /> */} + + ) +} + +export default PitchingUpload \ No newline at end of file diff --git a/src/views/OperationsModule/UploadFiles/CheckTot.jsx b/src/views/OperationsModule/UploadFiles/TOT/CheckTot.jsx similarity index 99% rename from src/views/OperationsModule/UploadFiles/CheckTot.jsx rename to src/views/OperationsModule/UploadFiles/TOT/CheckTot.jsx index 12faa35c..b83a4b83 100644 --- a/src/views/OperationsModule/UploadFiles/CheckTot.jsx +++ b/src/views/OperationsModule/UploadFiles/TOT/CheckTot.jsx @@ -1,5 +1,5 @@ import React from "react"; -import { isAdmin, isSRM } from "../../../common/commonFunctions"; +import { isAdmin, isSRM } from "../../../../common/commonFunctions"; import { Modal } from "react-bootstrap"; import { useState, useEffect } from "react"; import Table from "react-bootstrap/Table"; diff --git a/src/views/OperationsModule/UploadFiles/TotUpload.jsx b/src/views/OperationsModule/UploadFiles/TOT/TotUpload.jsx similarity index 98% rename from src/views/OperationsModule/UploadFiles/TotUpload.jsx rename to src/views/OperationsModule/UploadFiles/TOT/TotUpload.jsx index c70c5f3a..d692863d 100644 --- a/src/views/OperationsModule/UploadFiles/TotUpload.jsx +++ b/src/views/OperationsModule/UploadFiles/TOT/TotUpload.jsx @@ -1,10 +1,10 @@ import React, { useState, useEffect } from "react"; import { Modal, Spinner } from "react-bootstrap"; import styled from "styled-components"; -import { isAdmin, isSRM } from "../../../common/commonFunctions"; -import { GET_ALL_BATCHES, GET_ALL_INSTITUTES } from "../../../graphql"; -import { queryBuilder } from "../../../apis"; -import { getAllSrmbyname } from "../../../utils/function/lookupOptions"; +import { isAdmin, isSRM } from "../../../../common/commonFunctions"; +import { GET_ALL_BATCHES, GET_ALL_INSTITUTES } from "../../../../graphql"; +import { queryBuilder } from "../../../../apis"; +import { getAllSrmbyname } from "../../../../utils/function/lookupOptions"; import {FaEdit, FaFileUpload,FaCheckCircle, FaRegCheckCircle } from "react-icons/fa"; // import CheckValuesOpsUploadedData from "./CheckValuesOpsUploadedData"; import Papa from "papaparse"; @@ -12,8 +12,8 @@ import * as XLSX from "xlsx"; import { getAddressOptions, getStateDistricts, -} from "../../Address/addressActions"; -import { bulkCreateUsersTots, getTotPickList } from "../OperationComponents/operationsActions"; +} from "../../../Address/addressActions"; +import { bulkCreateUsersTots, getTotPickList } from "../../OperationComponents/operationsActions"; import CheckTot from "./CheckTot"; import { isNumber } from "lodash"; import { setAlert } from "src/store/reducers/Notifications/actions"; diff --git a/src/views/OperationsModule/UploadFiles/Upskilling/UpskillingUpload.jsx b/src/views/OperationsModule/UploadFiles/Upskilling/UpskillingUpload.jsx new file mode 100644 index 00000000..ae8cd9b8 --- /dev/null +++ b/src/views/OperationsModule/UploadFiles/Upskilling/UpskillingUpload.jsx @@ -0,0 +1,195 @@ +import React, { useState, useEffect } from "react"; +import { Modal, Spinner } from "react-bootstrap"; +import {FaEdit, FaFileUpload,FaCheckCircle, FaRegCheckCircle } from "react-icons/fa"; +import { isAdmin, isSRM } from "src/common/commonFunctions"; + + +const UpskillingUpload = (props) => { + const { onHide } = props; + const [showForm, setShowForm] = useState(true); + const [showSpinner, setShowSpinner] = useState(true); + + useEffect(() => { + const timer = setTimeout(() => { + setShowSpinner(false); + }, 3000); + return () => clearTimeout(timer); + }, []); + return ( + <> + + + +

Upload Student Upskilling Data

+
+
+ <> + {showForm ? ( + + {showSpinner ? ( +
+ + Loading... + +
+ ) : ( + <> +
+
+

+ Click Here To Upload{" "} +

+
+ +
+ +
+ +
+
+ {/* {notuploadSuccesFully ? ( +
+ {" "} + {notuploadSuccesFully}{" "} +
+ ) : ( +
+ {" "} + {fileName}{" "} +
+ )} */} + {(isSRM() || isAdmin()) && ( +
+
+ + + +
+
+

+ Note : Maximum recomended number of records is 100 + per excel +

+
+
+ )} +
+ + )} +
+ ) : ( + +
+

+ {/* {" "} */} + {/* {!uploadNew ? `${}${excelData.length} row(s) of data will be uploaded` :`${} ${excelData.length} row(s) of data uploaded successfully` } */} + {/* {!uploadNew ? ( + <> + {excelData.length}{" "} + row(s) of data will be uploaded. + + ) : ( + <> + {" "} + {excelData.length} row(s) of data uploaded successfully! + + )} */} +

+
+
+ + + {/* {!uploadNew ? ( + + ) : ( + + )} */} +
+
+ )} + +
+ + {/* hideShowModal()} + notUploadedData={notUploadedData} + excelData={excelData} + uploadExcel={props.uploadExcel} + /> */} + + ) +} + +export default UpskillingUpload