import React, { useState, useEffect } from "react"; import moment from "moment"; import DateRangePicker, { DateRangePicker1 } from "../common/DateRangePicker"; import { useDispatch, useSelector } from "react-redux"; import usePagination from "../../hooks/usePagination"; import Avatar from "../common/Avatar"; import { convertShortTime } from "../../utils/dateUtils"; import RenderAttendanceStatus from "../Activities/RenderAttendanceStatus"; import AttendLogs from "../Activities/AttendLogs"; import { useAttendanceByEmployee } from "../../hooks/useAttendance"; import GlobalModel from "../common/GlobalModel"; import { ITEMS_PER_PAGE } from "../../utils/constants"; import { FormProvider, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { localToUtc } from "../../utils/appUtils"; import { useParams } from "react-router-dom"; const EmpAttendance = () => { const { employeeId } = useParams(); const [attendances, setAttendnaces] = useState([]); const [selectedDate, setSelectedDate] = useState(""); const [isModalOpen, setIsModalOpen] = useState(false); const [attendanceId, setAttendanecId] = useState(); const methods = useForm({ defaultValues: { startDate: moment().subtract(6, "days").format("DD-MM-YYYY"), endDate: moment().format("DD-MM-YYYY"), }, }); const { watch } = methods; const [startDate, endDate] = watch(["startDate", "endDate"]); const { data = [], isLoading: loading, isFetching, isError, error, refetch, } = useAttendanceByEmployee( employeeId, startDate ? localToUtc(startDate) : null, endDate ? localToUtc(endDate) : null ); const dispatch = useDispatch(); const sorted = [...data].sort( (a, b) => new Date(b?.checkInTime).getTime() - new Date(a?.checkInTime).getTime() ); const { currentPage, totalPages, currentItems, paginate } = usePagination( sorted, ITEMS_PER_PAGE ); const openModal = (id) => { setAttendanecId(id); setIsModalOpen(true); }; const closeModal = () => setIsModalOpen(false); return ( <> {isModalOpen && ( )}
<>
refetch()} />
{!loading && data.length === 0 && No employee logs} {isError &&
{error.message}
} {loading && !data &&
Loading...
} {data && data.length > 0 && ( {currentItems?.map((attendance, index) => ( ))}
Name Date {" "} Check-In {" "} Check-Out Action
{" "} {moment(attendance.checkInTime).format("DD-MMM-YYYY")} {convertShortTime(attendance.checkInTime)} {attendance.checkOutTime ? convertShortTime(attendance.checkOutTime) : "--"}
)}
{!loading && data.length > 20 && ( )}
); }; export default EmpAttendance;