Skip to content
Merged
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
19 changes: 19 additions & 0 deletions controllers/tasks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const Team = require("../models/Team");
const User = require("../models/User");
const Task = require("../models/Task");

exports.deleteTask = (req, res) => {
const taskId = req.body.teamId;

Task.findOneAndDelete({ _id: taskId }, (err, task) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
} else {
return res.status(200).json({
message: "Task deleted successfully",
});
}
});
};
42 changes: 42 additions & 0 deletions controllers/team.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
const Team = require("../models/Team");
const User = require("../models/User");
const Task = require("../models/Task");

exports.deleteTeam = (req, res) => {
const teamId = req.body.teamId;

Team.findOne({ _id: teamId }, (err, team) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
}
if (!team) {
return res.status(404).json({
error: "Team not found",
});
}

const members = team.members;
members.forEach((user, index) => {
//TODO: Delete workspace id from user's teams array
});

const tasks = workspace.tasks;
tasks.forEach((task, index) => {
//TODO: remove tasks functionality
});

Team.findOneAndDelete({ _id: teamId }, (err) => {
if (err) {
return res.status(400).json({
error: "Unexpected error while deleting Team",
});
} else {
return res.status(200).json({
message: "Team deleted successfully",
});
}
});
});
};
98 changes: 98 additions & 0 deletions controllers/workspace.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
const Workspace = require("../models/Workspace");
const User = require("../models/User");

exports.createWorkspace = (req, res) => {
const { name, owner, description } = req.body;

const newWorkspace = new Workspace({ name, owner, description });
let members = [];
members.push(owner);
newWorkspace.members = members;

/**
* 1. Checks if owner owns a workspace with same name [ YES: return status 405]
* 2. create a new workspace
* 3. find user and insert workspace inside user's workspace field
* 4. return status 200
*/

Workspace.findOne({ $and: [ {name: name}, {owner: owner} ]}, (err, workspace) => {
if (workspace) {
return res.status(405).json({
error: "Workspace with same name already exists",
});
} else {
newWorkspace.save((err, workspace) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
} else {
User.findOne({ _id: owner }, (err, user) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
} else {
if (user.workspaces) user.workspaces.push(workspace._id);
else {
let workspaces = [];
workspaces.push(workspace._id);
user.workspaces = workspaces;
}
user.save((err, user) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
} else {
return res.status(200).json({
message: "Workspace created successfully",
});
}
});
}
});
}
});
}
});
};

exports.deleteWorkspace = (req, res) => {
const workspaceId = req.body.workspaceId;

Workspace.findOne({ _id: workspaceId }, (err, workspace) => {
if (err) {
return res.status(400).json({
error: "Unexpected error",
});
} else if (!workspace) {
return res.status(404).json({
error: "Workspace not found",
});
} else {
const teams = workspace.teams;
teams.forEach((team, index) => {
//TODO: add deleteTeam functionality
});

const members = workspace.members;
members.forEach((user, index) => {
//TODO: Delete workspace id from user's workspaces array
});

Workspace.findOneAndDelete({ _id: workspaceId }, (err) => {
if (err) {
return res.status(400).json({
error: "Unexpected error while deleting workspace",
});
} else {
return res.status(200).json({
message: "Workspace deleted successfully",
});
}
});
}
});
};
3 changes: 2 additions & 1 deletion models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ const User = new Schema(
},
contribution: [{ type: ObjectId }],
socialMediaHandles: [{ type: ObjectId }],
teams: [{ type: ObjectId }],
workspaces:[{type:ObjectId, ref:"Workspace"}],
teams: [{ type: ObjectId, red:"Team" }],
skypeId: {
type: String,
default: "",
Expand Down
6 changes: 5 additions & 1 deletion models/Workspace.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ const Workspace = new Schema({
ref: "User",
required: true,
},
description:{
type:String,
default:""
},
teams: [{ type: ObjectId, ref: "Team" }],
members: [{ type: ObjectId, ref: "User" }],
});

module.exports = mongoose.models.User || mongoose.model("Workspace", Workspace);
module.exports = mongoose.models.Workspace || mongoose.model("Workspace", Workspace);
8 changes: 7 additions & 1 deletion routes/dbRoutes.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
const express = require("express");
const { getUserById, updateUserProfile } = require("../controllers/user");

const {createWorkspace} = require("../controllers/workspace");
const router = express.Router();

router.get("/getUserById", getUserById);

router.put("/updateUserProfile", updateUserProfile);


router.post("/createWorkspace",createWorkspace);


module.exports = router;