Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 54 additions & 1 deletion models/requests.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import firestore from "../utils/firestore";
const requestModel = firestore.collection("requests");
import { REQUEST_ALREADY_APPROVED, REQUEST_ALREADY_REJECTED, REQUEST_STATE } from "../constants/requests";
import { REQUEST_ALREADY_APPROVED, REQUEST_ALREADY_REJECTED, REQUEST_STATE, REQUEST_TYPE } from "../constants/requests";
import {
ERROR_WHILE_FETCHING_REQUEST,
ERROR_WHILE_CREATING_REQUEST,
ERROR_WHILE_UPDATING_REQUEST,
REQUEST_DOES_NOT_EXIST,
} from "../constants/requests";
import { getUserId } from "../utils/users";
import { fetchUser } from "./users";
const SIZE = 5;

export const createRequest = async (body: any) => {
Expand Down Expand Up @@ -149,6 +150,58 @@ export const getRequests = async (query: any) => {
return null;
}

if (type === REQUEST_TYPE.OOO) {
const oooRequests = [];
if (dev) {
for (const request of allRequests) {
if (request.status) {
const modifiedRequest = {
id: request.id,
type: request.type,
from: request.from,
until: request.until,
message: request.reason,
state: request.status,
lastModifiedBy: request.lastModifiedBy ?? "",
requestedBy: request.userId,
reason: request.comment ?? "",
createdAt: request.createdAt,
updatedAt: request.updatedAt
};
oooRequests.push(modifiedRequest);
} else {
oooRequests.push(request);
}
}
} else {
for (const request of allRequests) {
if (request.state) {
const userResponse: any = await fetchUser({ userId: request.requestedBy });
const username = userResponse.user.username;

const modifiedRequest = {
id: request.id,
type: request.type,
from: request.from,
until: request.until,
reason: request.message,
status: request.state,
lastModifiedBy: request.lastModifiedBy ?? null,
requestedBy: username,
comment: request.reason ?? null,
createdAt: request.createdAt,
updatedAt: request.updatedAt,
userId: request.requestedBy
};
oooRequests.push(modifiedRequest);
} else {
oooRequests.push(request);
}
}
}
allRequests = oooRequests;
}

return {
allRequests,
prev: prevDoc.empty ? null : prevDoc.docs[0].id,
Expand Down
22 changes: 22 additions & 0 deletions test/unit/models/requests.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,28 @@ describe("models/oooRequests", () => {
const oooRequestData = await getRequests(query);
expect(oooRequestData.allRequests).to.have.lengthOf(1);
});

it("should return OOO requests with state and message field when dev is true", async () => {
await createRequest(createOooRequests);
await createRequest(createOooRequests2);
const query = { dev: "true", type: REQUEST_TYPE.OOO };
const oooRequests = await getRequests(query);
oooRequests.allRequests.forEach((request) => {
expect(request).to.have.property('state');
expect(request).to.have.property('message');
});
});

it("should return OOO requests with status and reason field when dev is false", async () => {
await createRequest(createOooRequests);
await createRequest(createOooRequests2);
const query = { dev: "false", type: REQUEST_TYPE.OOO };
const oooRequests = await getRequests(query);
oooRequests.allRequests.forEach((request) => {
expect(request).to.have.property('status');
expect(request).to.have.property('reason');
});
});
});

describe("getRequestByKeyValue", () => {
Expand Down
44 changes: 0 additions & 44 deletions types/oooRequest.d.ts

This file was deleted.

Loading