diff --git a/src/app/api/timesheets/utils.ts b/src/app/api/timesheets/utils.ts index 94c0dc6..7d1c856 100644 --- a/src/app/api/timesheets/utils.ts +++ b/src/app/api/timesheets/utils.ts @@ -3,7 +3,7 @@ import { HolidaysResult } from "../holidays"; import { LeaveEntry, RecordTimeLeaveInput, TimeEntry } from "./actions"; import { convertDateArrayToString } from "@/app/utils/formatUtil"; import compact from "lodash/compact"; -import dayjs from "dayjs"; +import dayjs, { Dayjs } from "dayjs"; export type TimeEntryError = { [field in keyof TimeEntry]?: string; @@ -117,6 +117,7 @@ export const validateTimeLeaveRecord = ( // Check total hours const totalHourError = checkTotalHours( + dayJsObj, entries.filter((e) => e.type === "timeEntry") as TimeEntry[], entries.filter((e) => e.type === "leaveEntry") as LeaveEntry[], isHoliday, @@ -132,6 +133,7 @@ export const validateTimeLeaveRecord = ( }; export const checkTotalHours = ( + dayJsObj: Dayjs, timeEntries: TimeEntry[], leaves: LeaveEntry[], isHoliday?: boolean, @@ -152,6 +154,7 @@ export const checkTotalHours = ( } else if ( isFullTime && !isHoliday && + !dayJsObj.isSame(dayjs(), "day") && totalInputHours + leaveHours !== DAILY_NORMAL_MAX_HOURS ) { return "The daily normal hours (timesheet hours + leave hours) for full-time staffs should be {{DAILY_NORMAL_MAX_HOURS}}."; diff --git a/src/components/LeaveModal/LeaveCalendar.tsx b/src/components/LeaveModal/LeaveCalendar.tsx index 715a196..0aa6336 100644 --- a/src/components/LeaveModal/LeaveCalendar.tsx +++ b/src/components/LeaveModal/LeaveCalendar.tsx @@ -27,7 +27,6 @@ import LeaveEditModal from "../LeaveTable/LeaveEditModal"; import dayjs from "dayjs"; import { checkTotalHours } from "@/app/api/timesheets/utils"; import unionBy from "lodash/unionBy"; -import { ConnectingAirportsOutlined } from "@mui/icons-material"; export interface Props { leaveTypes: LeaveType[]; @@ -232,6 +231,7 @@ const LeaveCalendar: React.FC = ({ ); const totalHourError = checkTotalHours( + dayJsObj, timesheets, leavesWithNewEntry, Boolean(isHoliday), diff --git a/src/components/TimeLeaveModal/TimeLeaveModal.tsx b/src/components/TimeLeaveModal/TimeLeaveModal.tsx index de0196e..bf2505c 100644 --- a/src/components/TimeLeaveModal/TimeLeaveModal.tsx +++ b/src/components/TimeLeaveModal/TimeLeaveModal.tsx @@ -64,6 +64,8 @@ const modalSx: SxProps = { maxWidth: 1400, }; +const DAYS_TO_SHOW = 10; + const TimeLeaveModal: React.FC = ({ isOpen, onClose, @@ -81,7 +83,7 @@ const TimeLeaveModal: React.FC = ({ const defaultValues = useMemo(() => { const today = dayjs(); - return Array(7) + return Array(DAYS_TO_SHOW) .fill(undefined) .reduce((acc, _, index) => { const date = today.subtract(index, "day").format(INPUT_DATE_FORMAT); @@ -123,7 +125,7 @@ const TimeLeaveModal: React.FC = ({ const savedRecords = await saveTimeLeave(data); const today = dayjs(); - const newFormValues = Array(7) + const newFormValues = Array(DAYS_TO_SHOW) .fill(undefined) .reduce((acc, _, index) => { const date = today.subtract(index, "day").format(INPUT_DATE_FORMAT); diff --git a/src/components/TimesheetAmendment/TimesheetAmendment.tsx b/src/components/TimesheetAmendment/TimesheetAmendment.tsx index 772a0c5..9d1f5c2 100644 --- a/src/components/TimesheetAmendment/TimesheetAmendment.tsx +++ b/src/components/TimesheetAmendment/TimesheetAmendment.tsx @@ -41,7 +41,7 @@ import LeaveEditModal from "../LeaveTable/LeaveEditModal"; import dayjs from "dayjs"; import { checkTotalHours } from "@/app/api/timesheets/utils"; import unionBy from "lodash/unionBy"; -import { Language, Luggage, MoreTime } from "@mui/icons-material"; +import { Luggage, MoreTime } from "@mui/icons-material"; import { Task } from "@/app/api/tasks"; export interface Props { @@ -368,6 +368,7 @@ const TimesheetAmendment: React.FC = ({ "id", ); totalHourError = checkTotalHours( + dayJsObj, timesheets, leavesWithNewEntry, Boolean(isHoliday), @@ -380,6 +381,7 @@ const TimesheetAmendment: React.FC = ({ "id", ); totalHourError = checkTotalHours( + dayJsObj, timesheetsWithNewEntry, leaves, Boolean(isHoliday), diff --git a/src/components/TimesheetTable/FastTimeEntryModal.tsx b/src/components/TimesheetTable/FastTimeEntryModal.tsx index 2f46084..739524a 100644 --- a/src/components/TimesheetTable/FastTimeEntryModal.tsx +++ b/src/components/TimesheetTable/FastTimeEntryModal.tsx @@ -68,7 +68,7 @@ const getID = () => { }; const MISC_TASK_GROUP_ID = 5; -const FAST_ENTRY_TASK_ID = 43; +const FAST_ENTRY_TASK_ID = 42; const FastTimeEntryModal: React.FC = ({ onSave, diff --git a/src/components/UserWorkspacePage/UserWorkspacePage.tsx b/src/components/UserWorkspacePage/UserWorkspacePage.tsx index 36b54f0..b9deb2c 100644 --- a/src/components/UserWorkspacePage/UserWorkspacePage.tsx +++ b/src/components/UserWorkspacePage/UserWorkspacePage.tsx @@ -61,7 +61,7 @@ const UserWorkspacePage: React.FC = ({ maintainNormalStaffWorkspaceAbility, maintainManagementStaffWorkspaceAbility, isFullTime, - miscTasks + miscTasks, }) => { const [anchorEl, setAnchorEl] = useState(null);