Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
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
28 changes: 14 additions & 14 deletions controllers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -172,20 +172,20 @@ const githubAuthCallback = (req, res, next) => {
updated_at: null,
};

if (!userData.email) {
const githubBaseUrl = config.get("githubApi.baseUrl");
const res = await fetch(`${githubBaseUrl}/user/emails`, {
headers: {
Authorization: `token ${accessToken}`,
},
});
const emails = await res.json();
const primaryEmails = emails.filter((item) => item.primary);

if (primaryEmails.length > 0) {
userData.email = primaryEmails[0].email;
}
}
// if (!userData.email) {
// const githubBaseUrl = config.get("githubApi.baseUrl");
// const res = await fetch(`${githubBaseUrl}/user/emails`, {
// headers: {
// Authorization: `token ${accessToken}`,
// },
// });
// const emails = await res.json();
// const primaryEmails = emails.filter((item) => item.primary);

// if (primaryEmails.length > 0) {
// userData.email = primaryEmails[0].email;
// }
// }

const { userId, incompleteUserDetails, role } = await users.addOrUpdate(userData);

Expand Down
15 changes: 9 additions & 6 deletions controllers/oooRequests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@ export const createOooRequestController = async (
if (!isUserPartOfDiscord) {
return res.boom.forbidden(UNAUTHORIZED_TO_CREATE_OOO_REQUEST);
}

console.log("userStatus", isUserPartOfDiscord);
try {
const userStatus = await getUserStatus(userId);
const validationResponse = await validateUserStatus(userId, userStatus);

console.log("validationResponse", validationResponse);
if (validationResponse) {
if (validationResponse.error === USER_STATUS_NOT_FOUND) {
return res.boom.notFound(validationResponse.error);
Expand Down Expand Up @@ -90,6 +90,7 @@ export const createOooRequestController = async (
};

export const updateOooRequestController = async (req: UpdateRequest, res: CustomResponse) => {
console.log("reached ooo request controller")
const requestBody = req.body;
const userId = req?.userData?.id;
const requestId = req.params.id;
Expand Down Expand Up @@ -119,21 +120,23 @@ export const updateOooRequestController = async (req: UpdateRequest, res: Custom
};
await addLog(requestLog.type, requestLog.meta, requestLog.body);
if (requestResult.state === REQUEST_STATE.APPROVED) {
const requestData = await getRequests({ id: requestId });
const requestData = await getRequests({ id: requestId, type: REQUEST_TYPE.OOO });

if (requestData) {
const { from, until, requestedBy, message } = requestData as any;
const { from, until, userId, reason } = requestData as any;
const userFutureStatusData = {
requestId,
status: REQUEST_TYPE.OOO,
state: statusState.UPCOMING,
from,
endsOn: until,
userId: requestedBy,
message,
userId,
message: reason,
};

await createUserFutureStatus(userFutureStatusData);
await addFutureStatus(userFutureStatusData);
console.log("done with the controller")
}
}
return res.status(201).json({
Expand Down
1 change: 1 addition & 0 deletions controllers/requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const createRequestController = async (

export const updateRequestController = async (req: UpdateRequest, res: CustomResponse) => {
const type = req.body.type;
console.log("reached main controller")
switch (type) {
case REQUEST_TYPE.OOO:
return await updateOooRequestController(req as UpdateRequest, res as ExtensionRequestResponse);
Expand Down
4 changes: 3 additions & 1 deletion middlewares/validators/requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,13 @@ export const updateRequestsMiddleware = async (
"any.only": "state must be APPROVED or REJECTED",
}),
type: joi.string().valid(REQUEST_TYPE.OOO, REQUEST_TYPE.EXTENSION, REQUEST_TYPE.ONBOARDING).required(),
message: joi.string().optional()
comment: joi.string().optional(),
status: joi.string().valid(REQUEST_STATE.APPROVED, REQUEST_STATE.REJECTED).optional(),
});

try {
await schema.validateAsync(req.body, { abortEarly: false });
console.log("it is going to next")
next();
} catch (error) {
const errorMessages = error.details.map((detail:any) => detail.message);
Expand Down
12 changes: 9 additions & 3 deletions models/requests.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
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 { mapOOOResponseData } from "../utils/mapOOOResponseData";
const logger = require("../utils/logger");
const SIZE = 5;

export const createRequest = async (body: any) => {
Expand Down Expand Up @@ -37,12 +39,12 @@ export const updateRequest = async (id: string, body: any, lastModifiedBy: strin
error: REQUEST_DOES_NOT_EXIST,
};
}
if (existingRequestDoc.data().state === REQUEST_STATE.APPROVED) {
if (existingRequestDoc.data().status === REQUEST_STATE.APPROVED) {
return {
error: REQUEST_ALREADY_APPROVED,
};
}
if (existingRequestDoc.data().state === REQUEST_STATE.REJECTED) {
if (existingRequestDoc.data().status === REQUEST_STATE.REJECTED) {
return {
error: REQUEST_ALREADY_REJECTED,
};
Expand Down Expand Up @@ -149,6 +151,10 @@ export const getRequests = async (query: any) => {
return null;
}

// because the Request document is changed and the dashboard site still expects the old data format when dev flag is off
if(type === REQUEST_TYPE.OOO && !dev){
allRequests = mapOOOResponseData(allRequests);
}
return {
allRequests,
prev: prevDoc.empty ? null : prevDoc.docs[0].id,
Expand Down
3 changes: 3 additions & 0 deletions models/userFutureStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ import * as admin from "firebase-admin";
*/
export const createUserFutureStatus = async (body: UserFutureStatusType) => {
try {
console.log("reached create user future status")
console.log("body", body)
const statusBody: UserFutureStatusType = {
createdAt: Date.now(),
...body,
};
const resultDoc = await userFutureStatusModel.add(statusBody);
console.log("updated user future status")
return {
id: resultDoc.id,
...body,
Expand Down
2 changes: 2 additions & 0 deletions models/userStatus.js
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,7 @@ const cancelOooStatus = async (userId) => {

const addFutureStatus = async (futureStatusData) => {
try {
console.log("reached add future status");
const userStatusDocs = await userStatusModel.where("userId", "==", futureStatusData.userId).limit(1).get();
const [userStatusDoc] = userStatusDocs.docs;
let docId;
Expand All @@ -698,6 +699,7 @@ const addFutureStatus = async (futureStatusData) => {
futureStatus: futureStatusData,
};
await userStatusModel.doc(docId).update(newStatusData);
console.log("updated future status");
return { id: docId, userStatusExists: true, data: newStatusData };
} catch (error) {
logger.error(`error in updating User Status Document ${error}`);
Expand Down
22 changes: 22 additions & 0 deletions utils/mapOOOResponseData.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { OooStatusRequest } from "../types/oooRequest";

/**
* @description Map the OOO response data to the desired format
* @param data - The OOO response data in the new format
* @returns The mapped OOO response data in the old format
*/
export const mapOOOResponseData = (data: OooStatusRequest[]) => {
return data.map((item) => ({
id: item.id,
from: item.from,
until: item.until,
type: item.type,
message: item.reason,
state: item.status,
reason: item.reason,
createdAt: item.createdAt,
updatedAt: item.updatedAt,
requestedBy: item.userId,
lastModifiedBy: item.lastModifiedBy,
}));
};
Loading