11import firestore from "../utils/firestore" ;
22const requestModel = firestore . collection ( "requests" ) ;
3- import { REQUEST_ALREADY_APPROVED , REQUEST_ALREADY_REJECTED , REQUEST_STATE } from "../constants/requests" ;
3+ import { REQUEST_ALREADY_APPROVED , REQUEST_ALREADY_REJECTED , REQUEST_STATE , REQUEST_TYPE } from "../constants/requests" ;
44import {
55 ERROR_WHILE_FETCHING_REQUEST ,
66 ERROR_WHILE_CREATING_REQUEST ,
99} from "../constants/requests" ;
1010import { getUserId } from "../utils/users" ;
1111import { NotFound } from "http-errors" ;
12+ import { fetchUser } from "./users" ;
1213const SIZE = 5 ;
1314
1415export const createRequest = async ( body : any ) => {
@@ -30,7 +31,7 @@ export const createRequest = async (body: any) => {
3031 }
3132} ;
3233
33- export const updateRequest = async ( id : string , body : any , lastModifiedBy : string , type :string ) => {
34+ export const updateRequest = async ( id : string , body : any , lastModifiedBy : string , type : string ) => {
3435 try {
3536 const existingRequestDoc = await requestModel . doc ( id ) . get ( ) ;
3637 if ( ! existingRequestDoc . exists ) {
@@ -104,11 +105,10 @@ export const getRequests = async (query: any) => {
104105 ...requestDoc . data ( ) ,
105106 } ;
106107 }
107-
108- if ( requestedBy && dev ) {
108+
109+ if ( requestedBy && dev ) {
109110 requestQuery = requestQuery . where ( "requestedBy" , "==" , requestedBy ) ;
110- }
111- else if ( requestedBy ) {
111+ } else if ( requestedBy ) {
112112 const requestedByUserId = await getUserId ( requestedBy ) ;
113113 requestQuery = requestQuery . where ( "requestedBy" , "==" , requestedByUserId ) ;
114114 }
@@ -165,6 +165,59 @@ export const getRequests = async (query: any) => {
165165 return null ;
166166 }
167167
168+ // todo: remove this once previous OOO requests are removed form the database
169+ // @ankush and @suraj had a discussion to manually update or remove the previous OOO requests
170+ if ( type === REQUEST_TYPE . OOO ) {
171+ const oooRequests = [ ] ;
172+ if ( ! dev ) {
173+ for ( const request of allRequests ) {
174+ if ( request . status ) {
175+ const modifiedRequest = {
176+ id : request . id ,
177+ type : request . type ,
178+ from : request . from ,
179+ until : request . until ,
180+ message : request . reason ,
181+ state : request . status ,
182+ lastModifiedBy : request . lastModifiedBy ?? "" ,
183+ requestedBy : request . userId ,
184+ reason : request . comment ?? "" ,
185+ createdAt : request . createdAt ,
186+ updatedAt : request . updatedAt ,
187+ } ;
188+ oooRequests . push ( modifiedRequest ) ;
189+ } else {
190+ oooRequests . push ( request ) ;
191+ }
192+ }
193+ } else {
194+ for ( const request of allRequests ) {
195+ if ( request . state ) {
196+ const userResponse : any = await fetchUser ( { userId : request . requestedBy } ) ;
197+ const username = userResponse . user . username ;
198+
199+ const modifiedRequest = {
200+ id : request . id ,
201+ type : request . type ,
202+ from : request . from ,
203+ until : request . until ,
204+ reason : request . message ,
205+ status : request . state ,
206+ lastModifiedBy : request . lastModifiedBy ?? null ,
207+ requestedBy : username ,
208+ comment : request . reason ?? null ,
209+ createdAt : request . createdAt ,
210+ updatedAt : request . updatedAt ,
211+ userId : request . requestedBy ,
212+ } ;
213+ oooRequests . push ( modifiedRequest ) ;
214+ } else {
215+ oooRequests . push ( request ) ;
216+ }
217+ }
218+ }
219+ allRequests = oooRequests ;
220+ }
168221 return {
169222 allRequests,
170223 prev : prevDoc . empty ? null : prevDoc . docs [ 0 ] . id ,
@@ -206,4 +259,3 @@ export const getRequestByKeyValues = async (keyValues: KeyValues) => {
206259 throw error ;
207260 }
208261} ;
209-
0 commit comments