@@ -8,21 +8,24 @@ import {
88 ERROR_WHILE_UPDATING_REQUEST ,
99 REQUEST_APPROVED_SUCCESSFULLY ,
1010 REQUEST_REJECTED_SUCCESSFULLY ,
11- UNAUTHORIZED_TO_CREATE_OOO_REQUEST ,
1211 REQUEST_ALREADY_PENDING ,
1312 USER_STATUS_NOT_FOUND ,
1413 OOO_STATUS_ALREADY_EXIST ,
14+ UNAUTHORIZED_TO_CREATE_OOO_REQUEST ,
15+ ERROR_WHILE_ACKNOWLEDGING_REQUEST ,
16+ REQUEST_ID_REQUIRED ,
1517} from "../constants/requests" ;
1618import { statusState } from "../constants/userStatus" ;
1719import { logType } from "../constants/logs" ;
1820import { addLog } from "../models/logs" ;
1921import { getRequestByKeyValues , getRequests , updateRequest } from "../models/requests" ;
2022import { createUserFutureStatus } from "../models/userFutureStatus" ;
2123import { getUserStatus , addFutureStatus } from "../models/userStatus" ;
22- import { createOooRequest , validateUserStatus } from "../services/oooRequest" ;
24+ import { createOooRequest , validateUserStatus , acknowledgeOooRequest as acknowledgeOooRequestService } from "../services/oooRequest" ;
2325import { CustomResponse } from "../typeDefinitions/global" ;
24- import { OooRequestCreateRequest , OooRequestResponse , OooStatusRequest } from "../types/oooRequest" ;
26+ import { AcknowledgeOooRequest , OooRequestCreateRequest , OooRequestResponse , OooStatusRequest } from "../types/oooRequest" ;
2527import { UpdateRequest } from "../types/requests" ;
28+ import { NextFunction } from "express" ;
2629
2730/**
2831 * Controller to handle the creation of OOO requests.
@@ -78,7 +81,7 @@ export const createOooRequestController = async (
7881 return res . boom . conflict ( REQUEST_ALREADY_PENDING ) ;
7982 }
8083
81- await createOooRequest ( requestBody , username , userId ) ;
84+ await createOooRequest ( requestBody , userId ) ;
8285
8386 return res . status ( 201 ) . json ( {
8487 message : REQUEST_CREATED_SUCCESSFULLY ,
@@ -148,3 +151,35 @@ export const updateOooRequestController = async (req: UpdateRequest, res: Custom
148151 return res . boom . badImplementation ( ERROR_WHILE_UPDATING_REQUEST ) ;
149152 }
150153} ;
154+ /**
155+ * Acknowledges an Out-of-Office (OOO) request by updating its status to approved or rejected
156+ *
157+ * @param {AcknowledgeOooRequest } req - The request object containing acknowledgment details (status, comment) and request ID in params
158+ * @param {OooRequestResponse } res - The response object for sending success/error responses
159+ * @param {NextFunction } next - Express next function for error handling
160+ * @returns {Promise<OooRequestResponse> } Resolves with success message or passes error to next middleware
161+ */
162+ export const acknowledgeOooRequestController = async (
163+ req : AcknowledgeOooRequest ,
164+ res : OooRequestResponse ,
165+ next : NextFunction
166+ )
167+ : Promise < OooRequestResponse > => {
168+ try {
169+
170+ const requestBody = req . body ;
171+ const superUserId = req . userData . id ;
172+ const requestId = req . params . id ;
173+
174+ const response = await acknowledgeOooRequestService ( requestId , requestBody , superUserId ) ;
175+
176+ return res . status ( 200 ) . json ( {
177+ message : response . message ,
178+ } ) ;
179+ }
180+ catch ( error ) {
181+ logger . error ( ERROR_WHILE_ACKNOWLEDGING_REQUEST , error ) ;
182+ next ( error ) ;
183+ return ;
184+ }
185+ } ;
0 commit comments