MCPcopy Create free account
hub / github.com/RealDevSquad/website-backend / addTaskRequests

Function addTaskRequests

controllers/tasksRequests.js:47–128  ·  view source on GitHub ↗
(req, res)

Source from the content-addressed store, hash-verified

45};
46
47const addTaskRequests = async (req, res) => {
48 try {
49 const taskRequestData = req.body;
50 const usernamePromise = usersUtils.getUsername(taskRequestData.userId);
51 if (req.userData.id !== taskRequestData.userId && !req.userData.roles?.super_user) {
52 return res.boom.forbidden("Not authorized to create the request");
53 }
54 if (taskRequestData.proposedDeadline < taskRequestData.proposedStartDate) {
55 return res.boom.badRequest("Task deadline cannot be before the start date");
56 }
57 switch (taskRequestData.requestType) {
58 case TASK_REQUEST_TYPE.ASSIGNMENT: {
59 const taskDataPromise = tasksModel.fetchTask(taskRequestData.taskId);
60
61 const [{ taskData }, username] = await Promise.all([taskDataPromise, usernamePromise]);
62 taskRequestData.taskTitle = taskData?.title;
63 if (!username) {
64 return res.boom.badRequest("User not found");
65 }
66 if (!taskData) {
67 return res.boom.badRequest("Task does not exist");
68 }
69 break;
70 }
71 case TASK_REQUEST_TYPE.CREATION: {
72 let issuePromise;
73 try {
74 const url = new URL(taskRequestData.externalIssueUrl);
75 const issueUrlPaths = url.pathname.split("/");
76 const repositoryName = issueUrlPaths[3];
77 const issueNumber = issueUrlPaths[5];
78 issuePromise = githubService.fetchIssuesById(repositoryName, issueNumber);
79 } catch (error) {
80 return res.boom.badRequest("External issue url is not valid");
81 }
82 const [issueData, username] = await Promise.all([issuePromise, usernamePromise]);
83 taskRequestData.taskTitle = issueData?.title;
84 if (!username) {
85 return res.boom.badRequest("User not found");
86 }
87 if (!issueData) {
88 return res.boom.badRequest("Issue does not exist");
89 }
90 break;
91 }
92 }
93 const newTaskRequest = await taskRequestsModel.createRequest(taskRequestData, req.userData.id);
94
95 if (newTaskRequest.isCreationRequestApproved) {
96 return res.boom.conflict("Task exists for the given issue.");
97 }
98 if (newTaskRequest.alreadyRequesting) {
99 return res.boom.badRequest("Task was already requested");
100 }
101
102 const taskRequestLog = {
103 type: "taskRequests",
104 meta: {

Callers

nothing calls this directly

Calls 1

addLogFunction · 0.50

Tested by

no test coverage detected