Skip to content

Commit aacbff2

Browse files
committed
refactor: controller & service layer
1 parent 398d1f9 commit aacbff2

File tree

4 files changed

+19
-59
lines changed

4 files changed

+19
-59
lines changed

controllers/oooRequests.ts

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@ import {
1414
OOO_STATUS_ALREADY_EXIST,
1515
UNAUTHORIZED_TO_UPDATE_REQUEST,
1616
ERROR_WHILE_ACKNOWLEDGING_REQUEST,
17-
REQUEST_DOES_NOT_EXIST,
18-
INVALID_REQUEST_TYPE,
19-
REQUEST_ALREADY_APPROVED,
20-
REQUEST_ALREADY_REJECTED,
2117
} from "../constants/requests";
2218
import { statusState } from "../constants/userStatus";
2319
import { logType } from "../constants/logs";
@@ -29,6 +25,7 @@ import { createOooRequest, validateUserStatus, acknowledgeOooRequest } from "../
2925
import { CustomResponse } from "../typeDefinitions/global";
3026
import { AcknowledgeOooRequest, OooRequestCreateRequest, OooRequestResponse, OooStatusRequest } from "../types/oooRequest";
3127
import { UpdateRequest } from "../types/requests";
28+
import { NextFunction } from "express";
3229

3330
/**
3431
* Controller to handle the creation of OOO requests.
@@ -165,6 +162,7 @@ export const updateOooRequestController = async (req: UpdateRequest, res: Custom
165162
export const acknowledgeOooRequestController = async (
166163
req: AcknowledgeOooRequest,
167164
res: OooRequestResponse,
165+
next: NextFunction
168166
)
169167
: Promise<OooRequestResponse> => {
170168

@@ -186,25 +184,12 @@ export const acknowledgeOooRequestController = async (
186184

187185
const response = await acknowledgeOooRequest(requestId, requestBody, superUserId);
188186

189-
if (response.error === REQUEST_DOES_NOT_EXIST) {
190-
return res.boom.notFound(REQUEST_DOES_NOT_EXIST);
191-
}
192-
if (response.error === INVALID_REQUEST_TYPE) {
193-
return res.boom.badRequest(INVALID_REQUEST_TYPE);
194-
}
195-
if (response.error === REQUEST_ALREADY_APPROVED) {
196-
return res.boom.conflict(REQUEST_ALREADY_APPROVED);
197-
}
198-
if (response.error === REQUEST_ALREADY_REJECTED) {
199-
return res.boom.conflict(REQUEST_ALREADY_REJECTED);
200-
}
201-
202187
return res.status(200).json({
203188
message: response.message,
204189
});
205190
}
206191
catch(error){
207192
logger.error(ERROR_WHILE_ACKNOWLEDGING_REQUEST, error);
208-
return res.boom.badImplementation(ERROR_WHILE_ACKNOWLEDGING_REQUEST);
193+
next(error);
209194
}
210195
};

controllers/requests.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { createTaskRequestController } from "./taskRequestsv2";
1616
import { OnboardingExtensionCreateRequest, OnboardingExtensionResponse, UpdateOnboardingExtensionStateRequest } from "../types/onboardingExtension";
1717
import { createOnboardingExtensionRequestController, updateOnboardingExtensionRequestController, updateOnboardingExtensionRequestState } from "./onboardingExtension";
1818
import { UpdateOnboardingExtensionRequest } from "../types/onboardingExtension";
19-
import { Request } from "express";
19+
import { NextFunction, Request } from "express";
2020

2121
export const createRequestController = async (
2222
req: OooRequestCreateRequest | ExtensionRequestRequest | TaskRequestRequest | OnboardingExtensionCreateRequest,
@@ -120,12 +120,12 @@ export const getRequestsController = async (req: any, res: any) => {
120120
* @param {CustomResponse} res - The response object.
121121
* @returns {Promise<void>} Resolves or sends an error for invalid types.
122122
*/
123-
export const updateRequestBeforeAcknowledgedController = async (req: Request, res: CustomResponse) => {
123+
export const updateRequestBeforeAcknowledgedController = async (req: Request, res: CustomResponse, next: NextFunction) => {
124124
const type = req.body.type;
125125

126126
switch(type){
127127
case REQUEST_TYPE.OOO:
128-
await acknowledgeOooRequestController(req as AcknowledgeOooRequest, res as OooRequestResponse);
128+
await acknowledgeOooRequestController(req as AcknowledgeOooRequest, res as OooRequestResponse, next);
129129
break;
130130
case REQUEST_TYPE.ONBOARDING:
131131
await updateOnboardingExtensionRequestController(req as UpdateOnboardingExtensionRequest, res as OnboardingExtensionResponse);

models/requests.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
REQUEST_DOES_NOT_EXIST,
99
} from "../constants/requests";
1010
import { getUserId } from "../utils/users";
11+
import { NotFound } from "http-errors";
1112
const SIZE = 5;
1213

1314
export const createRequest = async (body: any) => {
@@ -74,9 +75,7 @@ export const getRequestById = async (id: string) => {
7475
const requestDoc = await requestModel.doc(id).get();
7576

7677
if (!requestDoc.exists) {
77-
return {
78-
error: REQUEST_DOES_NOT_EXIST,
79-
};
78+
throw new NotFound(REQUEST_DOES_NOT_EXIST);
8079
}
8180

8281
return requestDoc.data();

services/oooRequest.ts

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import {
66
REQUEST_STATE,
77
USER_STATUS_NOT_FOUND,
88
REQUEST_TYPE,
9-
REQUEST_DOES_NOT_EXIST,
109
REQUEST_ALREADY_APPROVED,
1110
REQUEST_ALREADY_REJECTED,
1211
REQUEST_APPROVED_SUCCESSFULLY,
@@ -18,7 +17,7 @@ import { createRequest, getRequestById } from "../models/requests";
1817
import { OooStatusRequest, OooStatusRequestBody } from "../types/oooRequest";
1918
import { UserStatus } from "../types/userStatus";
2019
import { addLog } from "./logService";
21-
import { BadRequest } from "http-errors";
20+
import { BadRequest, Conflict } from "http-errors";
2221
import { updateRequest } from "../models/requests";
2322
import { AcknowledgeOooRequestBody } from "../types/oooRequest";
2423
import { addFutureStatus } from "../models/userStatus";
@@ -114,29 +113,22 @@ export const createOooRequest = async (
114113
* @throws {Error} Throws an error if an issue occurs during validation.
115114
*/
116115
export const validateOooAcknowledgeRequest = async (
117-
requestId: string,
118116
requestType: string,
119117
requestStatus: string,
120118
) => {
121119

122120
try {
123121

124122
if (requestType !== REQUEST_TYPE.OOO) {
125-
return {
126-
error: INVALID_REQUEST_TYPE
127-
};
123+
throw new BadRequest(INVALID_REQUEST_TYPE);
128124
}
129125

130126
if (requestStatus === REQUEST_STATE.APPROVED) {
131-
return {
132-
error: REQUEST_ALREADY_APPROVED
133-
};
127+
throw new Conflict(REQUEST_ALREADY_APPROVED);
134128
}
135129

136130
if (requestStatus === REQUEST_STATE.REJECTED) {
137-
return {
138-
error: REQUEST_ALREADY_REJECTED
139-
};
131+
throw new Conflict(REQUEST_ALREADY_REJECTED);
140132
}
141133
} catch (error) {
142134
logger.error("Error while validating OOO acknowledge request", error);
@@ -161,26 +153,12 @@ export const acknowledgeOooRequest = async (
161153
try {
162154
const requestData = await getRequestById(requestId);
163155

164-
if (requestData.error) {
165-
logger.error("Error while acknowledging OOO request", { requestId, reason: REQUEST_DOES_NOT_EXIST });
166-
return {
167-
error: REQUEST_DOES_NOT_EXIST
168-
};
169-
}
170-
171-
const validationError = await validateOooAcknowledgeRequest(requestId, requestData.type, requestData.status);
172-
173-
if (validationError) {
174-
logger.error(`Error while validating OOO acknowledge request`, { requestId, reason: validationError.error });
175-
return {
176-
error: validationError.error
177-
};
178-
}
156+
await validateOooAcknowledgeRequest(requestData.type, requestData.status);
179157

180158
const requestResult = await updateRequest(requestId, body, superUserId, REQUEST_TYPE.OOO);
181159

182160
if ("error" in requestResult) {
183-
throw BadRequest(requestResult.error);
161+
throw new BadRequest(requestResult.error);
184162
}
185163

186164
const [acknowledgeLogType, returnMessage] =
@@ -201,16 +179,14 @@ export const acknowledgeOooRequest = async (
201179
await addLog(requestLog.type, requestLog.meta, requestLog.body);
202180

203181
if (requestResult.status === REQUEST_STATE.APPROVED) {
204-
const { from, until, userId } = requestData;
205-
const userFutureStatusData = {
182+
await addFutureStatus({
206183
requestId,
207184
state: REQUEST_TYPE.OOO,
208-
from,
209-
endsOn: until,
210-
userId,
185+
from: requestData.from,
186+
endsOn: requestData.until,
187+
userId: requestData.userId,
211188
message: body.comment,
212-
};
213-
await addFutureStatus(userFutureStatusData);
189+
});
214190
}
215191

216192
return {

0 commit comments

Comments
 (0)