Skip to content

Commit c70c875

Browse files
authored
Merge pull request #2130 from Northeastern-Electric-Racing/#1487-remove-any-change-request.hooks
#1487: replaced usage of type any with specific types
2 parents d8e8236 + d4083d8 commit c70c875

2 files changed

Lines changed: 73 additions & 23 deletions

File tree

src/frontend/src/hooks/change-requests.hooks.ts

Lines changed: 66 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,22 @@ export const useSingleChangeRequest = (id: number) => {
3939
});
4040
};
4141

42+
export interface ReviewPayload {
43+
reviewerId: number;
44+
crId: number;
45+
accepted: boolean;
46+
reviewNotes: string;
47+
psId: string;
48+
}
49+
4250
/**
4351
* Custom React Hook to review a change request.
4452
*/
4553
export const useReviewChangeRequest = () => {
4654
const queryClient = useQueryClient();
47-
return useMutation<{ message: string }, Error, any>(
55+
return useMutation<{ message: string }, Error, ReviewPayload>(
4856
['change requests', 'review'],
49-
async (reviewPayload: any) => {
57+
async (reviewPayload: ReviewPayload) => {
5058
const { data } = await reviewChangeRequest(
5159
reviewPayload.reviewerId,
5260
reviewPayload.crId,
@@ -69,7 +77,7 @@ export const useReviewChangeRequest = () => {
6977
*/
7078
export const useDeleteChangeRequest = () => {
7179
const queryClient = useQueryClient();
72-
return useMutation<{ message: string }, Error, any>(
80+
return useMutation<{ message: string }, Error, number>(
7381
['change requests', 'delete'],
7482
async (id: number) => {
7583
const { data } = await deleteChangeRequest(id);
@@ -103,41 +111,73 @@ export const useCreateStandardChangeRequest = () => {
103111
);
104112
};
105113

114+
export interface CreateActivationChangeRequestPayload {
115+
submitterId: number;
116+
wbsNum: WbsNumber;
117+
projectLeadId: number;
118+
projectManagerId: number;
119+
startDate: string;
120+
confirmDetails: boolean;
121+
type: string;
122+
}
123+
124+
export interface CreateStageGateChangeRequestPayload {
125+
submitterId: number;
126+
wbsNum: WbsNumber;
127+
confirmDone: boolean;
128+
type: string;
129+
}
130+
131+
export interface CreateProposeSolutionPayload {
132+
submitterId: number;
133+
crId: number;
134+
description: string;
135+
scopeImpact: string;
136+
timelineImpact: number;
137+
budgetImpact: number;
138+
}
139+
106140
/**
107141
* Custom React Hook to create an activation change request.
108142
*/
109143
export const useCreateActivationChangeRequest = () => {
110-
return useMutation<{ message: string }, Error, any>(['change requests', 'create', 'activation'], async (payload: any) => {
111-
const { data } = await createActivationChangeRequest(
112-
payload.submitterId,
113-
payload.wbsNum,
114-
payload.projectLeadId,
115-
payload.projectManagerId,
116-
payload.startDate,
117-
payload.confirmDetails
118-
);
119-
return data;
120-
});
144+
return useMutation<{ message: string }, Error, CreateActivationChangeRequestPayload>(
145+
['change requests', 'create', 'activation'],
146+
async (payload: CreateActivationChangeRequestPayload) => {
147+
const { data } = await createActivationChangeRequest(
148+
payload.submitterId,
149+
payload.wbsNum,
150+
payload.projectLeadId,
151+
payload.projectManagerId,
152+
payload.startDate,
153+
payload.confirmDetails
154+
);
155+
return data;
156+
}
157+
);
121158
};
122159

123160
/**
124161
* Custom React Hook to create a stage gate change request.
125162
*/
126163
export const useCreateStageGateChangeRequest = () => {
127-
return useMutation<{ message: string }, Error, any>(['change requests', 'create', 'stage gate'], async (payload: any) => {
128-
const { data } = await createStageGateChangeRequest(payload.submitterId, payload.wbsNum, payload.confirmDone);
129-
return data;
130-
});
164+
return useMutation<{ message: string }, Error, CreateStageGateChangeRequestPayload>(
165+
['change requests', 'create', 'stage gate'],
166+
async (payload: CreateStageGateChangeRequestPayload) => {
167+
const { data } = await createStageGateChangeRequest(payload.submitterId, payload.wbsNum, payload.confirmDone);
168+
return data;
169+
}
170+
);
131171
};
132172

133173
/**
134174
* Custom React Hook to create a proposed solution
135175
*/
136176
export const useCreateProposeSolution = () => {
137177
const queryClient = useQueryClient();
138-
return useMutation<{ message: string }, Error, any>(
178+
return useMutation<{ message: string }, Error, CreateProposeSolutionPayload>(
139179
['change requests', 'create', 'propose solution'],
140-
async (payload: any) => {
180+
async (payload: CreateProposeSolutionPayload) => {
141181
const { data } = await addProposedSolution(
142182
payload.submitterId,
143183
payload.crId,
@@ -156,14 +196,18 @@ export const useCreateProposeSolution = () => {
156196
);
157197
};
158198

199+
export interface CRReviewPayload {
200+
userIds: number[];
201+
}
202+
159203
/**
160204
* Custom React hook to request cr reviewers
161205
*/
162206
export const useRequestCRReview = (crId: string) => {
163207
const queryClient = useQueryClient();
164-
return useMutation<{ message: string }, Error, any>(
208+
return useMutation<{ message: string }, Error, CRReviewPayload>(
165209
['change requests', 'review'],
166-
async (crReviewPayload: { userIds: number[] }) => {
210+
async (crReviewPayload: CRReviewPayload) => {
167211
const { data } = await requestCRReview(crId, crReviewPayload);
168212
return data;
169213
},

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,20 @@ const ActivateWorkPackageModalContainer: React.FC<ActivateWorkPackageModalContai
4141
const handleConfirm = async ({ projectLeadId, projectManagerId, startDate, confirmDetails }: FormInput) => {
4242
handleClose();
4343
if (auth.user?.userId === undefined) throw new Error('Cannot create activation change request without being logged in');
44+
if (!projectLeadId) {
45+
throw new Error('Project Lead Id must be defined to create an activation change request');
46+
}
47+
if (!projectManagerId) {
48+
throw new Error('Project Manager Id must be defined to create an activation change request');
49+
}
4450
try {
4551
await mutateAsync({
4652
submitterId: auth.user?.userId,
4753
wbsNum,
4854
type: ChangeRequestType.Activation,
4955
projectLeadId,
5056
projectManagerId,
51-
startDate,
57+
startDate: startDate.toISOString(),
5258
confirmDetails
5359
});
5460
history.push(routes.CHANGE_REQUESTS);

0 commit comments

Comments
 (0)