Skip to content

Commit

Permalink
Merge pull request #24 from Daylight-LLC/teams-api
Browse files Browse the repository at this point in the history
deleteTeam API
  • Loading branch information
malik-na authored Sep 11, 2024
2 parents b231d16 + 9d44fba commit c323142
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 19 deletions.
43 changes: 27 additions & 16 deletions backend/controllers/project.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,6 @@ export const getProjects = async (req, res) => {
}
};

export const deleteProject = async (req, res) => {
const { id } = req.params;
if (!mongoose.Types.ObjectId.isValid(id)) {
return res
.status(404)
.json({ success: false, message: "Invalid project ID" });
}
try {
await Project.findByIdAndDelete(id);
res.status(200).json({ success: true, message: "Project deleted" });
} catch (error) {
console.error("Error in deleting project", error.message);
res.status(500).json({ success: false, message: "Server Error" });
}
};

export const updateProject = async (req, res) => {
const { id } = req.params;
const project = req.body;
Expand Down Expand Up @@ -90,3 +74,30 @@ export const updateProject = async (req, res) => {
res.status(500).json({ success: false, message: "Server Error" });
}
};

export const deleteProject = async (req, res) => {
const { id } = req.params;

if (!mongoose.Types.ObjectId.isValid(id)) {
return res
.status(400)
.json({ success: false, message: "Invalid project ID" });
}

try {
const project = await Project.findById(id);

if (!project) {
return res
.status(404)
.json({ success: false, message: "Project not found" });
}

await Project.findByIdAndDelete(id);

res.status(200).json({ success: true, message: "Project deleted" });
} catch (error) {
console.error("Error in deleting project", error.message);
res.status(500).json({ success: false, message: "Server Error" });
}
};
44 changes: 41 additions & 3 deletions backend/controllers/team.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export const updateTeam = async (req, res) => {
$set: {
"teams.$.teamName": updatedTeamData.teamName,
"teams.$.teamLeadName": updatedTeamData.teamLeadName,
"teams.$.members": updatedTeamData.members || [], // Update members if needed
"teams.$.members": updatedTeamData.members || [],
},
},
{ new: true, runValidators: true }
Expand All @@ -106,11 +106,49 @@ export const updateTeam = async (req, res) => {
.json({ success: false, message: "Project or team not found" });
}

const updatedTeam = project.teams.id(teamId); // Find the updated team

const updatedTeam = project.teams.id(teamId);
res.status(200).json({ success: true, data: updatedTeam });
} catch (error) {
console.error("Error in updating team", error.message);
res.status(500).json({ success: false, message: "Server Error" });
}
};

export const deleteTeam = async (req, res) => {
const { projectId, teamId } = req.params;
if (
!mongoose.isValidObjectId(projectId) ||
!mongoose.isValidObjectId(teamId)
) {
return res.status(400).json({ success: false, message: "Invalid ID(s)" });
}
try {
const project = await Project.findById(projectId);
if (!project) {
return res
.status(404)
.json({ success: false, message: "Project not found" });
}

const teamExists = project.teams.some(
(team) => team._id.toString() === teamId
);

if (!teamExists) {
return res
.status(404)
.json({ success: false, message: "Team not found" });
}

project.teams = project.teams.filter(
(team) => team._id.toString() !== teamId
);

await project.save();

res.status(200).json({ success: true, message: "Team deleted" });
} catch (error) {
console.error("Error in deleting team", error.message);
res.status(500).json({ success: false, message: "Server Error" });
}
};
2 changes: 2 additions & 0 deletions backend/routes/team.routes.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import express from "express";
import {
addTeam,
deleteTeam,
getTeams,
updateTeam,
} from "../controllers/team.controller.js";
Expand All @@ -17,5 +18,6 @@ const rateLimiter = rateLimit({
router.post("/:projectId/teams", rateLimiter, addTeam);
router.get("/:projectId/teams", rateLimiter, getTeams);
router.put("/:projectId/teams/:teamId", rateLimiter, updateTeam);
router.delete("/:projectId/teams/:teamId", rateLimiter, deleteTeam);

export default router;

0 comments on commit c323142

Please sign in to comment.