diff --git a/src/components/Activities/Attendance.jsx b/src/components/Activities/Attendance.jsx
index 0ee7fc97..69f3de10 100644
--- a/src/components/Activities/Attendance.jsx
+++ b/src/components/Activities/Attendance.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from "react";
+import React, { useState,useEffect } from "react";
import moment from "moment";
import Avatar from "../common/Avatar";
import { convertShortTime } from "../../utils/dateUtils";
@@ -7,17 +7,37 @@ import usePagination from "../../hooks/usePagination";
import { useNavigate } from "react-router-dom";
const Attendance = ({ attendance, getRole, handleModalData }) => {
- const { currentPage, totalPages, currentItems, paginate } = usePagination(
- attendance,
- 5
- );
const [loading, setLoading] = useState(false);
const navigate = useNavigate();
+ // Ensure attendance is an array
+ const attendanceList = Array.isArray(attendance) ? attendance : [];
+
+ // Function to sort by first and last name
+ const sortByName = (a, b) => {
+ const nameA = (a.firstName + a.lastName).toLowerCase();
+ const nameB = (b.firstName + b.lastName).toLowerCase();
+ return nameA.localeCompare(nameB);
+ };
+
+ // Filter employees based on activity
+ const group1 = attendanceList
+ .filter((d) => d.activity === 1 || d.activity === 4)
+ .sort(sortByName);
+ const group2 = attendanceList
+ .filter((d) => d.activity === 0)
+ .sort(sortByName);
+
+ const filteredData = [...group1, ...group2];
+
+ const { currentPage, totalPages, currentItems, paginate } = usePagination(
+ filteredData,
+ 5
+ );
return (
<>
- {attendance && attendance.length > 0 ? (
+ {attendance && attendance.length > 0 && (
<>
@@ -96,6 +116,9 @@ const Attendance = ({ attendance, getRole, handleModalData }) => {
))}
+ {!attendance && (
+ No employees assigned to the project
+ )}
@@ -145,8 +168,6 @@ const Attendance = ({ attendance, getRole, handleModalData }) => {
)}
>
- ) : (
-
No employees assigned to the project
)}
>
diff --git a/src/components/Activities/AttendcesLogs.jsx b/src/components/Activities/AttendcesLogs.jsx
index 6d3dc32c..fd6e0779 100644
--- a/src/components/Activities/AttendcesLogs.jsx
+++ b/src/components/Activities/AttendcesLogs.jsx
@@ -16,9 +16,41 @@ const AttendanceLog = ({ handleModalData, projectId }) => {
const dispatch = useDispatch();
const { data, loading, error } = useSelector((store) => store.attendanceLogs);
const [isRefreshing, setIsRefreshing] = useState(true);
+
+ const today = new Date();
+ today.setHours(0, 0, 0, 0); // Strip time to compare dates only
+
+ const isSameDay = (dateStr) => {
+ if (!dateStr) return false;
+ const d = new Date(dateStr);
+ d.setHours(0, 0, 0, 0);
+ return d.getTime() === today.getTime();
+ };
+
+ const isBeforeToday = (dateStr) => {
+ if (!dateStr) return false;
+ const d = new Date(dateStr);
+ d.setHours(0, 0, 0, 0);
+ return d.getTime() < today.getTime();
+ };
+
+ const sortByName = (a, b) => {
+ const nameA = a.firstName.toLowerCase() + a.lastName.toLowerCase();
+ const nameB = b.firstName.toLowerCase() + b.lastName.toLowerCase();
+ return nameA.localeCompare(nameB);
+ };
+
+ const group1 = data.filter(d => d.activity === 1 && isSameDay(d.checkInTime)).sort(sortByName);
+ const group2 = data.filter(d => d.activity === 4 && isSameDay(d.checkOutTime)).sort(sortByName);
+ const group3 = data.filter(d => d.activity === 1 && isBeforeToday(d.checkInTime)).sort(sortByName);
+ const group4 = data.filter(d => d.activity === 4 && isBeforeToday(d.checkOutTime)).sort(sortByName);
+ const group5 = data.filter(d => d.activity === 5).sort(sortByName);
+
+ const sortedFinalList = [...group1, ...group2, ...group3, ...group4, ...group5];
+
const currentDate = new Date().toLocaleDateString( "en-CA" );
const { currentPage, totalPages, currentItems, paginate } = usePagination(
- data,
+ sortedFinalList,
5
);
@@ -35,7 +67,6 @@ const AttendanceLog = ({ handleModalData, projectId }) => {
}
}, [dateRange, projectId, isRefreshing]);
-
return (
<>
{
var selectedProject = useSelector((store) => store.localVariables.projectId);
@@ -16,6 +17,19 @@ const Regularization = ({ handleRequest }) => {
setregularizedList(regularizes);
}, [regularizes]);
+ const sortByName = (a, b) => {
+ const nameA = a.firstName.toLowerCase() + a.lastName.toLowerCase();
+ const nameB = b.firstName.toLowerCase() + b.lastName.toLowerCase();
+ return nameA.localeCompare(nameB);
+ };
+
+ const filteredData = regularizesList.sort(sortByName)
+
+ const { currentPage, totalPages, currentItems, paginate } = usePagination(
+ filteredData,
+ 5
+ );
+
return (
@@ -79,6 +93,51 @@ const Regularization = ({ handleRequest }) => {
))}
+ {!loading && (
+
+ )}
);
};