diff --git a/src/routes.js b/src/routes.js
index c9b7907..150b499 100644
--- a/src/routes.js
+++ b/src/routes.js
@@ -129,14 +129,16 @@ import EditSalesCoOrdinator from "./views/SalesCoOrdinators/EditSalesCoOrdinator
import AddSalesCoOrdinator from "./views/SalesCoOrdinators/AddSalesCoOrdinator";
import TodayAttendance from "./views/Attendance/TodayAttendance";
import AttendanceSalesCoordinator from "./views/Attendance/AttendanceSalesCoordinator";
-import SingleAttendanceSalesCoOrdinator from "./views/Attendance/SingleAttendanceSalesCoordinator";
import TodayLeave from "./views/Leaves/TodayLeaves";
import LeaveSalesCoordinator from "./views/Leaves/LeaveSalesCoordinator";
-import SingleLeaveSalesCoOrdinator from "./views/Leaves/SingleLeaveSalesCoordinator";
//TerritoryManagers
import EditTerritoryManager from "./views/TerritoryManager/EditTerritoryManager";
import TerritoryManager from "./views/TerritoryManager/TerritoryManager";
import AddTerritoryManager from "./views/TerritoryManager/AddTerritoryManager";
+import AttendanceTerritoryManager from "./views/Attendance/AttendanceTerritoryManager";
+import SingleUserAttendance from "./views/Attendance/SingleUserAttendance";
+import SingleUserleave from "./views/Leaves/SingleUserLeave";
+import LeaveTerritoryManager from "./views/Leaves/LeaveTerritoryManager";
const routes = [
//dashboard
@@ -236,11 +238,17 @@ const routes = [
element: AttendanceSalesCoordinator,
navName: "AttendanceSalesCoOrdinator",
},
+ {
+ path: "/territorymanager/attendance",
+ name: "Attendance TerritoryManager",
+ element: AttendanceTerritoryManager,
+ navName: "AttendanceTerritoryManager",
+ },
{
path: "/attendance/view/:id",
- name: "Single SalesCoOrdinator Attendance",
- element: SingleAttendanceSalesCoOrdinator,
- navName: "AttendanceSalesCoOrdinator",
+ name: "Single user Attendance",
+ element: SingleUserAttendance,
+ navName: "Attendance",
},
// Leaves
{
@@ -255,11 +263,17 @@ const routes = [
element: LeaveSalesCoordinator,
navName: "LeaveSalesCoOrdinator",
},
+ {
+ path: "/territorymanager/leave",
+ name: "Leave TerritoryManager",
+ element: LeaveTerritoryManager,
+ navName: "LeaveTerritoryManager",
+ },
{
path: "/leave/view/:id",
- name: "Single SalesCoOrdinator Leave",
- element: SingleLeaveSalesCoOrdinator,
- navName: "LeaveSalesCoOrdinator",
+ name: "Single User Leave",
+ element: SingleUserleave,
+ navName: "Leaves",
},
//Gst tax
{
diff --git a/src/views/Attendance/AttendanceTerritoryManager.js b/src/views/Attendance/AttendanceTerritoryManager.js
new file mode 100644
index 0000000..a54a817
--- /dev/null
+++ b/src/views/Attendance/AttendanceTerritoryManager.js
@@ -0,0 +1,328 @@
+import React, { useState, useEffect, useRef } from "react";
+import { Link } from "react-router-dom";
+import axios from "axios";
+import Button from "@material-ui/core/Button";
+import { useNavigate } from "react-router-dom";
+import { isAutheticated } from "src/auth";
+import swal from "sweetalert";
+
+const AttendanceTerritoryManager = () => {
+ const token = isAutheticated();
+ const navigate = useNavigate();
+ const [loading, setLoading] = useState(false);
+ const [territorymanagersData, setterritorymanagerData] = useState([]);
+
+ const nameRef = useRef();
+ const mobileRef = useRef();
+ const VerifyterritorymanagerRef = useRef();
+
+ const [currentPage, setCurrentPage] = useState(1);
+ const [itemPerPage, setItemPerPage] = useState(10);
+ const [totalData, setTotalData] = useState(0);
+
+ const getterritorymanagerData = async () => {
+ setLoading(true);
+ try {
+ const res = await axios.get(`/api/territorymanager/getAll/`, {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ params: {
+ page: currentPage,
+ show: itemPerPage,
+ name: nameRef.current.value,
+ mobileNumber: mobileRef.current.value,
+ isVerified: VerifyterritorymanagerRef.current.value,
+ },
+ });
+ // console.log(res.data);
+ setterritorymanagerData(res.data?.territoryManager);
+ setTotalData(res.data?.total_data);
+ } catch (err) {
+ const msg = err?.response?.data?.message || "Something went wrong!";
+ swal({
+ title: "Error",
+ text: msg,
+ icon: "error",
+ button: "Retry",
+ dangerMode: true,
+ });
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => {
+ getterritorymanagerData();
+ }, [ itemPerPage, currentPage]);
+
+ return (
+
+
+
+
+
+
+
+ territorymanager Attendance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name |
+ Mobile No. |
+ Email |
+ Verify |
+ Register On |
+ Action |
+
+
+
+
+ {loading ? (
+
+
+ Loading...
+ |
+
+ ) : territorymanagersData?.length > 0 ? (
+ territorymanagersData?.map((territorymanager, i) => {
+ return (
+
+
+ {territorymanager?.name}
+ |
+
+ {territorymanager?.mobileNumber}
+ |
+
+ {territorymanager?.email ? (
+ territorymanager?.email
+ ) : (
+
+ No Email Added!
+
+ )}
+ |
+
+
+ {territorymanager?.isVerified
+ ? "YES"
+ : "NO"}
+
+ |
+
+ {new Date(
+ territorymanager.createdAt
+ ).toLocaleString("en-IN", {
+ weekday: "short",
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ hour12: true,
+ })}
+ |
+
+
+
+
+ |
+
+ );
+ })
+ ) : (
+
+
+ No TerritoryManager Available...
+ |
+
+ )}
+
+
+
+
+
+
+
+ Showing {currentPage * itemPerPage - itemPerPage + 1} to{" "}
+ {Math.min(currentPage * itemPerPage, totalData)} of{" "}
+ {totalData} entries
+
+
+
+
+
+
+ -
+
+ setCurrentPage((prev) =>
+ prev > 1 ? prev - 1 : prev
+ )
+ }
+ >
+ Previous
+
+
+ - = totalData
+ ? "paginate_button page-item next disabled"
+ : "paginate_button page-item next"
+ }
+ >
+
+ setCurrentPage((prev) =>
+ prev * itemPerPage < totalData
+ ? prev + 1
+ : prev
+ )
+ }
+ >
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AttendanceTerritoryManager;
diff --git a/src/views/Attendance/SingleAttendanceSalesCoordinator.js b/src/views/Attendance/SingleUserAttendance.js
similarity index 95%
rename from src/views/Attendance/SingleAttendanceSalesCoordinator.js
rename to src/views/Attendance/SingleUserAttendance.js
index 3856eb1..d91d78b 100644
--- a/src/views/Attendance/SingleAttendanceSalesCoordinator.js
+++ b/src/views/Attendance/SingleUserAttendance.js
@@ -5,18 +5,18 @@ import Button from "@material-ui/core/Button";
import { isAutheticated } from "src/auth";
import swal from "sweetalert";
-const SingleAttendanceSalesCoOrdinator = () => {
+const SingleUserAttendance = () => {
const { id } = useParams();
const token = isAutheticated();
const navigate = useNavigate();
const [loading, setLoading] = useState(false);
- const [salesCoordinator, setSalesCoordinator] = useState({});
+ const [user, setuser] = useState({});
const [attendanceData, setAttendanceData] = useState([]);
const [currentPage, setCurrentPage] = useState(1);
const [itemPerPage, setItemPerPage] = useState(10);
const [totalData, setTotalData] = useState(0);
-
- const getSingleSalesCoOrdinatorAttendance = async () => {
+const [userType, setUserType] = useState("");
+ const getSingleuserAttendance = async () => {
setLoading(true);
try {
const res = await axios.get(`/api/v1/attendance/${id}`, {
@@ -28,8 +28,10 @@ const SingleAttendanceSalesCoOrdinator = () => {
show: itemPerPage,
},
});
- setSalesCoordinator(res.data?.user);
+ console.log(res.data);
+ setuser(res.data?.user);
setAttendanceData(res.data?.attendance);
+ setUserType(res.data?.userType);
// console.log(res.data);
setTotalData(res.data?.total_data);
} catch (err) {
@@ -47,7 +49,7 @@ const SingleAttendanceSalesCoOrdinator = () => {
};
useEffect(() => {
- getSingleSalesCoOrdinatorAttendance();
+ getSingleuserAttendance();
}, [itemPerPage, currentPage]);
return (
@@ -58,9 +60,9 @@ const SingleAttendanceSalesCoOrdinator = () => {
- SalesCoOrdinator Attendance
+ {userType} Attendance
- {salesCoordinator.name} ({salesCoordinator.email})
+ {user.name} ({user.email})
@@ -73,7 +75,7 @@ const SingleAttendanceSalesCoOrdinator = () => {
textTransform: "capitalize",
}}
onClick={() => {
- navigate("/salescoordinator/attendance", {
+ navigate("/attendance/today", {
replace: true,
});
}}
@@ -252,4 +254,4 @@ const SingleAttendanceSalesCoOrdinator = () => {
);
};
-export default SingleAttendanceSalesCoOrdinator;
+export default SingleUserAttendance;
diff --git a/src/views/Attendance/TodayAttendance.js b/src/views/Attendance/TodayAttendance.js
index 3ad3cee..d9d9e56 100644
--- a/src/views/Attendance/TodayAttendance.js
+++ b/src/views/Attendance/TodayAttendance.js
@@ -27,7 +27,6 @@ const TodayAttendance = () => {
show: itemPerPage,
},
});
- // console.log(res.data);
setSalesCoOrdinatorsData(res.data?.attendance);
setTotalData(res.data?.total_data);
} catch (err) {
@@ -63,7 +62,7 @@ const TodayAttendance = () => {
- Today's SalesCoOrdinators Attendance
+ Today's Attendance
{
Date : {today}
-
+
+
@@ -144,7 +158,7 @@ const TodayAttendance = () => {
{loading ? (
-
+ |
Loading...
|
@@ -202,7 +216,7 @@ const TodayAttendance = () => {
})
) : (
-
+ |
No Attendance Records Available...
|
diff --git a/src/views/Leaves/LeaveTerritoryManager.js b/src/views/Leaves/LeaveTerritoryManager.js
new file mode 100644
index 0000000..29e7e1c
--- /dev/null
+++ b/src/views/Leaves/LeaveTerritoryManager.js
@@ -0,0 +1,319 @@
+import React, { useState, useEffect, useRef } from "react";
+import { Link } from "react-router-dom";
+import axios from "axios";
+import Button from "@material-ui/core/Button";
+import { useNavigate } from "react-router-dom";
+import { isAutheticated } from "src/auth";
+import swal from "sweetalert";
+
+const LeaveTerritoryManager = () => {
+ const token = isAutheticated();
+ const navigate = useNavigate();
+ const [loading, setLoading] = useState(false);
+ const [territorymanagersData, setterritorymanagersData] = useState([]);
+ const nameRef = useRef();
+ const mobileRef = useRef();
+ const verifyRef = useRef();
+ const [currentPage, setCurrentPage] = useState(1);
+ const [itemPerPage, setItemPerPage] = useState(10);
+ const [totalData, setTotalData] = useState(0);
+
+ const getterritorymanagersData = async () => {
+ setLoading(true);
+ try {
+ const res = await axios.get(`/api/territorymanager/getAll/`, {
+ headers: {
+ Authorization: `Bearer ${token}`,
+ },
+ params: {
+ page: currentPage,
+ show: itemPerPage,
+ name: nameRef.current.value,
+ mobileNumber: mobileRef.current.value,
+ isVerified: verifyRef.current.value,
+ },
+ });
+ setterritorymanagersData(res.data?.territorymanager);
+ setTotalData(res.data?.total_data);
+ } catch (err) {
+ const msg = err?.response?.data?.message || "Something went wrong!";
+ swal({
+ title: "Error",
+ text: msg,
+ icon: "error",
+ button: "Retry",
+ dangerMode: true,
+ });
+ } finally {
+ setLoading(false);
+ }
+ };
+
+ useEffect(() => {
+ getterritorymanagersData();
+ }, [currentPage, itemPerPage]);
+
+ const handleFilter = () => {
+ setCurrentPage(1);
+ getterritorymanagersData();
+ };
+
+ return (
+
+
+
+
+
+
+
+ Territory Managers Leaves
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Name |
+ Mobile No. |
+ Email |
+ Verify |
+ Register On |
+ Action |
+
+
+
+
+ {loading ? (
+
+
+ Loading...
+ |
+
+ ) : territorymanagersData.length > 0 ? (
+ territorymanagersData.map((territorymanager, i) => (
+
+
+ {territorymanager?.name}
+ |
+
+ {territorymanager?.mobileNumber}
+ |
+
+ {territorymanager?.email || (
+
+ No Email Added!
+
+ )}
+ |
+
+
+ {territorymanager?.isVerified ? "YES" : "NO"}
+
+ |
+
+ {new Date(
+ territorymanager.createdAt
+ ).toLocaleString("en-IN", {
+ weekday: "short",
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ hour: "numeric",
+ minute: "numeric",
+ hour12: true,
+ })}
+ |
+
+
+
+
+ |
+
+ ))
+ ) : (
+
+
+ No Territory Managers Available...
+ |
+
+ )}
+
+
+
+
+
+
+
+ Showing {currentPage * itemPerPage - itemPerPage + 1} to{" "}
+ {Math.min(currentPage * itemPerPage, totalData)} of{" "}
+ {totalData} entries
+
+
+
+
+
+
+ -
+
+ setCurrentPage((prev) =>
+ prev > 1 ? prev - 1 : prev
+ )
+ }
+ >
+ Previous
+
+
+ - = totalData
+ ? "paginate_button page-item next disabled"
+ : "paginate_button page-item next"
+ }
+ >
+
+ setCurrentPage((prev) =>
+ prev * itemPerPage < totalData
+ ? prev + 1
+ : prev
+ )
+ }
+ >
+ Next
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default LeaveTerritoryManager;
diff --git a/src/views/Leaves/SingleLeaveSalesCoordinator.js b/src/views/Leaves/SingleUserLeave.js
similarity index 73%
rename from src/views/Leaves/SingleLeaveSalesCoordinator.js
rename to src/views/Leaves/SingleUserLeave.js
index 0d2fa7b..c79ca9b 100644
--- a/src/views/Leaves/SingleLeaveSalesCoordinator.js
+++ b/src/views/Leaves/SingleUserLeave.js
@@ -5,18 +5,18 @@ import Button from "@material-ui/core/Button";
import { isAutheticated } from "src/auth";
import swal from "sweetalert";
-const SingleLeaveSalesCoOrdinator = () => {
+const SingleUserleave = () => {
const { id } = useParams();
const token = isAutheticated();
const navigate = useNavigate();
const [loading, setLoading] = useState(false);
- const [salesCoordinator, setSalesCoordinator] = useState({});
- const [leaveData, setLeaveData] = useState([]);
+ const [user, setuser] = useState({});
+ const [leaveData, setleaveData] = useState([]);
const [currentPage, setCurrentPage] = useState(1);
const [itemPerPage, setItemPerPage] = useState(10);
const [totalData, setTotalData] = useState(0);
-
- const getSingleSalesCoOrdinatorLeave = async () => {
+const [userType, setUserType] = useState("");
+ const getSingleuserleave = async () => {
setLoading(true);
try {
const res = await axios.get(`/api/v1/leave/${id}`, {
@@ -28,9 +28,11 @@ const SingleLeaveSalesCoOrdinator = () => {
show: itemPerPage,
},
});
+ console.log(res.data);
+ setuser(res.data?.user);
+ setleaveData(res.data?.leave);
+ setUserType(res.data?.userType);
// console.log(res.data);
- setSalesCoordinator(res.data?.user);
- setLeaveData(res.data?.leave);
setTotalData(res.data?.total_data);
} catch (err) {
const msg = err?.response?.data?.message || "Something went wrong!";
@@ -47,7 +49,7 @@ const SingleLeaveSalesCoOrdinator = () => {
};
useEffect(() => {
- getSingleSalesCoOrdinatorLeave();
+ getSingleuserleave();
}, [itemPerPage, currentPage]);
return (
@@ -58,9 +60,9 @@ const SingleLeaveSalesCoOrdinator = () => {
- SalesCoOrdinator Leave
+ {userType} Leave
- {salesCoordinator.name} ({salesCoordinator.email})
+ {user.name} ({user.email})
@@ -73,7 +75,7 @@ const SingleLeaveSalesCoOrdinator = () => {
textTransform: "capitalize",
}}
onClick={() => {
- navigate("/salescoordinator/leave", {
+ navigate("/leaves/today", {
replace: true,
});
}}
@@ -96,7 +98,7 @@ const SingleLeaveSalesCoOrdinator = () => {
Show