diff --git a/src/components/Activities/CheckCheckOutForm.jsx b/src/components/Activities/CheckCheckOutForm.jsx index 1473f746..ab105d84 100644 --- a/src/components/Activities/CheckCheckOutForm.jsx +++ b/src/components/Activities/CheckCheckOutForm.jsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; @@ -9,6 +9,7 @@ import showToast from "../../services/toastService"; import { checkIfCurrentDate } from "../../utils/dateUtils"; import { useMarkAttendance } from "../../hooks/useAttendance"; import { useSelectedProject } from "../../slices/apiDataManager"; +import { useProjectName } from "../../hooks/useProjects"; const createSchema = (modeldata) => { return z @@ -19,31 +20,36 @@ const createSchema = (modeldata) => { .max(200, "Description should be less than 200 characters") .optional(), }) - .refine((data) => { - if (modeldata?.checkInTime && !modeldata?.checkOutTime) { - const checkIn = new Date(modeldata.checkInTime); - const [time, modifier] = data.markTime.split(" "); - const [hourStr, minuteStr] = time.split(":"); - let hour = parseInt(hourStr, 10); - const minute = parseInt(minuteStr, 10); + .refine( + (data) => { + if (modeldata?.checkInTime && !modeldata?.checkOutTime) { + const checkIn = new Date(modeldata.checkInTime); + const [time, modifier] = data.markTime.split(" "); + const [hourStr, minuteStr] = time.split(":"); + let hour = parseInt(hourStr, 10); + const minute = parseInt(minuteStr, 10); - if (modifier === "PM" && hour !== 12) hour += 12; - if (modifier === "AM" && hour === 12) hour = 0; + if (modifier === "PM" && hour !== 12) hour += 12; + if (modifier === "AM" && hour === 12) hour = 0; - const checkOut = new Date(checkIn); - checkOut.setHours(hour, minute, 0, 0); + const checkOut = new Date(checkIn); + checkOut.setHours(hour, minute, 0, 0); - return checkOut >= checkIn; + return checkOut >= checkIn; + } + return true; + }, + { + message: "Checkout time must be later than check-in time", + path: ["markTime"], } - return true; - }, { - message: "Checkout time must be later than check-in time", - path: ["markTime"], - }); + ); }; const CheckInCheckOut = ({ modeldata, closeModal, handleSubmitForm }) => { + const [currentProject, setCurrentProject] = useState(null); const projectId = useSelectedProject(); + const { projectNames, loading } = useProjectName(); const { mutate: MarkAttendance } = useMarkAttendance(); const [isLoading, setIsLoading] = useState(false); const coords = usePositionTracker(); @@ -95,17 +101,24 @@ const CheckInCheckOut = ({ modeldata, closeModal, handleSubmitForm }) => { closeModal(); }; + useEffect(() => { + if (projectId && projectNames) { + setCurrentProject( + projectNames?.find((project) => project.id === projectId) + ); + } + }, [projectNames, projectId, loading]); + return (