Author | SHA1 | Message | Date |
---|---|---|---|
|
7929cfd7a0 |
saturday normal hr
(cherry picked from commit
|
6 months ago |
@@ -36,6 +36,7 @@ interface Props<EntryTableProps = object> { | |||||
EntryTableProps & { day: string; isHoliday: boolean } | EntryTableProps & { day: string; isHoliday: boolean } | ||||
>; | >; | ||||
entryTableProps: EntryTableProps; | entryTableProps: EntryTableProps; | ||||
isSaturdayWorker: boolean | |||||
} | } | ||||
function DateHoursTable<EntryTableProps>({ | function DateHoursTable<EntryTableProps>({ | ||||
@@ -45,9 +46,9 @@ function DateHoursTable<EntryTableProps>({ | |||||
leaveEntries, | leaveEntries, | ||||
timesheetEntries, | timesheetEntries, | ||||
companyHolidays, | companyHolidays, | ||||
isSaturdayWorker, | |||||
}: Props<EntryTableProps>) { | }: Props<EntryTableProps>) { | ||||
const { t } = useTranslation("home"); | const { t } = useTranslation("home"); | ||||
return ( | return ( | ||||
<TableContainer sx={{ maxHeight: 400 }}> | <TableContainer sx={{ maxHeight: 400 }}> | ||||
<Table stickyHeader> | <Table stickyHeader> | ||||
@@ -71,6 +72,7 @@ function DateHoursTable<EntryTableProps>({ | |||||
timesheetEntries={timesheetEntries} | timesheetEntries={timesheetEntries} | ||||
EntryTableComponent={EntryTableComponent} | EntryTableComponent={EntryTableComponent} | ||||
entryTableProps={entryTableProps} | entryTableProps={entryTableProps} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
); | ); | ||||
})} | })} | ||||
@@ -87,6 +89,7 @@ function DayRow<EntryTableProps>({ | |||||
entryTableProps, | entryTableProps, | ||||
EntryTableComponent, | EntryTableComponent, | ||||
companyHolidays, | companyHolidays, | ||||
isSaturdayWorker, | |||||
}: { | }: { | ||||
day: string; | day: string; | ||||
companyHolidays: HolidaysResult[]; | companyHolidays: HolidaysResult[]; | ||||
@@ -96,16 +99,18 @@ function DayRow<EntryTableProps>({ | |||||
EntryTableProps & { day: string; isHoliday: boolean } | EntryTableProps & { day: string; isHoliday: boolean } | ||||
>; | >; | ||||
entryTableProps: EntryTableProps; | entryTableProps: EntryTableProps; | ||||
isSaturdayWorker: boolean | |||||
}) { | }) { | ||||
const { | const { | ||||
t, | t, | ||||
i18n: { language }, | i18n: { language }, | ||||
} = useTranslation("home"); | } = useTranslation("home"); | ||||
const dayJsObj = dayjs(day); | const dayJsObj = dayjs(day); | ||||
const [open, setOpen] = useState(false); | |||||
const [open, setOpen] = useState(false); | |||||
const holiday = getHolidayForDate(day, companyHolidays); | const holiday = getHolidayForDate(day, companyHolidays); | ||||
const isHoliday = holiday || dayJsObj.day() === 0 || dayJsObj.day() === 6; | |||||
const isWeekend = !isSaturdayWorker ? dayJsObj.day() === 0 || dayJsObj.day() === 6 : dayJsObj.day() === 0; | |||||
const isHoliday = holiday || isWeekend; | |||||
const leaves = leaveEntries[day]; | const leaves = leaveEntries[day]; | ||||
const leaveHours = | const leaveHours = | ||||
@@ -54,6 +54,7 @@ interface Props { | |||||
isFullTime: boolean; | isFullTime: boolean; | ||||
joinDate: Dayjs; | joinDate: Dayjs; | ||||
miscTasks: Task[]; | miscTasks: Task[]; | ||||
isSaturdayWorker: boolean | |||||
} | } | ||||
const modalSx: SxProps = { | const modalSx: SxProps = { | ||||
@@ -81,6 +82,7 @@ const TimeLeaveModal: React.FC<Props> = ({ | |||||
isFullTime, | isFullTime, | ||||
joinDate, | joinDate, | ||||
miscTasks, | miscTasks, | ||||
isSaturdayWorker, | |||||
}) => { | }) => { | ||||
const { t } = useTranslation("home"); | const { t } = useTranslation("home"); | ||||
@@ -227,6 +229,7 @@ const TimeLeaveModal: React.FC<Props> = ({ | |||||
leaveTypes, | leaveTypes, | ||||
miscTasks, | miscTasks, | ||||
}} | }} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
</Box> | </Box> | ||||
{errorComponent} | {errorComponent} | ||||
@@ -43,6 +43,7 @@ export interface Props { | |||||
isFullTime: boolean; | isFullTime: boolean; | ||||
joinDate?: number | null; | joinDate?: number | null; | ||||
miscTasks: Task[]; | miscTasks: Task[]; | ||||
isSaturdayWorker: boolean | |||||
} | } | ||||
const menuItemSx: SxProps = { | const menuItemSx: SxProps = { | ||||
@@ -65,6 +66,7 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
isFullTime, | isFullTime, | ||||
joinDate, | joinDate, | ||||
miscTasks, | miscTasks, | ||||
isSaturdayWorker | |||||
}) => { | }) => { | ||||
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); | const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); | ||||
@@ -183,6 +185,7 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
allProjects={allProjects} | allProjects={allProjects} | ||||
leaveTypes={leaveTypes} | leaveTypes={leaveTypes} | ||||
companyHolidays={holidays} | companyHolidays={holidays} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
<TimeLeaveModal | <TimeLeaveModal | ||||
fastEntryEnabled={fastEntryEnabled} | fastEntryEnabled={fastEntryEnabled} | ||||
@@ -197,6 +200,7 @@ const UserWorkspacePage: React.FC<Props> = ({ | |||||
isFullTime={isFullTime} | isFullTime={isFullTime} | ||||
joinDate={dayjs(joinDate)} | joinDate={dayjs(joinDate)} | ||||
miscTasks={miscTasks} | miscTasks={miscTasks} | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
<LeaveModal | <LeaveModal | ||||
open={isLeaveCalendarVisible} | open={isLeaveCalendarVisible} | ||||
@@ -16,6 +16,7 @@ import { | |||||
MAINTAIN_TIMESHEET_FAST_TIME_ENTRY, | MAINTAIN_TIMESHEET_FAST_TIME_ENTRY, | ||||
MAINTAIN_NORMAL_STAFF_WORKSPACE, | MAINTAIN_NORMAL_STAFF_WORKSPACE, | ||||
MAINTAIN_MANAGEMENT_STAFF_WORKSPACE, | MAINTAIN_MANAGEMENT_STAFF_WORKSPACE, | ||||
SATURDAY_WORKERS | |||||
} from "@/middleware"; | } from "@/middleware"; | ||||
import { fetchAllTasks } from "@/app/api/tasks"; | import { fetchAllTasks } from "@/app/api/tasks"; | ||||
@@ -59,6 +60,8 @@ const UserWorkspaceWrapper: React.FC = async () => { | |||||
const miscTasks = allTasks.filter((t) => t.taskGroup.id === 5); | const miscTasks = allTasks.filter((t) => t.taskGroup.id === 5); | ||||
const isSaturdayWorker = abilities.includes(SATURDAY_WORKERS) | |||||
return ( | return ( | ||||
<UserWorkspacePage | <UserWorkspacePage | ||||
joinDate={userStaff?.joinDate} | joinDate={userStaff?.joinDate} | ||||
@@ -78,6 +81,7 @@ const UserWorkspaceWrapper: React.FC = async () => { | |||||
maintainManagementStaffWorkspaceAbility={ | maintainManagementStaffWorkspaceAbility={ | ||||
maintainManagementStaffWorkspaceAbility | maintainManagementStaffWorkspaceAbility | ||||
} | } | ||||
isSaturdayWorker={isSaturdayWorker} | |||||
/> | /> | ||||
); | ); | ||||
}; | }; | ||||
@@ -58,14 +58,6 @@ export const authOptions: AuthOptions = { | |||||
jwt(params) { | jwt(params) { | ||||
// Add the data from user to the token | // Add the data from user to the token | ||||
const { token, user, account, trigger, session } = params; | const { token, user, account, trigger, session } = params; | ||||
// console.log("--------------------------") | |||||
// console.log("%c [ token ]:", 'font-size:13px; background:#A888B5; color:#bf2c9f;', token) | |||||
// console.log("%c [ user ]:", 'font-size:13px; background:pink; color:#bf2c9f;', user) | |||||
// console.log("%c [ account ]:", 'font-size:13px; background:pink; color:#bf2c9f;', account) | |||||
// console.log("%c [ session ]:", 'font-size:13px; background:#FFD2A0; color:#bf2c9f;', session) | |||||
// console.log("%c [ trigger ]:", 'font-size:13px; background:#EFB6C8; color:#bf2c9f;', trigger) | |||||
// console.log(params) | |||||
// console.log("--------------------------") | |||||
if (trigger === "update" && session?.accessToken && session?.refreshToken) { | if (trigger === "update" && session?.accessToken && session?.refreshToken) { | ||||
token.accessToken = session.accessToken | token.accessToken = session.accessToken | ||||
@@ -71,7 +71,8 @@ export const [ | |||||
GENERATE_PROJECT_CASH_FLOW_REPORT, | GENERATE_PROJECT_CASH_FLOW_REPORT, | ||||
GENERATE_STAFF_MONTHLY_WORK_HOURS_ANALYSIS_REPORT, | GENERATE_STAFF_MONTHLY_WORK_HOURS_ANALYSIS_REPORT, | ||||
GENERATE_CROSS_TEAM_CHARGE_REPORT, | GENERATE_CROSS_TEAM_CHARGE_REPORT, | ||||
VIEW_ALL_PROJECTS | |||||
VIEW_ALL_PROJECTS, | |||||
SATURDAY_WORKERS | |||||
] = [ | ] = [ | ||||
'MAINTAIN_USER', | 'MAINTAIN_USER', | ||||
'MAINTAIN_TIMESHEET', | 'MAINTAIN_TIMESHEET', | ||||
@@ -124,7 +125,8 @@ export const [ | |||||
'G_PROJECT_CASH_FLOW_REPORT', | 'G_PROJECT_CASH_FLOW_REPORT', | ||||
'G_STAFF_MONTHLY_WORK_HOURS_ANALYSIS_REPORT', | 'G_STAFF_MONTHLY_WORK_HOURS_ANALYSIS_REPORT', | ||||
'G_CROSS_TEAM_CHARGE_REPORT', | 'G_CROSS_TEAM_CHARGE_REPORT', | ||||
'VIEW_ALL_PROJECTS' | |||||
'VIEW_ALL_PROJECTS', | |||||
'SATURDAY_WORKERS' | |||||
] | ] | ||||
const PRIVATE_ROUTES = [ | const PRIVATE_ROUTES = [ | ||||