Skip to content

Commit 3dafb0f

Browse files
authored
Merge pull request #1454 from Northeastern-Electric-Racing/#1195-Monday-Activation
#1195 Can only activate on mondays
2 parents c0d2653 + 98a6928 commit 3dafb0f

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

src/frontend/src/pages/WorkPackageDetailPage/ActivateWorkPackageModalContainer/ActivateWorkPackageModal.tsx

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import NERFailButton from '../../../components/NERFailButton';
2929
import NERAutocomplete from '../../../components/NERAutocomplete';
3030
import { useState } from 'react';
3131
import { useToast } from '../../../hooks/toasts.hooks';
32+
import { startDateTester } from '../../../utils/form';
3233

3334
interface ActivateWorkPackageModalProps {
3435
allUsers: User[];
@@ -39,22 +40,32 @@ interface ActivateWorkPackageModalProps {
3940
}
4041

4142
const schema = yup.object().shape({
42-
startDate: yup.date().required(),
43+
startDate: yup
44+
.date()
45+
.required('Start Date is required')
46+
.test('start-date-valid', 'start date is not valid', startDateTester),
4347
confirmDetails: yup.boolean().required()
4448
});
4549

46-
const defaultValues: FormInput = {
47-
startDate: new Date().toLocaleDateString(),
48-
confirmDetails: false
49-
};
50-
5150
const ActivateWorkPackageModal: React.FC<ActivateWorkPackageModalProps> = ({
5251
allUsers,
5352
wbsNum,
5453
modalShow,
5554
onHide,
5655
onSubmit
5756
}) => {
57+
const startDate = new Date();
58+
const today = startDate.getDay();
59+
if (today !== 1) {
60+
const daysUntilNextMonday = (7 - today + 1) % 7;
61+
startDate.setDate(startDate.getDate() + daysUntilNextMonday);
62+
}
63+
64+
const defaultValues: FormInput = {
65+
startDate: startDate,
66+
confirmDetails: false
67+
};
68+
5869
const { reset, handleSubmit, control } = useForm<FormInput>({
5970
resolver: yupResolver(schema),
6071
defaultValues
@@ -85,6 +96,10 @@ const ActivateWorkPackageModal: React.FC<ActivateWorkPackageModalProps> = ({
8596
reset(defaultValues);
8697
};
8798

99+
const isStartDateDisabled = (startDate: Date) => {
100+
return startDate.getDay() !== 1;
101+
};
102+
88103
return (
89104
<form id={'activate-work-package-form'} onSubmit={handleSubmit(onSubmitWrapper)}>
90105
<Dialog open={modalShow} onClose={onHide}>
@@ -128,9 +143,10 @@ const ActivateWorkPackageModal: React.FC<ActivateWorkPackageModalProps> = ({
128143
<>
129144
<DatePicker
130145
inputFormat="yyyy-MM-dd"
131-
onChange={(date) => onChange(date ?? new Date().toLocaleDateString())}
146+
onChange={(date) => onChange(date ?? new Date())}
132147
className={'padding: 10'}
133148
value={value}
149+
shouldDisableDate={isStartDateDisabled}
134150
renderInput={(params) => <TextField autoComplete="off" {...params} />}
135151
/>
136152
</>

src/frontend/src/pages/WorkPackageDetailPage/ActivateWorkPackageModalContainer/ActivateWorkPackageModalContainer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ interface ActivateWorkPackageModalContainerProps {
2323
export interface FormInput {
2424
projectLeadId?: number;
2525
projectManagerId?: number;
26-
startDate: string;
26+
startDate: Date;
2727
confirmDetails: boolean;
2828
}
2929

0 commit comments

Comments
 (0)