Initial commit: Angular frontend and Expressjs backend
This commit is contained in:
11
worklenz-backend/src/routes/apis/activity-logs-api-router.ts
Normal file
11
worklenz-backend/src/routes/apis/activity-logs-api-router.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import express from "express";
|
||||
|
||||
import ActivitylogsController from "../../controllers/activity-logs-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const activityLogsApiRouter = express.Router();
|
||||
|
||||
activityLogsApiRouter.get("/:id", idParamValidator, safeControllerFunction(ActivitylogsController.get));
|
||||
|
||||
export default activityLogsApiRouter;
|
||||
30
worklenz-backend/src/routes/apis/admin-center-api-router.ts
Normal file
30
worklenz-backend/src/routes/apis/admin-center-api-router.ts
Normal file
@@ -0,0 +1,30 @@
|
||||
import express from "express";
|
||||
|
||||
import AdminCenterController from "../../controllers/admin-center-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import organizationSettingsValidator from "../../middlewares/validators/organization-settings-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
|
||||
const adminCenterApiRouter = express.Router();
|
||||
|
||||
// overview
|
||||
adminCenterApiRouter.get("/organization", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getOrganizationDetails));
|
||||
adminCenterApiRouter.get("/organization/admins", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getOrganizationAdmins));
|
||||
adminCenterApiRouter.put("/organization", teamOwnerOrAdminValidator, organizationSettingsValidator, safeControllerFunction(AdminCenterController.updateOrganizationName));
|
||||
adminCenterApiRouter.put("/organization/owner/contact-number", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.updateOwnerContactNumber));
|
||||
|
||||
// users
|
||||
adminCenterApiRouter.get("/organization/users", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getOrganizationUsers));
|
||||
|
||||
adminCenterApiRouter.get("/organization/teams", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getOrganizationTeams));
|
||||
adminCenterApiRouter.put("/organization/team/:id", teamOwnerOrAdminValidator, organizationSettingsValidator, safeControllerFunction(AdminCenterController.updateTeam));
|
||||
adminCenterApiRouter.get("/organization/team/:id", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getTeamDetails));
|
||||
adminCenterApiRouter.delete("/organization/team/:id", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.deleteTeam));
|
||||
adminCenterApiRouter.put("/organization/team-member/:id", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.deleteById));
|
||||
|
||||
adminCenterApiRouter.post("/", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.create));
|
||||
adminCenterApiRouter.put("/", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.create));
|
||||
|
||||
adminCenterApiRouter.get("/", teamOwnerOrAdminValidator, safeControllerFunction(AdminCenterController.getOrganizationTeams));
|
||||
|
||||
export default adminCenterApiRouter;
|
||||
20
worklenz-backend/src/routes/apis/attachments-api-router.ts
Normal file
20
worklenz-backend/src/routes/apis/attachments-api-router.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import express from "express";
|
||||
|
||||
import AttachmentController from "../../controllers/attachment-controller";
|
||||
|
||||
import imageToWebp from "../../middlewares/image-to-webp";
|
||||
import avatarValidator from "../../middlewares/validators/avatar-validator";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import taskAttachmentsValidator from "../../middlewares/validators/task-attachments-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const attachmentsApiRouter = express.Router();
|
||||
|
||||
attachmentsApiRouter.post("/tasks", taskAttachmentsValidator, safeControllerFunction(AttachmentController.createTaskAttachment));
|
||||
attachmentsApiRouter.post("/avatar", avatarValidator, safeControllerFunction(imageToWebp), safeControllerFunction(AttachmentController.createAvatarAttachment));
|
||||
attachmentsApiRouter.get("/tasks/:id", idParamValidator, safeControllerFunction(AttachmentController.get));
|
||||
attachmentsApiRouter.get("/download", safeControllerFunction(AttachmentController.download));
|
||||
attachmentsApiRouter.get("/project/:id", idParamValidator, safeControllerFunction(AttachmentController.getByProjectId));
|
||||
attachmentsApiRouter.delete("/tasks/:id", idParamValidator, safeControllerFunction(AttachmentController.deleteById));
|
||||
|
||||
export default attachmentsApiRouter;
|
||||
19
worklenz-backend/src/routes/apis/clients-api-router.ts
Normal file
19
worklenz-backend/src/routes/apis/clients-api-router.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import express from "express";
|
||||
|
||||
import ClientsController from "../../controllers/clients-controller";
|
||||
|
||||
import clientsBodyValidator from "../../middlewares/validators/clients-body-validator";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectManagerValidator from "../../middlewares/validators/project-manager-validator";
|
||||
|
||||
const clientsApiRouter = express.Router();
|
||||
|
||||
clientsApiRouter.post("/", projectManagerValidator, clientsBodyValidator, safeControllerFunction(ClientsController.create));
|
||||
clientsApiRouter.get("/", safeControllerFunction(ClientsController.get));
|
||||
clientsApiRouter.get("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(ClientsController.getById));
|
||||
clientsApiRouter.put("/:id", teamOwnerOrAdminValidator, clientsBodyValidator, idParamValidator, safeControllerFunction(ClientsController.update));
|
||||
clientsApiRouter.delete("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(ClientsController.deleteById));
|
||||
|
||||
export default clientsApiRouter;
|
||||
@@ -0,0 +1,18 @@
|
||||
import express, {Request, Response} from "express";
|
||||
|
||||
import idParamValidator from "../../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../../shared/safe-controller-function";
|
||||
import RoadmapTasksControllerV2 from "../../../controllers/project-roadmap/roadmap-tasks-controller-v2";
|
||||
|
||||
const roadmapApiRouter = express.Router();
|
||||
|
||||
function getList(req: Request, res: Response) {
|
||||
if (RoadmapTasksControllerV2.isTasksOnlyReq(req.query))
|
||||
return RoadmapTasksControllerV2.getTasksOnly(req, res);
|
||||
return RoadmapTasksControllerV2.getList(req, res);
|
||||
}
|
||||
|
||||
roadmapApiRouter.get("/chart-dates/:id", idParamValidator, safeControllerFunction(RoadmapTasksControllerV2.createDateRange));
|
||||
roadmapApiRouter.get("/task-groups/:id", idParamValidator, safeControllerFunction(getList));
|
||||
|
||||
export default roadmapApiRouter;
|
||||
@@ -0,0 +1,23 @@
|
||||
import express, {Request, Response} from "express";
|
||||
|
||||
import idParamValidator from "../../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../../shared/safe-controller-function";
|
||||
import ScheduleControllerV2 from "../../../controllers/schedule/schedule-controller";
|
||||
|
||||
const scheduleApiRouter = express.Router();
|
||||
|
||||
function getList(req: Request, res: Response) {
|
||||
if (ScheduleControllerV2.isTasksOnlyReq(req.query))
|
||||
return ScheduleControllerV2.getTasksOnly(req, res);
|
||||
return ScheduleControllerV2.getList(req, res);
|
||||
}
|
||||
|
||||
scheduleApiRouter.get("/chart-dates/:id", idParamValidator, safeControllerFunction(ScheduleControllerV2.createDateRange));
|
||||
scheduleApiRouter.get("/projects/:id", idParamValidator, safeControllerFunction(ScheduleControllerV2.getProjects));
|
||||
scheduleApiRouter.get("/project-member/:id", idParamValidator, safeControllerFunction(ScheduleControllerV2.getSingleProjectMember));
|
||||
scheduleApiRouter.get("/refresh/project-indicator/:id", idParamValidator, safeControllerFunction(ScheduleControllerV2.getSingleProjectIndicator));
|
||||
scheduleApiRouter.get("/tasks-by-member/:id", idParamValidator, safeControllerFunction(getList));
|
||||
scheduleApiRouter.get("/migrate/member-allocations", safeControllerFunction(ScheduleControllerV2.migrate));
|
||||
scheduleApiRouter.put("/bulk/delete-member-allocations", safeControllerFunction(ScheduleControllerV2.deleteMemberAllocations));
|
||||
|
||||
export default scheduleApiRouter;
|
||||
@@ -0,0 +1,19 @@
|
||||
import express, {Request, Response} from "express";
|
||||
import WorkloadGanntController from "../../../controllers/project-workload/workload-gannt-controller";
|
||||
import idParamValidator from "../../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../../shared/safe-controller-function";
|
||||
|
||||
const workloadApiRouter = express.Router();
|
||||
|
||||
function getList(req: Request, res: Response) {
|
||||
if (WorkloadGanntController.isTasksOnlyReq(req.query))
|
||||
return WorkloadGanntController.getTasksOnly(req, res);
|
||||
return WorkloadGanntController.getList(req, res);
|
||||
}
|
||||
|
||||
workloadApiRouter.get("/chart-dates/:id", idParamValidator, safeControllerFunction(WorkloadGanntController.createDateRange));
|
||||
workloadApiRouter.get("/workload-members/:id", idParamValidator, safeControllerFunction(WorkloadGanntController.getMembers));
|
||||
workloadApiRouter.get("/workload-tasks-by-member/:id", idParamValidator, safeControllerFunction(getList));
|
||||
workloadApiRouter.get("/workload-overview-by-member/:id", idParamValidator, safeControllerFunction(WorkloadGanntController.getMemberOverview));
|
||||
|
||||
export default workloadApiRouter;
|
||||
15
worklenz-backend/src/routes/apis/gantt-api-router.ts
Normal file
15
worklenz-backend/src/routes/apis/gantt-api-router.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import express from "express";
|
||||
|
||||
import GanttController from "../../controllers/gantt-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const ganttApiRouter = express.Router();
|
||||
|
||||
ganttApiRouter.get("/project-phase-label", safeControllerFunction(GanttController.getPhaseLabel));
|
||||
|
||||
ganttApiRouter.get("/project-roadmap", safeControllerFunction(GanttController.get));
|
||||
ganttApiRouter.get("/project-phases/:id", safeControllerFunction(GanttController.getPhasesByProject));
|
||||
|
||||
ganttApiRouter.get("/project-workload", safeControllerFunction(GanttController.getWorkload));
|
||||
|
||||
export default ganttApiRouter;
|
||||
15
worklenz-backend/src/routes/apis/home-page-api-router.ts
Normal file
15
worklenz-backend/src/routes/apis/home-page-api-router.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import express from "express";
|
||||
|
||||
import HomePageController from "../../controllers/home-page-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const homePageApiRouter = express.Router();
|
||||
|
||||
homePageApiRouter.post("/personal-task", safeControllerFunction(HomePageController.createPersonalTask));
|
||||
homePageApiRouter.get("/tasks", safeControllerFunction(HomePageController.getTasks));
|
||||
homePageApiRouter.get("/personal-tasks", safeControllerFunction(HomePageController.getPersonalTasks));
|
||||
homePageApiRouter.get("/projects", safeControllerFunction(HomePageController.getProjects));
|
||||
homePageApiRouter.get("/team-projects", safeControllerFunction(HomePageController.getProjectsByTeam));
|
||||
homePageApiRouter.put("/update-personal-task", safeControllerFunction(HomePageController.updatePersonalTask));
|
||||
|
||||
export default homePageApiRouter;
|
||||
105
worklenz-backend/src/routes/apis/index.ts
Normal file
105
worklenz-backend/src/routes/apis/index.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
import express from "express";
|
||||
|
||||
import AccessControlsController from "../../controllers/access-controls-controller";
|
||||
import AuthController from "../../controllers/auth-controller";
|
||||
import LogsController from "../../controllers/logs-controller";
|
||||
import OverviewController from "../../controllers/overview-controller";
|
||||
import TaskPrioritiesController from "../../controllers/task-priorities-controller";
|
||||
|
||||
import attachmentsApiRouter from "./attachments-api-router";
|
||||
import clientsApiRouter from "./clients-api-router";
|
||||
import jobTitlesApiRouter from "./job-titles-api-router";
|
||||
import notificationsApiRouter from "./notifications-api-router";
|
||||
import personalOverviewApiRouter from "./personal-overview-api-router";
|
||||
import projectMembersApiRouter from "./project-members-api-router";
|
||||
import projectsApiRouter from "./projects-api-router";
|
||||
import settingsApiRouter from "./settings-api-router";
|
||||
import statusesApiRouter from "./statuses-api-router";
|
||||
import subTasksApiRouter from "./sub-tasks-api-router";
|
||||
import taskCommentsApiRouter from "./task-comments-api-router";
|
||||
import taskWorkLogApiRouter from "./task-work-log-api-router";
|
||||
import tasksApiRouter from "./tasks-api-router";
|
||||
import teamMembersApiRouter from "./team-members-api-router";
|
||||
import teamsApiRouter from "./teams-api-router";
|
||||
import timezonesApiRouter from "./timezones-api-router";
|
||||
import todoListApiRouter from "./todo-list-api-router";
|
||||
import projectStatusesApiRouter from "./project-statuses-api-router";
|
||||
import labelsApiRouter from "./labels-api-router";
|
||||
import sharedProjectsApiRouter from "./shared-projects-api-router";
|
||||
import resourceAllocationApiRouter from "./resource-allocation-api-router";
|
||||
import taskTemplatesApiRouter from "./task-templates-api-router";
|
||||
import projectInsightsApiRouter from "./project-insights-api-router";
|
||||
import passwordValidator from "../../middlewares/validators/password-validator";
|
||||
import adminCenterApiRouter from "./admin-center-api-router";
|
||||
import reportingApiRouter from "./reporting-api-router";
|
||||
import activityLogsApiRouter from "./activity-logs-api-router";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectFoldersApiRouter from "./project-folders-api-router";
|
||||
import taskPhasesApiRouter from "./task-phases-api-router";
|
||||
import projectCategoriesApiRouter from "./project-categories-api-router";
|
||||
import homePageApiRouter from "./home-page-api-router";
|
||||
import ganttApiRouter from "./gantt-api-router";
|
||||
import projectCommentsApiRouter from "./project-comments-api-router";
|
||||
import reportingExportApiRouter from "./reporting-export-api-router";
|
||||
import projectHealthsApiRouter from "./project-healths-api-router";
|
||||
import ptTasksApiRouter from "./pt-tasks-api-router";
|
||||
import projectTemplatesApiRouter from "./project-templates-api";
|
||||
import ptTaskPhasesApiRouter from "./pt_task-phases-api-router";
|
||||
import ptStatusesApiRouter from "./pt-statuses-api-router";
|
||||
import workloadApiRouter from "./gannt-apis/workload-api-router";
|
||||
import roadmapApiRouter from "./gannt-apis/roadmap-api-router";
|
||||
import scheduleApiRouter from "./gannt-apis/schedule-api-router";
|
||||
import projectManagerApiRouter from "./project-managers-api-router";
|
||||
|
||||
const api = express.Router();
|
||||
|
||||
api.use("/projects", projectsApiRouter);
|
||||
api.use("/team-members", teamMembersApiRouter);
|
||||
api.use("/job-titles", jobTitlesApiRouter);
|
||||
api.use("/clients", clientsApiRouter);
|
||||
api.use("/teams", teamsApiRouter);
|
||||
api.use("/tasks", tasksApiRouter);
|
||||
api.use("/settings", settingsApiRouter);
|
||||
api.use("/personal-overview", personalOverviewApiRouter);
|
||||
api.use("/statuses", statusesApiRouter);
|
||||
api.use("/todo-list", todoListApiRouter);
|
||||
api.use("/notifications", notificationsApiRouter);
|
||||
api.use("/attachments", attachmentsApiRouter);
|
||||
api.use("/sub-tasks", subTasksApiRouter);
|
||||
api.use("/project-members", projectMembersApiRouter);
|
||||
api.use("/task-time-log", taskWorkLogApiRouter);
|
||||
api.use("/task-comments", taskCommentsApiRouter);
|
||||
api.use("/timezones", timezonesApiRouter);
|
||||
api.use("/project-statuses", projectStatusesApiRouter);
|
||||
api.use("/labels", labelsApiRouter);
|
||||
api.use("/resource-allocation", resourceAllocationApiRouter);
|
||||
api.use("/shared/projects", sharedProjectsApiRouter);
|
||||
api.use("/task-templates", taskTemplatesApiRouter);
|
||||
api.use("/project-insights", projectInsightsApiRouter);
|
||||
api.use("/admin-center", adminCenterApiRouter);
|
||||
api.use("/reporting", reportingApiRouter);
|
||||
api.use("/activity-logs", activityLogsApiRouter);
|
||||
api.use("/projects-folders", projectFoldersApiRouter);
|
||||
api.use("/task-phases", taskPhasesApiRouter);
|
||||
api.use("/project-categories", projectCategoriesApiRouter);
|
||||
api.use("/home", homePageApiRouter);
|
||||
api.use("/gantt", ganttApiRouter);
|
||||
api.use("/project-comments", projectCommentsApiRouter);
|
||||
api.use("/reporting-export", reportingExportApiRouter);
|
||||
api.use("/project-healths", projectHealthsApiRouter);
|
||||
api.use("/project-templates", projectTemplatesApiRouter);
|
||||
api.use("/pt-tasks", ptTasksApiRouter);
|
||||
api.use("/pt-task-phases", ptTaskPhasesApiRouter);
|
||||
api.use("/pt-statuses", ptStatusesApiRouter);
|
||||
api.use("/workload-gannt", workloadApiRouter);
|
||||
api.use("/roadmap-gannt", roadmapApiRouter);
|
||||
api.use("/schedule-gannt", scheduleApiRouter);
|
||||
api.use("/project-managers", projectManagerApiRouter);
|
||||
|
||||
api.get("/overview/:id", safeControllerFunction(OverviewController.getById));
|
||||
api.get("/task-priorities", safeControllerFunction(TaskPrioritiesController.get));
|
||||
api.post("/change-password", passwordValidator, safeControllerFunction(AuthController.changePassword));
|
||||
api.get("/access-controls/roles", safeControllerFunction(AccessControlsController.getRoles));
|
||||
api.get("/logs/my-dashboard", safeControllerFunction(LogsController.getActivityLog));
|
||||
|
||||
export default api;
|
||||
17
worklenz-backend/src/routes/apis/job-titles-api-router.ts
Normal file
17
worklenz-backend/src/routes/apis/job-titles-api-router.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import express from "express";
|
||||
import JobTitlesController from "../../controllers/job-titles-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import jobTitlesBodyValidator from "../../middlewares/validators/job-titles-body-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const jobTitlesApiRouter = express.Router();
|
||||
|
||||
jobTitlesApiRouter.post("/", teamOwnerOrAdminValidator, jobTitlesBodyValidator, safeControllerFunction(JobTitlesController.create));
|
||||
jobTitlesApiRouter.get("/", safeControllerFunction(JobTitlesController.get));
|
||||
jobTitlesApiRouter.get("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(JobTitlesController.getById));
|
||||
jobTitlesApiRouter.put("/:id", teamOwnerOrAdminValidator, jobTitlesBodyValidator, idParamValidator, safeControllerFunction(JobTitlesController.update));
|
||||
jobTitlesApiRouter.delete("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(JobTitlesController.deleteById));
|
||||
|
||||
export default jobTitlesApiRouter;
|
||||
16
worklenz-backend/src/routes/apis/labels-api-router.ts
Normal file
16
worklenz-backend/src/routes/apis/labels-api-router.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import express from "express";
|
||||
|
||||
import LabelsController from "../../controllers/labels-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const labelsApiRouter = express.Router();
|
||||
|
||||
labelsApiRouter.get("/", safeControllerFunction(LabelsController.get));
|
||||
labelsApiRouter.get("/tasks/:id", idParamValidator, safeControllerFunction(LabelsController.getByTask));
|
||||
labelsApiRouter.get("/project/:id", idParamValidator, safeControllerFunction(LabelsController.getByProject));
|
||||
labelsApiRouter.put("/tasks/:id", idParamValidator, teamOwnerOrAdminValidator, safeControllerFunction(LabelsController.updateColor));
|
||||
labelsApiRouter.delete("/team/:id", idParamValidator, teamOwnerOrAdminValidator, safeControllerFunction(LabelsController.deleteById));
|
||||
|
||||
export default labelsApiRouter;
|
||||
14
worklenz-backend/src/routes/apis/notifications-api-router.ts
Normal file
14
worklenz-backend/src/routes/apis/notifications-api-router.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import express from "express";
|
||||
|
||||
import NotificationController from "../../controllers/notification-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const notificationsApiRouter = express.Router();
|
||||
|
||||
notificationsApiRouter.get("/", safeControllerFunction(NotificationController.get));
|
||||
notificationsApiRouter.get("/unread-count", safeControllerFunction(NotificationController.getUnreadCount));
|
||||
notificationsApiRouter.delete("/:id", safeControllerFunction(NotificationController.delete));
|
||||
notificationsApiRouter.put("/read-all", safeControllerFunction(NotificationController.readAll));
|
||||
notificationsApiRouter.put("/:id", safeControllerFunction(NotificationController.update));
|
||||
|
||||
export default notificationsApiRouter;
|
||||
@@ -0,0 +1,12 @@
|
||||
import express from "express";
|
||||
|
||||
import PersonalOverviewController from "../../controllers/personal-overview-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const personalOverviewApiRouter = express.Router();
|
||||
|
||||
personalOverviewApiRouter.get("/tasks-due-today", safeControllerFunction(PersonalOverviewController.getTasksDueToday));
|
||||
personalOverviewApiRouter.get("/tasks-remaining", safeControllerFunction(PersonalOverviewController.getTasksRemaining));
|
||||
personalOverviewApiRouter.get("/tasks-overview", safeControllerFunction(PersonalOverviewController.getTaskOverview));
|
||||
|
||||
export default personalOverviewApiRouter;
|
||||
10
worklenz-backend/src/routes/apis/priorities-api-router.ts
Normal file
10
worklenz-backend/src/routes/apis/priorities-api-router.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import express from "express";
|
||||
import TaskPrioritiesController from "../../controllers/task-priorities-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const prioritiesApiRouter = express.Router();
|
||||
|
||||
prioritiesApiRouter.get("/task-priorities/:id", idParamValidator, safeControllerFunction(TaskPrioritiesController.getById));
|
||||
|
||||
export default prioritiesApiRouter;
|
||||
@@ -0,0 +1,15 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectCategoriesController from "../../controllers/project-categories-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const projectCategoriesApiRouter = express.Router();
|
||||
|
||||
projectCategoriesApiRouter.post("/", safeControllerFunction(ProjectCategoriesController.create));
|
||||
projectCategoriesApiRouter.get("/", safeControllerFunction(ProjectCategoriesController.get));
|
||||
projectCategoriesApiRouter.get("/org-categories", safeControllerFunction(ProjectCategoriesController.getByMultipleTeams));
|
||||
projectCategoriesApiRouter.get("/:id", safeControllerFunction(ProjectCategoriesController.getById));
|
||||
projectCategoriesApiRouter.put("/:id", safeControllerFunction(ProjectCategoriesController.update));
|
||||
projectCategoriesApiRouter.delete("/:id", safeControllerFunction(ProjectCategoriesController.deleteById));
|
||||
|
||||
export default projectCategoriesApiRouter;
|
||||
@@ -0,0 +1,15 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectCommentsController from "../../controllers/project-comments-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
|
||||
const projectCommentsApiRouter = express.Router();
|
||||
|
||||
projectCommentsApiRouter.post("/", safeControllerFunction(ProjectCommentsController.create));
|
||||
projectCommentsApiRouter.get("/project-members/:id", idParamValidator, safeControllerFunction(ProjectCommentsController.getMembers));
|
||||
projectCommentsApiRouter.get("/project-comments/:id", idParamValidator, safeControllerFunction(ProjectCommentsController.getByProjectId));
|
||||
projectCommentsApiRouter.get("/comments-count/:id", idParamValidator, safeControllerFunction(ProjectCommentsController.getCountByProjectId));
|
||||
projectCommentsApiRouter.delete("/delete/:id", idParamValidator, safeControllerFunction(ProjectCommentsController.deleteById));
|
||||
|
||||
export default projectCommentsApiRouter;
|
||||
@@ -0,0 +1,17 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectFoldersController from "../../controllers/project-folders-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import schemaValidator from "../../middlewares/schema-validator";
|
||||
import projectFolderSchema from "../../json_schemas/project-folder-schema";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
|
||||
const projectFoldersApiRouter = express.Router();
|
||||
|
||||
projectFoldersApiRouter.post("/", schemaValidator(projectFolderSchema), safeControllerFunction(ProjectFoldersController.create));
|
||||
projectFoldersApiRouter.get("/", safeControllerFunction(ProjectFoldersController.get));
|
||||
projectFoldersApiRouter.get("/:id", idParamValidator, safeControllerFunction(ProjectFoldersController.getById));
|
||||
projectFoldersApiRouter.put("/:id", idParamValidator, safeControllerFunction(ProjectFoldersController.update));
|
||||
projectFoldersApiRouter.delete("/:id", idParamValidator, safeControllerFunction(ProjectFoldersController.deleteById));
|
||||
|
||||
export default projectFoldersApiRouter;
|
||||
@@ -0,0 +1,9 @@
|
||||
import express from "express";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import ProjectHealthController from "../../controllers/project-healths-controller";
|
||||
|
||||
const projectHealthsApiRouter = express.Router();
|
||||
|
||||
projectHealthsApiRouter.get("/", safeControllerFunction(ProjectHealthController.get));
|
||||
|
||||
export default projectHealthsApiRouter;
|
||||
@@ -0,0 +1,26 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectInsightsController from "../../controllers/project-insights-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const projectInsightsApiRouter = express.Router();
|
||||
|
||||
projectInsightsApiRouter.get("/last-updated/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getLastUpdatedtasks));
|
||||
projectInsightsApiRouter.get("/logs/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getProjectLogs));
|
||||
projectInsightsApiRouter.get("/status-overview/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getStatusOverview));
|
||||
projectInsightsApiRouter.get("/priority-overview/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getPriorityOverview));
|
||||
projectInsightsApiRouter.get("/deadline/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getProjectDeadlineStats));
|
||||
|
||||
projectInsightsApiRouter.get("/members/stats/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getMemberInsightsByProjectId));
|
||||
projectInsightsApiRouter.post("/members/tasks", safeControllerFunction(ProjectInsightsController.getTasksByProjectMember));
|
||||
|
||||
projectInsightsApiRouter.get("/overdue-tasks/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getOverdueTasks));
|
||||
projectInsightsApiRouter.get("/early-tasks/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getTasksFinishedEarly));
|
||||
projectInsightsApiRouter.get("/late-tasks/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getTasksFinishedLate));
|
||||
|
||||
projectInsightsApiRouter.get("/overlogged-tasks/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getOverloggedTasksByProject));
|
||||
|
||||
projectInsightsApiRouter.get("/:id", idParamValidator, safeControllerFunction(ProjectInsightsController.getById));
|
||||
|
||||
export default projectInsightsApiRouter;
|
||||
@@ -0,0 +1,9 @@
|
||||
import express from "express";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import ProjectManagersController from "../../controllers/project-managers-controller";
|
||||
|
||||
const projectManagerApiRouter = express.Router();
|
||||
|
||||
projectManagerApiRouter.get("/", safeControllerFunction(ProjectManagersController.getByOrg));
|
||||
|
||||
export default projectManagerApiRouter;
|
||||
@@ -0,0 +1,18 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectMembersController from "../../controllers/project-members-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import projectMemberInviteValidator from "../../middlewares/validators/project-member-invite-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectManagerValidator from "../../middlewares/validators/project-manager-validator";
|
||||
|
||||
const projectMembersApiRouter = express.Router();
|
||||
|
||||
projectMembersApiRouter.post("/", projectManagerValidator, safeControllerFunction(ProjectMembersController.create));
|
||||
projectMembersApiRouter.post("/invite", teamOwnerOrAdminValidator, projectMemberInviteValidator, safeControllerFunction(ProjectMembersController.createByEmail));
|
||||
projectMembersApiRouter.get("/:id", idParamValidator, safeControllerFunction(ProjectMembersController.get)); // id = project id
|
||||
projectMembersApiRouter.delete("/:id", projectManagerValidator, safeControllerFunction(ProjectMembersController.deleteById));
|
||||
|
||||
export default projectMembersApiRouter;
|
||||
@@ -0,0 +1,10 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectstatusesController from "../../controllers/project-statuses-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const projectStatusesApiRouter = express.Router();
|
||||
|
||||
projectStatusesApiRouter.get("/", safeControllerFunction(ProjectstatusesController.get));
|
||||
|
||||
export default projectStatusesApiRouter;
|
||||
24
worklenz-backend/src/routes/apis/project-templates-api.ts
Normal file
24
worklenz-backend/src/routes/apis/project-templates-api.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import express from "express";
|
||||
import ProjectTemplatesController from "../../controllers/project-templates/pt-templates-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const projectTemplatesApiRouter = express.Router();
|
||||
|
||||
projectTemplatesApiRouter.get("/create", safeControllerFunction(ProjectTemplatesController.createTemplates));
|
||||
projectTemplatesApiRouter.post("/setup", safeControllerFunction(ProjectTemplatesController.setupAccount));
|
||||
|
||||
// worklenz templates
|
||||
projectTemplatesApiRouter.post("/import-template", safeControllerFunction(ProjectTemplatesController.importTemplates));
|
||||
|
||||
projectTemplatesApiRouter.get("/worklenz-templates", safeControllerFunction(ProjectTemplatesController.getTemplates));
|
||||
projectTemplatesApiRouter.get("/worklenz-templates/:id", safeControllerFunction(ProjectTemplatesController.getTemplateById));
|
||||
|
||||
// custom templates
|
||||
projectTemplatesApiRouter.post("/custom-template", safeControllerFunction(ProjectTemplatesController.createCustomTemplate));
|
||||
projectTemplatesApiRouter.get("/custom-templates", safeControllerFunction(ProjectTemplatesController.getCustomTemplates));
|
||||
|
||||
projectTemplatesApiRouter.post("/import-custom-template", safeControllerFunction(ProjectTemplatesController.importCustomTemplate));
|
||||
|
||||
projectTemplatesApiRouter.delete("/:id", safeControllerFunction(ProjectTemplatesController.deleteCustomTemplate));
|
||||
|
||||
export default projectTemplatesApiRouter;
|
||||
37
worklenz-backend/src/routes/apis/projects-api-router.ts
Normal file
37
worklenz-backend/src/routes/apis/projects-api-router.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import express from "express";
|
||||
|
||||
import ProjectsController from "../../controllers/projects-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import projectsBodyValidator from "../../middlewares/validators/projects-body-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectManagerValidator from "../../middlewares/validators/project-manager-validator";
|
||||
import projectMemberValidator from "../../middlewares/validators/project-member-validator";
|
||||
|
||||
const projectsApiRouter = express.Router();
|
||||
|
||||
// db changes. One time only
|
||||
projectsApiRouter.get("/update-exist-phase-colors", safeControllerFunction(ProjectsController.updateExistPhaseColors));
|
||||
projectsApiRouter.get("/update-exist-sort-order", safeControllerFunction(ProjectsController.updateExistSortOrder));
|
||||
|
||||
|
||||
projectsApiRouter.post("/", teamOwnerOrAdminValidator, projectsBodyValidator, safeControllerFunction(ProjectsController.create));
|
||||
projectsApiRouter.get("/", safeControllerFunction(ProjectsController.get));
|
||||
projectsApiRouter.get("/my-task-projects", safeControllerFunction(ProjectsController.getMyProjectsToTasks));
|
||||
projectsApiRouter.get("/my-projects", safeControllerFunction(ProjectsController.getMyProjects));
|
||||
projectsApiRouter.get("/all", safeControllerFunction(ProjectsController.getAllProjects));
|
||||
projectsApiRouter.get("/tasks", safeControllerFunction(ProjectsController.getAllTasks));
|
||||
projectsApiRouter.get("/members/:id", safeControllerFunction(ProjectsController.getMembersByProjectId));
|
||||
projectsApiRouter.get("/overview/:id", idParamValidator, safeControllerFunction(ProjectsController.getOverview));
|
||||
projectsApiRouter.get("/overview-members/:id", idParamValidator, safeControllerFunction(ProjectsController.getOverviewMembers));
|
||||
projectsApiRouter.get("/favorite/:id", idParamValidator, safeControllerFunction(ProjectsController.toggleFavorite));
|
||||
projectsApiRouter.get("/archive/:id", idParamValidator, safeControllerFunction(ProjectsController.toggleArchive));
|
||||
projectsApiRouter.get("/:id", idParamValidator, safeControllerFunction(ProjectsController.getById));
|
||||
projectsApiRouter.put("/update-pinned-view", projectMemberValidator, safeControllerFunction(ProjectsController.updatePinnedView));
|
||||
projectsApiRouter.put("/:id", projectManagerValidator, idParamValidator, projectsBodyValidator, safeControllerFunction(ProjectsController.update));
|
||||
projectsApiRouter.delete("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(ProjectsController.deleteById));
|
||||
projectsApiRouter.get("/archive-all/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(ProjectsController.toggleArchiveAll));
|
||||
|
||||
|
||||
export default projectsApiRouter;
|
||||
19
worklenz-backend/src/routes/apis/pt-statuses-api-router.ts
Normal file
19
worklenz-backend/src/routes/apis/pt-statuses-api-router.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import express from "express";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import ptTaskStatusBodyValidator from "../../middlewares/validators/pt-task-status-body-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import PtTaskStatusesController from "../../controllers/project-templates/pt-task-statuses-controller";
|
||||
|
||||
const ptStatusesApiRouter = express.Router();
|
||||
|
||||
ptStatusesApiRouter.post("/", teamOwnerOrAdminValidator, ptTaskStatusBodyValidator, safeControllerFunction(PtTaskStatusesController.getCreated));
|
||||
ptStatusesApiRouter.get("/", safeControllerFunction(PtTaskStatusesController.get));
|
||||
// ptStatusesApiRouter.put("/order", statusOrderValidator, safeControllerFunction(PtTaskStatusesController.updateStatusOrder));
|
||||
ptStatusesApiRouter.get("/categories", safeControllerFunction(PtTaskStatusesController.getCategories));
|
||||
ptStatusesApiRouter.get("/:id", idParamValidator, safeControllerFunction(PtTaskStatusesController.getById));
|
||||
ptStatusesApiRouter.put("/name/:id", teamOwnerOrAdminValidator, idParamValidator, ptTaskStatusBodyValidator, safeControllerFunction(PtTaskStatusesController.updateName));
|
||||
ptStatusesApiRouter.put("/:id", teamOwnerOrAdminValidator, idParamValidator, ptTaskStatusBodyValidator, safeControllerFunction(PtTaskStatusesController.update));
|
||||
// ptStatusesApiRouter.delete("/:id", teamOwnerOrAdminValidator, idParamValidator, statusDeleteValidator, safeControllerFunction(PtTaskStatusesController.deleteById));
|
||||
|
||||
export default ptStatusesApiRouter;
|
||||
20
worklenz-backend/src/routes/apis/pt-tasks-api-router.ts
Normal file
20
worklenz-backend/src/routes/apis/pt-tasks-api-router.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import express, {Request, Response} from "express";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import PtTasksController from "../../controllers/project-templates/pt-tasks-controller";
|
||||
import mapTasksToBulkUpdate from "../../middlewares/map-tasks-to-bulk-update";
|
||||
import bulkTasksValidator from "../../middlewares/validators/bulk-tasks-validator";
|
||||
|
||||
const ptTasksApiRouter = express.Router();
|
||||
|
||||
// split the controller between the counts query and the original data query
|
||||
function getList(req: Request, res: Response) {
|
||||
if (PtTasksController.isTasksOnlyReq(req.query))
|
||||
return PtTasksController.getTasksOnly(req, res);
|
||||
return PtTasksController.getList(req, res);
|
||||
}
|
||||
|
||||
ptTasksApiRouter.get("/list/:id", idParamValidator, safeControllerFunction(getList));
|
||||
ptTasksApiRouter.put("/bulk/delete", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(PtTasksController.bulkDelete));
|
||||
|
||||
export default ptTasksApiRouter;
|
||||
@@ -0,0 +1,19 @@
|
||||
import express from "express";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import taskPhaseNameValidator from "../../middlewares/validators/task-phase-name-validator";
|
||||
import schemaValidator from "../../middlewares/schema-validator";
|
||||
import PtTaskPhasesController from "../../controllers/project-templates/pt-task-phases-controller";
|
||||
import taskPhaseCreateSchema from "../../json_schemas/task-phase-create-schema";
|
||||
|
||||
const ptTaskPhasesApiRouter = express.Router();
|
||||
|
||||
ptTaskPhasesApiRouter.post("/", teamOwnerOrAdminValidator, safeControllerFunction(PtTaskPhasesController.create));
|
||||
ptTaskPhasesApiRouter.get("/", safeControllerFunction(PtTaskPhasesController.get));
|
||||
ptTaskPhasesApiRouter.put("/label/:id", teamOwnerOrAdminValidator, taskPhaseNameValidator, safeControllerFunction(PtTaskPhasesController.updateLabel));
|
||||
ptTaskPhasesApiRouter.put("/change-color/:id", teamOwnerOrAdminValidator, safeControllerFunction(PtTaskPhasesController.updateColor));
|
||||
|
||||
ptTaskPhasesApiRouter.put("/:id", teamOwnerOrAdminValidator, taskPhaseNameValidator, schemaValidator(taskPhaseCreateSchema), safeControllerFunction(PtTaskPhasesController.update));
|
||||
ptTaskPhasesApiRouter.delete("/:id", teamOwnerOrAdminValidator, safeControllerFunction(PtTaskPhasesController.deleteById));
|
||||
|
||||
export default ptTaskPhasesApiRouter;
|
||||
73
worklenz-backend/src/routes/apis/reporting-api-router.ts
Normal file
73
worklenz-backend/src/routes/apis/reporting-api-router.ts
Normal file
@@ -0,0 +1,73 @@
|
||||
import express from "express";
|
||||
|
||||
import ReportingController from "../../controllers/reporting-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import ReportingOverviewController from "../../controllers/reporting/overview/reporting-overview-controller";
|
||||
import ReportingInfoController from "../../controllers/reporting/reporting-info-controller";
|
||||
import ReportingAllocationController from "../../controllers/reporting/reporting-allocation-controller";
|
||||
import ReportingProjectsController from "../../controllers/reporting/projects/reporting-projects-controller";
|
||||
import ReportingMembersController from "../../controllers/reporting/reporting-members-controller";
|
||||
|
||||
const reportingApiRouter = express.Router();
|
||||
|
||||
reportingApiRouter.get("/info", safeControllerFunction(ReportingInfoController.getInfo));
|
||||
|
||||
// Overview
|
||||
reportingApiRouter.get("/overview/statistics", safeControllerFunction(ReportingOverviewController.getStatistics));
|
||||
reportingApiRouter.get("/overview/teams", safeControllerFunction(ReportingOverviewController.getTeams));
|
||||
reportingApiRouter.get("/overview/projects", safeControllerFunction(ReportingOverviewController.getProjects));
|
||||
reportingApiRouter.get("/overview/projects/:team_id", safeControllerFunction(ReportingOverviewController.getProjectsByTeamOrMember));
|
||||
reportingApiRouter.get("/overview/members/:team_id", safeControllerFunction(ReportingOverviewController.getMembersByTeam));
|
||||
reportingApiRouter.get("/overview/team/info/:team_id", safeControllerFunction(ReportingOverviewController.getTeamOverview));
|
||||
|
||||
reportingApiRouter.get("/overview/project/info/:project_id", safeControllerFunction(ReportingOverviewController.getProjectOverview));
|
||||
reportingApiRouter.get("/overview/project/members/:project_id", safeControllerFunction(ReportingOverviewController.getProjectMembers));
|
||||
reportingApiRouter.get("/overview/project/tasks/:project_id", safeControllerFunction(ReportingOverviewController.getProjectTasks));
|
||||
|
||||
reportingApiRouter.get("/overview/member/info", safeControllerFunction(ReportingOverviewController.getMemberOverview));
|
||||
reportingApiRouter.get("/overview/team-member/info", safeControllerFunction(ReportingOverviewController.getTeamMemberOverview));
|
||||
reportingApiRouter.get("/overview/member/tasks/:team_member_id", safeControllerFunction(ReportingOverviewController.getMemberTasks));
|
||||
|
||||
// Projects
|
||||
reportingApiRouter.get("/projects", safeControllerFunction(ReportingProjectsController.get));
|
||||
reportingApiRouter.post("/project-timelogs", safeControllerFunction(ReportingProjectsController.getProjectTimeLogs));
|
||||
|
||||
// members
|
||||
reportingApiRouter.get("/members", safeControllerFunction(ReportingMembersController.getReportingMembers));
|
||||
|
||||
reportingApiRouter.post("/members/all", safeControllerFunction(ReportingController.getReportingMembers));
|
||||
reportingApiRouter.post("/projects-by-member", safeControllerFunction(ReportingController.getProjectsByMember));
|
||||
reportingApiRouter.get("/members/unassigned", safeControllerFunction(ReportingController.getUnAssignedUsers));
|
||||
reportingApiRouter.get("/members/overdue/:id", idParamValidator, safeControllerFunction(ReportingController.getMembersWithOverDueTasks));
|
||||
reportingApiRouter.get("/member/stats/:id", idParamValidator, safeControllerFunction(ReportingController.getReportingMemberStats));
|
||||
reportingApiRouter.get("/member/overview/:id", idParamValidator, safeControllerFunction(ReportingController.getReportingMemberOverview));
|
||||
reportingApiRouter.get("/member/projects", safeControllerFunction(ReportingController.getMemberProjects));
|
||||
|
||||
reportingApiRouter.get("/member/project", safeControllerFunction(ReportingController.getTasksByProject));
|
||||
reportingApiRouter.get("/member/tasks", safeControllerFunction(ReportingController.getReportingMembersTasks));
|
||||
|
||||
|
||||
reportingApiRouter.post("/", safeControllerFunction(ReportingController.create));
|
||||
reportingApiRouter.post("/actual-vs-estimate", safeControllerFunction(ReportingController.getEstimatedVsActualTime));
|
||||
reportingApiRouter.post("/allocation", safeControllerFunction(ReportingAllocationController.getAllocation));
|
||||
reportingApiRouter.get("/allocation/teams", safeControllerFunction(ReportingController.getMyTeams));
|
||||
reportingApiRouter.post("/allocation/categories", safeControllerFunction(ReportingController.getCategoriesByTeams));
|
||||
reportingApiRouter.post("/allocation/projects", safeControllerFunction(ReportingController.getProjectsByTeams));
|
||||
|
||||
reportingApiRouter.get("/overview/export", safeControllerFunction(ReportingController.exportOverviewExcel));
|
||||
reportingApiRouter.get("/allocation/export", safeControllerFunction(ReportingController.exportAllocation));
|
||||
reportingApiRouter.get("/projects/export", safeControllerFunction(ReportingController.exportProjects));
|
||||
reportingApiRouter.get("/members/export", safeControllerFunction(ReportingController.exportMembers));
|
||||
reportingApiRouter.get("/members/single-member-task-stats", safeControllerFunction(ReportingMembersController.getMemberTaskStats));
|
||||
reportingApiRouter.get("/members/single-member-projects", safeControllerFunction(ReportingMembersController.getSingleMemberProjects));
|
||||
|
||||
reportingApiRouter.get("/member-projects", safeControllerFunction(ReportingMembersController.getMemberProjects));
|
||||
reportingApiRouter.post("/members/single-member-activities", safeControllerFunction(ReportingMembersController.getMemberActivities));
|
||||
reportingApiRouter.post("/members/single-member-timelogs", safeControllerFunction(ReportingMembersController.getMemberTimelogs));
|
||||
|
||||
reportingApiRouter.post("/time-reports/projects", safeControllerFunction(ReportingAllocationController.getProjectTimeSheets));
|
||||
reportingApiRouter.post("/time-reports/members", safeControllerFunction(ReportingAllocationController.getMemberTimeSheets));
|
||||
reportingApiRouter.post("/time-reports/estimated-vs-actual", safeControllerFunction(ReportingAllocationController.getEstimatedVsActual));
|
||||
|
||||
export default reportingApiRouter;
|
||||
@@ -0,0 +1,24 @@
|
||||
import express from "express";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import ReportingOverviewExportController from "../../controllers/reporting/overview/reporting-overview-export-controller";
|
||||
import ReportingAllocationController from "../../controllers/reporting/reporting-allocation-controller";
|
||||
import ReportingProjectsExportController from "../../controllers/reporting/projects/reporting-projects-export-controller";
|
||||
import ReportingMembersController from "../../controllers/reporting/reporting-members-controller";
|
||||
|
||||
const reportingExportApiRouter = express.Router();
|
||||
|
||||
reportingExportApiRouter.get("/overview/projects", safeControllerFunction(ReportingOverviewExportController.getProjectsByTeamOrMember));
|
||||
reportingExportApiRouter.get("/overview/members", safeControllerFunction(ReportingOverviewExportController.getMembersByTeam));
|
||||
reportingExportApiRouter.get("/allocation/export", safeControllerFunction(ReportingAllocationController.export));
|
||||
reportingExportApiRouter.get("/projects/export", safeControllerFunction(ReportingProjectsExportController.export));
|
||||
reportingExportApiRouter.get("/projects-time-log-breakdown/export", safeControllerFunction(ReportingProjectsExportController.exportProjectTimeLogs));
|
||||
reportingExportApiRouter.get("/members/export", safeControllerFunction(ReportingMembersController.export));
|
||||
reportingExportApiRouter.get("/project-members/export", safeControllerFunction(ReportingOverviewExportController.exportProjectMembers));
|
||||
reportingExportApiRouter.get("/project-tasks/export", safeControllerFunction(ReportingOverviewExportController.exportProjectTasks));
|
||||
reportingExportApiRouter.get("/member-projects/export", safeControllerFunction(ReportingMembersController.exportMemberProjects));
|
||||
reportingExportApiRouter.get("/member-tasks/export", safeControllerFunction(ReportingOverviewExportController.exportMemberTasks));
|
||||
reportingExportApiRouter.get("/flat-tasks/export", safeControllerFunction(ReportingOverviewExportController.exportFlatTasks));
|
||||
reportingExportApiRouter.get("/member-time-log-breakdown/export", safeControllerFunction(ReportingMembersController.exportTimeLogs));
|
||||
reportingExportApiRouter.get("/member-activity-log-breakdown/export", safeControllerFunction(ReportingMembersController.exportActivityLogs));
|
||||
|
||||
export default reportingExportApiRouter;
|
||||
@@ -0,0 +1,11 @@
|
||||
import express from "express";
|
||||
|
||||
import ResourceallocationController from "../../controllers/resource-allocation-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const resourceAllocationApiRouter = express.Router();
|
||||
|
||||
resourceAllocationApiRouter.get("/project", safeControllerFunction(ResourceallocationController.getProjectWiseResources));
|
||||
resourceAllocationApiRouter.get("/team", safeControllerFunction(ResourceallocationController.getUserWiseResources));
|
||||
|
||||
export default resourceAllocationApiRouter;
|
||||
24
worklenz-backend/src/routes/apis/settings-api-router.ts
Normal file
24
worklenz-backend/src/routes/apis/settings-api-router.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import express from "express";
|
||||
import NotificationController from "../../controllers/notification-controller";
|
||||
|
||||
import ProfileSettingsController from "../../controllers/profile-settings-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import profileSettingsBodyValidator from "../../middlewares/validators/profile-settings-body-validator";
|
||||
import setupValidator from "../../middlewares/validators/setup-validator";
|
||||
import teamSettingsBodyValidator from "../../middlewares/validators/team-settings-body-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const settingsApiRouter = express.Router();
|
||||
|
||||
settingsApiRouter.post("/setup", setupValidator, safeControllerFunction(ProfileSettingsController.setup));
|
||||
|
||||
settingsApiRouter.get("/notifications", safeControllerFunction(NotificationController.getSettings));
|
||||
settingsApiRouter.put("/notifications", safeControllerFunction(NotificationController.updateSettings));
|
||||
|
||||
settingsApiRouter.get("/profile", safeControllerFunction(ProfileSettingsController.get));
|
||||
settingsApiRouter.put("/profile", profileSettingsBodyValidator, safeControllerFunction(ProfileSettingsController.update));
|
||||
|
||||
settingsApiRouter.put("/team-name/:id", idParamValidator, teamSettingsBodyValidator, safeControllerFunction(ProfileSettingsController.update_team_name));
|
||||
|
||||
export default settingsApiRouter;
|
||||
@@ -0,0 +1,14 @@
|
||||
import express from "express";
|
||||
|
||||
import SharedprojectsController from "../../controllers/shared-projects-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import sharedProjectsCreateValidator from "../../middlewares/validators/shared-projects-create-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const sharedProjectsApiRouter = express.Router();
|
||||
|
||||
sharedProjectsApiRouter.post("/", sharedProjectsCreateValidator, safeControllerFunction(SharedprojectsController.create)); // create link
|
||||
sharedProjectsApiRouter.get("/:id", idParamValidator, safeControllerFunction(SharedprojectsController.getById)); // get by project id
|
||||
sharedProjectsApiRouter.delete("/:id", idParamValidator, safeControllerFunction(SharedprojectsController.deleteById)); // disable link
|
||||
|
||||
export default sharedProjectsApiRouter;
|
||||
24
worklenz-backend/src/routes/apis/statuses-api-router.ts
Normal file
24
worklenz-backend/src/routes/apis/statuses-api-router.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import express from "express";
|
||||
|
||||
import TaskStatusesController from "../../controllers/task-statuses-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import statusDeleteValidator from "../../middlewares/validators/status-delete-validator";
|
||||
import statusOrderValidator from "../../middlewares/validators/status-order-validator";
|
||||
import taskStatusBodyValidator from "../../middlewares/validators/task-status-body-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectManagerValidator from "../../middlewares/validators/project-manager-validator";
|
||||
|
||||
const statusesApiRouter = express.Router();
|
||||
|
||||
statusesApiRouter.post("/", projectManagerValidator, taskStatusBodyValidator, safeControllerFunction(TaskStatusesController.getCreated));
|
||||
statusesApiRouter.get("/", safeControllerFunction(TaskStatusesController.get));
|
||||
statusesApiRouter.put("/order", statusOrderValidator, safeControllerFunction(TaskStatusesController.updateStatusOrder));
|
||||
statusesApiRouter.get("/categories", safeControllerFunction(TaskStatusesController.getCategories));
|
||||
statusesApiRouter.get("/:id", idParamValidator, safeControllerFunction(TaskStatusesController.getById));
|
||||
statusesApiRouter.put("/name/:id", projectManagerValidator, idParamValidator, taskStatusBodyValidator, safeControllerFunction(TaskStatusesController.updateName));
|
||||
statusesApiRouter.put("/:id", projectManagerValidator, idParamValidator, taskStatusBodyValidator, safeControllerFunction(TaskStatusesController.update));
|
||||
statusesApiRouter.delete("/:id", projectManagerValidator, idParamValidator, statusDeleteValidator, safeControllerFunction(TaskStatusesController.deleteById));
|
||||
|
||||
export default statusesApiRouter;
|
||||
14
worklenz-backend/src/routes/apis/sub-tasks-api-router.ts
Normal file
14
worklenz-backend/src/routes/apis/sub-tasks-api-router.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import express from "express";
|
||||
|
||||
import SubTasksController from "../../controllers/sub-tasks-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const subTasksApiRouter = express.Router();
|
||||
|
||||
subTasksApiRouter.get("/names/:id", idParamValidator, safeControllerFunction(SubTasksController.getNames)); // :id = parent task id
|
||||
subTasksApiRouter.post("/roadmap/:id", idParamValidator, safeControllerFunction(SubTasksController.getSubTasksRoadMap)); // :id = parent task id
|
||||
subTasksApiRouter.get("/:id", idParamValidator, safeControllerFunction(SubTasksController.get)); // :id = parent task id
|
||||
|
||||
export default subTasksApiRouter;
|
||||
15
worklenz-backend/src/routes/apis/task-comments-api-router.ts
Normal file
15
worklenz-backend/src/routes/apis/task-comments-api-router.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
import express from "express";
|
||||
|
||||
import TaskCommentsController from "../../controllers/task-comments-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import taskCommentBodyValidator from "../../middlewares/validators/task-comment-body-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const taskCommentsApiRouter = express.Router();
|
||||
|
||||
taskCommentsApiRouter.post("/", taskCommentBodyValidator, safeControllerFunction(TaskCommentsController.create));
|
||||
taskCommentsApiRouter.get("/:id", idParamValidator, safeControllerFunction(TaskCommentsController.getByTaskId));
|
||||
taskCommentsApiRouter.delete("/:id/:taskId", idParamValidator, safeControllerFunction(TaskCommentsController.deleteById));
|
||||
|
||||
export default taskCommentsApiRouter;
|
||||
20
worklenz-backend/src/routes/apis/task-phases-api-router.ts
Normal file
20
worklenz-backend/src/routes/apis/task-phases-api-router.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import express from "express";
|
||||
|
||||
import TaskPhasesController from "../../controllers/task-phases-controller";
|
||||
import schemaValidator from "../../middlewares/schema-validator";
|
||||
import taskPhaseCreateSchema from "../../json_schemas/task-phase-create-schema";
|
||||
import taskPhaseNameValidator from "../../middlewares/validators/task-phase-name-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
import projectManagerValidator from "../../middlewares/validators/project-manager-validator";
|
||||
|
||||
const taskPhasesApiRouter = express.Router();
|
||||
|
||||
taskPhasesApiRouter.post("/", projectManagerValidator, safeControllerFunction(TaskPhasesController.create));
|
||||
taskPhasesApiRouter.get("/", safeControllerFunction(TaskPhasesController.get));
|
||||
taskPhasesApiRouter.put("/update-sort-order", projectManagerValidator, safeControllerFunction(TaskPhasesController.updateSortOrder));
|
||||
taskPhasesApiRouter.put("/label/:id", projectManagerValidator, taskPhaseNameValidator, safeControllerFunction(TaskPhasesController.updateLabel));
|
||||
taskPhasesApiRouter.put("/change-color/:id", projectManagerValidator, schemaValidator(taskPhaseCreateSchema), safeControllerFunction(TaskPhasesController.updateColor));
|
||||
taskPhasesApiRouter.put("/:id", projectManagerValidator, taskPhaseNameValidator, schemaValidator(taskPhaseCreateSchema), safeControllerFunction(TaskPhasesController.update));
|
||||
taskPhasesApiRouter.delete("/:id", projectManagerValidator, safeControllerFunction(TaskPhasesController.deleteById));
|
||||
|
||||
export default taskPhasesApiRouter;
|
||||
@@ -0,0 +1,18 @@
|
||||
import express from "express";
|
||||
|
||||
import TasktemplatesController from "../../controllers/task-templates-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import importTaskTemplatesValidator from "../../middlewares/validators/import-task-templates-validator";
|
||||
import bodyNameValidator from "../../middlewares/validators/body-name-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const taskTemplatesApiRouter = express.Router();
|
||||
|
||||
taskTemplatesApiRouter.post("/", bodyNameValidator, safeControllerFunction(TasktemplatesController.create));
|
||||
taskTemplatesApiRouter.post("/import/:id", importTaskTemplatesValidator, safeControllerFunction(TasktemplatesController.import));
|
||||
taskTemplatesApiRouter.get("/", safeControllerFunction(TasktemplatesController.get));
|
||||
taskTemplatesApiRouter.get("/:id", idParamValidator, safeControllerFunction(TasktemplatesController.getById));
|
||||
taskTemplatesApiRouter.put("/:id", idParamValidator, safeControllerFunction(TasktemplatesController.update));
|
||||
taskTemplatesApiRouter.delete("/:id", idParamValidator, safeControllerFunction(TasktemplatesController.deleteById));
|
||||
|
||||
export default taskTemplatesApiRouter;
|
||||
17
worklenz-backend/src/routes/apis/task-work-log-api-router.ts
Normal file
17
worklenz-backend/src/routes/apis/task-work-log-api-router.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import express from "express";
|
||||
|
||||
import TaskWorklogController from "../../controllers/task-work-log-controller";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
|
||||
import taskTimeLogValidator from "../../middlewares/validators/task-time-log-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const taskWorkLogApiRouter = express.Router();
|
||||
|
||||
taskWorkLogApiRouter.post("/", taskTimeLogValidator, safeControllerFunction(TaskWorklogController.create));
|
||||
taskWorkLogApiRouter.get("/task/:id", idParamValidator, safeControllerFunction(TaskWorklogController.getByTask));
|
||||
taskWorkLogApiRouter.get("/export/:id", idParamValidator, safeControllerFunction(TaskWorklogController.exportLog));
|
||||
taskWorkLogApiRouter.put("/:id", taskTimeLogValidator, idParamValidator, safeControllerFunction(TaskWorklogController.update));
|
||||
taskWorkLogApiRouter.delete("/:id", idParamValidator, safeControllerFunction(TaskWorklogController.deleteById));
|
||||
|
||||
export default taskWorkLogApiRouter;
|
||||
66
worklenz-backend/src/routes/apis/tasks-api-router.ts
Normal file
66
worklenz-backend/src/routes/apis/tasks-api-router.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import express, {Request, Response} from "express";
|
||||
|
||||
import TasksController from "../../controllers/tasks-controller";
|
||||
|
||||
import ganttTasksQueryParamsValidator from "../../middlewares/validators/gantt-tasks-query-params-validator";
|
||||
import ganttTasksRangeParamsValidator from "../../middlewares/validators/gantt-tasks-range-params-validator";
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import kanbanStatusUpdateValidator from "../../middlewares/validators/kanban-status-update-validator";
|
||||
import tasksBodyValidator from "../../middlewares/validators/tasks-body-validator";
|
||||
import quickTaskBodyValidator from "../../middlewares/validators/quick-task-validator";
|
||||
import bulkTasksStatusValidator from "../../middlewares/validators/bulk-tasks-status-validator";
|
||||
import bulkTasksPriorityValidator from "../../middlewares/validators/bulk-tasks-priority-validators";
|
||||
import bulkTasksPhaseValidator from "../../middlewares/validators/bulk-tasks-phase-validators";
|
||||
import bulkTasksValidator from "../../middlewares/validators/bulk-tasks-validator";
|
||||
import mapTasksToBulkUpdate from "../../middlewares/map-tasks-to-bulk-update";
|
||||
import homeTaskBodyValidator from "../../middlewares/validators/home-task-body-validator";
|
||||
import TaskListColumnsController from "../../controllers/task-list-columns-controller";
|
||||
import TasksControllerV2 from "../../controllers/tasks-controller-v2";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
|
||||
|
||||
const tasksApiRouter = express.Router();
|
||||
|
||||
// split the controller between the counts query and the original data query
|
||||
function getList(req: Request, res: Response) {
|
||||
if (TasksControllerV2.isTasksOnlyReq(req.query))
|
||||
return TasksControllerV2.getTasksOnly(req, res);
|
||||
return TasksControllerV2.getList(req, res);
|
||||
}
|
||||
|
||||
tasksApiRouter.post("/", tasksBodyValidator, safeControllerFunction(TasksController.create));
|
||||
tasksApiRouter.get("/project/:id", idParamValidator, safeControllerFunction(TasksController.getTasksByProject));
|
||||
tasksApiRouter.get("/roadmap", ganttTasksQueryParamsValidator, safeControllerFunction(TasksController.getGanttTasksByProject));
|
||||
tasksApiRouter.get("/range", ganttTasksRangeParamsValidator, safeControllerFunction(TasksController.getTasksBetweenRange));
|
||||
tasksApiRouter.get("/project/selected-tasks/:id", idParamValidator, safeControllerFunction(TasksController.getSelectedTasksByProject));
|
||||
tasksApiRouter.get("/project/unselected-tasks/:id", idParamValidator, safeControllerFunction(TasksController.getUnselectedTasksByProject));
|
||||
tasksApiRouter.get("/team", safeControllerFunction(TasksController.getProjectTasksByTeam));
|
||||
tasksApiRouter.get("/info", safeControllerFunction(TasksController.getById));
|
||||
tasksApiRouter.post("/convert", safeControllerFunction(TasksControllerV2.convertToTask));
|
||||
tasksApiRouter.get("/kanban/:id", safeControllerFunction(TasksController.getProjectTasksByStatus));
|
||||
tasksApiRouter.get("/list/columns/:id", idParamValidator, safeControllerFunction(TaskListColumnsController.getProjectTaskListColumns));
|
||||
tasksApiRouter.put("/list/columns/:id", idParamValidator, safeControllerFunction(TaskListColumnsController.toggleColumn));
|
||||
|
||||
tasksApiRouter.get("/list/v2/:id", idParamValidator, safeControllerFunction(getList));
|
||||
tasksApiRouter.get("/assignees/:id", idParamValidator, safeControllerFunction(TasksController.getProjectTaskAssignees));
|
||||
|
||||
tasksApiRouter.put("/bulk/status", mapTasksToBulkUpdate, bulkTasksStatusValidator, safeControllerFunction(TasksController.bulkChangeStatus));
|
||||
tasksApiRouter.put("/bulk/priority", mapTasksToBulkUpdate, bulkTasksPriorityValidator, safeControllerFunction(TasksController.bulkChangePriority));
|
||||
tasksApiRouter.put("/bulk/phase", mapTasksToBulkUpdate, bulkTasksPhaseValidator, safeControllerFunction(TasksController.bulkChangePhase));
|
||||
|
||||
tasksApiRouter.put("/bulk/delete", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(TasksController.bulkDelete));
|
||||
tasksApiRouter.put("/bulk/archive", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(TasksController.bulkArchive));
|
||||
tasksApiRouter.put("/bulk/assign-me", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(TasksController.bulkAssignMe));
|
||||
tasksApiRouter.put("/bulk/label", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(TasksController.bulkAssignLabel));
|
||||
tasksApiRouter.put("/bulk/members", mapTasksToBulkUpdate, bulkTasksValidator, safeControllerFunction(TasksController.bulkAssignMembers));
|
||||
tasksApiRouter.put("/duration/:id", safeControllerFunction(TasksController.updateDuration));
|
||||
tasksApiRouter.put("/status/:status_id/:task_id", kanbanStatusUpdateValidator, safeControllerFunction(TasksController.updateStatus));
|
||||
tasksApiRouter.put("/:id", idParamValidator, tasksBodyValidator, safeControllerFunction(TasksController.update));
|
||||
tasksApiRouter.delete("/:id", safeControllerFunction(TasksController.deleteById));
|
||||
tasksApiRouter.post("/quick-task", quickTaskBodyValidator, safeControllerFunction(TasksController.createQuickTask));
|
||||
tasksApiRouter.post("/home-task", homeTaskBodyValidator, safeControllerFunction(TasksController.createHomeTask));
|
||||
tasksApiRouter.post("/convert-to-subtask", safeControllerFunction(TasksControllerV2.convertToSubtask));
|
||||
tasksApiRouter.get("/subscribers/:id", safeControllerFunction(TasksControllerV2.getSubscribers));
|
||||
|
||||
export default tasksApiRouter;
|
||||
35
worklenz-backend/src/routes/apis/team-members-api-router.ts
Normal file
35
worklenz-backend/src/routes/apis/team-members-api-router.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import express from "express";
|
||||
|
||||
import TeamMembersController from "../../controllers/team-members-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import teamMembersBodyValidator from "../../middlewares/validators/team-members-body-validator";
|
||||
import teamOwnerOrAdminValidator from "../../middlewares/validators/team-owner-or-admin-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const teamMembersApiRouter = express.Router();
|
||||
|
||||
// export APIs
|
||||
teamMembersApiRouter.get("/export-all", safeControllerFunction(TeamMembersController.exportAllMembers));
|
||||
teamMembersApiRouter.get("/export/:id", idParamValidator, safeControllerFunction(TeamMembersController.exportByMember));
|
||||
|
||||
teamMembersApiRouter.post("/", teamOwnerOrAdminValidator, teamMembersBodyValidator, safeControllerFunction(TeamMembersController.create));
|
||||
teamMembersApiRouter.get("/", safeControllerFunction(TeamMembersController.get));
|
||||
teamMembersApiRouter.get("/list", safeControllerFunction(TeamMembersController.getTeamMemberList));
|
||||
teamMembersApiRouter.get("/tree-map", safeControllerFunction(TeamMembersController.getTeamMembersTreeMap));
|
||||
teamMembersApiRouter.get("/tree-map-by-member", safeControllerFunction(TeamMembersController.getTreeDataByMember));
|
||||
teamMembersApiRouter.get("/tasks-by-members", safeControllerFunction(TeamMembersController.getTasksByMembers));
|
||||
teamMembersApiRouter.get("/all", safeControllerFunction(TeamMembersController.getAllMembers)); // Task list assignees list
|
||||
teamMembersApiRouter.get("/project/:id", safeControllerFunction(TeamMembersController.getTeamMembersByProject));
|
||||
teamMembersApiRouter.get("/projects/:id", safeControllerFunction(TeamMembersController.getProjectsByTeamMember));
|
||||
teamMembersApiRouter.get("/overview/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.getOverview));
|
||||
teamMembersApiRouter.get("/overview-chart/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.getOverviewChart));
|
||||
teamMembersApiRouter.get("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.getById));
|
||||
teamMembersApiRouter.put("/resend-invitation", teamOwnerOrAdminValidator, safeControllerFunction(TeamMembersController.resend_invitation));
|
||||
teamMembersApiRouter.put("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.update));
|
||||
teamMembersApiRouter.delete("/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.deleteById));
|
||||
teamMembersApiRouter.get("/deactivate/:id", teamOwnerOrAdminValidator, idParamValidator, safeControllerFunction(TeamMembersController.toggleMemberActiveStatus));
|
||||
|
||||
teamMembersApiRouter.put("/add-member/:id", teamOwnerOrAdminValidator, teamMembersBodyValidator, safeControllerFunction(TeamMembersController.addTeamMember));
|
||||
|
||||
export default teamMembersApiRouter;
|
||||
17
worklenz-backend/src/routes/apis/teams-api-router.ts
Normal file
17
worklenz-backend/src/routes/apis/teams-api-router.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import express from "express";
|
||||
|
||||
import TeamsController from "../../controllers/teams-controller";
|
||||
|
||||
import teamsActivateBodyValidator from "../../middlewares/validators/teams-activate-body-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const teamsApiRouter = express.Router();
|
||||
|
||||
teamsApiRouter.get("/", safeControllerFunction(TeamsController.get));
|
||||
teamsApiRouter.get("/invites", safeControllerFunction(TeamsController.getTeamInvites));
|
||||
teamsApiRouter.put("/activate", teamsActivateBodyValidator, safeControllerFunction(TeamsController.activate));
|
||||
teamsApiRouter.put("/pik-name", safeControllerFunction(TeamsController.updateNameOnce));
|
||||
teamsApiRouter.put("/", safeControllerFunction(TeamsController.update));
|
||||
teamsApiRouter.post("/", safeControllerFunction(TeamsController.create));
|
||||
|
||||
export default teamsApiRouter;
|
||||
11
worklenz-backend/src/routes/apis/timezones-api-router.ts
Normal file
11
worklenz-backend/src/routes/apis/timezones-api-router.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import express from "express";
|
||||
|
||||
import TimezonesController from "../../controllers/timezones-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const timezonesApiRouter = express.Router();
|
||||
|
||||
timezonesApiRouter.get("/", safeControllerFunction(TimezonesController.get));
|
||||
timezonesApiRouter.put("/", safeControllerFunction(TimezonesController.update));
|
||||
|
||||
export default timezonesApiRouter;
|
||||
18
worklenz-backend/src/routes/apis/todo-list-api-router.ts
Normal file
18
worklenz-backend/src/routes/apis/todo-list-api-router.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import express from "express";
|
||||
|
||||
import TodoListController from "../../controllers/todo-list-controller";
|
||||
|
||||
import idParamValidator from "../../middlewares/validators/id-param-validator";
|
||||
import todoListBodyValidator from "../../middlewares/validators/todo-list-body-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const todoListApiRouter = express.Router();
|
||||
|
||||
todoListApiRouter.post("/", todoListBodyValidator, safeControllerFunction(TodoListController.create));
|
||||
todoListApiRouter.get("/", safeControllerFunction(TodoListController.get));
|
||||
todoListApiRouter.put("/index", safeControllerFunction(TodoListController.updateIndex));
|
||||
todoListApiRouter.put("/status/:id", idParamValidator, safeControllerFunction(TodoListController.updateStatus));
|
||||
todoListApiRouter.put("/:id", idParamValidator, todoListBodyValidator, safeControllerFunction(TodoListController.update));
|
||||
todoListApiRouter.delete("/:id", idParamValidator, safeControllerFunction(TodoListController.deleteById));
|
||||
|
||||
export default todoListApiRouter;
|
||||
59
worklenz-backend/src/routes/auth/index.ts
Normal file
59
worklenz-backend/src/routes/auth/index.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import express from "express";
|
||||
import passport from "passport";
|
||||
|
||||
import AuthController from "../../controllers/auth-controller";
|
||||
|
||||
import signUpValidator from "../../middlewares/validators/sign-up-validator";
|
||||
import resetEmailValidator from "../../middlewares/validators/reset-email-validator";
|
||||
import updatePasswordValidator from "../../middlewares/validators/update-password-validator";
|
||||
import passwordValidator from "../../middlewares/validators/password-validator";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const authRouter = express.Router();
|
||||
|
||||
// Local authentication
|
||||
const options = (key: string): passport.AuthenticateOptions => ({
|
||||
failureRedirect: `/secure/verify?strategy=${key}`,
|
||||
successRedirect: `/secure/verify?strategy=${key}`
|
||||
});
|
||||
|
||||
authRouter.post("/login", passport.authenticate("local-login", options("login")));
|
||||
authRouter.post("/signup", signUpValidator, passwordValidator, passport.authenticate("local-signup", options("signup")));
|
||||
authRouter.post("/signup/check", signUpValidator, passwordValidator, safeControllerFunction(AuthController.status_check));
|
||||
authRouter.get("/verify", AuthController.verify);
|
||||
authRouter.get("/check-password", safeControllerFunction(AuthController.checkPasswordStrength));
|
||||
|
||||
authRouter.post("/reset-password", resetEmailValidator, safeControllerFunction(AuthController.reset_password));
|
||||
authRouter.post("/update-password", updatePasswordValidator, passwordValidator, safeControllerFunction(AuthController.verify_reset_email));
|
||||
|
||||
// Google authentication
|
||||
authRouter.get("/google", (req, res) => {
|
||||
return passport.authenticate("google", {
|
||||
scope: ["email", "profile"],
|
||||
state: JSON.stringify({
|
||||
teamMember: req.query.teamMember || null,
|
||||
team: req.query.team || null,
|
||||
teamName: req.query.teamName || null,
|
||||
project: req.query.project || null
|
||||
})
|
||||
})(req, res);
|
||||
});
|
||||
|
||||
authRouter.get("/google/verify", (req, res) => {
|
||||
let error = "";
|
||||
if ((req.session as any).error) {
|
||||
error = `?error=${encodeURIComponent((req.session as any).error as string)}`;
|
||||
delete (req.session as any).error;
|
||||
}
|
||||
|
||||
const failureRedirect = process.env.LOGIN_FAILURE_REDIRECT + error;
|
||||
return passport.authenticate("google", {
|
||||
failureRedirect,
|
||||
successRedirect: process.env.LOGIN_SUCCESS_REDIRECT
|
||||
})(req, res);
|
||||
});
|
||||
|
||||
// Passport logout
|
||||
authRouter.get("/logout", AuthController.logout);
|
||||
|
||||
export default authRouter;
|
||||
154
worklenz-backend/src/routes/email-templates.ts
Normal file
154
worklenz-backend/src/routes/email-templates.ts
Normal file
@@ -0,0 +1,154 @@
|
||||
import express from "express";
|
||||
|
||||
import {IWorkLenzRequest} from "../interfaces/worklenz-request";
|
||||
import {IWorkLenzResponse} from "../interfaces/worklenz-response";
|
||||
import {ITaskMovedToDoneRecord} from "../interfaces/task-moved-to-done";
|
||||
import {IProjectDigest} from "../interfaces/project-digest";
|
||||
import {ICommentEmailNotification} from "../interfaces/comment-email-notification";
|
||||
|
||||
const router = express.Router({strict: false});
|
||||
|
||||
const TEMPLATES_BASE = "../../worklenz-email-templates";
|
||||
|
||||
router.get("/task-assignee-change", (req: IWorkLenzRequest, res: IWorkLenzResponse) => {
|
||||
const sampleData = {
|
||||
"name": "John Doe",
|
||||
"email": "johndoe.office@worklenz.com",
|
||||
"team_member_id": "e3f95f03-5ea7-4cf7-9f61-123c55d8f6d9",
|
||||
"teams": [
|
||||
{
|
||||
"id": "16c4ac3b-27c7-45e5-b32e-b78cc5d354b9",
|
||||
"name": "Automation",
|
||||
"team_member_id": "e3f95f03-5ea7-4cf7-9f61-123c55d8f6d9",
|
||||
"projects": [
|
||||
{
|
||||
"id": "6de9c9df-2193-4212-8d64-9dfc36a83ed2",
|
||||
"name": "Allen LLC",
|
||||
"tasks": [
|
||||
{
|
||||
"name": "Soloman's Island Project - SIM Registration + Central DB + KYC",
|
||||
"updater_name": "John Doe",
|
||||
"members": "John Doe, Jane Smith"
|
||||
},
|
||||
{
|
||||
"name": "Theory everyone send half sure.",
|
||||
"updater_name": "John Doe",
|
||||
"members": "John Doe, Jane Smith"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "33ad4f38-27a9-450d-8524-74e9469bca2b",
|
||||
"name": "AA",
|
||||
"team_member_id": "17a4a959-d83a-41e8-bcc6-6c9dca1eb021",
|
||||
"projects": []
|
||||
}
|
||||
]
|
||||
};
|
||||
res.render(`${TEMPLATES_BASE}/email-notifications/task-assignee-change`, sampleData);
|
||||
});
|
||||
|
||||
router.get("/daily-digest", (req: IWorkLenzRequest, res: IWorkLenzResponse) => {
|
||||
|
||||
const teams = [
|
||||
{
|
||||
id: "16c4ac3b-27c7-45e5-b32e-b78cc5d354b9",
|
||||
name: "Automation",
|
||||
team_member_id: "e3f95f03-5ea7-4cf7-9f61-123c55d8f6d9",
|
||||
projects: [
|
||||
{
|
||||
id: "6de9c9df-2193-4212-8d64-9dfc36a83ed2",
|
||||
name: "Allen LLC",
|
||||
tasks: [
|
||||
{
|
||||
name: "Soloman's Island Project - SIM Registration + Central DB + KYC",
|
||||
members: "John Doe, Soloman"
|
||||
},
|
||||
{
|
||||
name: "Theory everyone send half sure.",
|
||||
members: "John Doe"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
id: "33ad4f38-27a9-450d-8524-74e9469bca2b",
|
||||
name: "AA",
|
||||
team_member_id: "17a4a959-d83a-41e8-bcc6-6c9dca1eb021",
|
||||
projects: []
|
||||
}
|
||||
];
|
||||
|
||||
const sampleData = {
|
||||
greeting: "Hi John Doe",
|
||||
note: "Here's your Monday update!",
|
||||
email: "johndoe.office@gmail.com",
|
||||
recently_assigned: teams,
|
||||
overdue: teams,
|
||||
recently_completed: teams
|
||||
};
|
||||
res.render(`${TEMPLATES_BASE}/email-notifications/daily-digest`, sampleData);
|
||||
});
|
||||
|
||||
router.get("/task-moved-to-done", (req: IWorkLenzRequest, res: IWorkLenzResponse) => {
|
||||
|
||||
const task = {
|
||||
name: "Soloman's Island Project - SIM Registration + Central DB + KYC",
|
||||
members: "John Doe, Soloman",
|
||||
url: "http://localhost:4200/worklenz/projects/6de9c9df-2193-4212-8d64-9dfc36a83ed2?tab=tasks-list&task=f8b3fc45-a28b-4d8f-985e-9e43f8577aa8",
|
||||
team_name: "Automation",
|
||||
project_name: "Allen LLC"
|
||||
};
|
||||
|
||||
const sampleData: ITaskMovedToDoneRecord = {
|
||||
greeting: "Hi John Doe",
|
||||
summary: "Great news! a task just got completed!",
|
||||
settings_url: "/settings",
|
||||
task
|
||||
};
|
||||
res.render(`${TEMPLATES_BASE}/email-notifications/task-moved-to-done`, sampleData);
|
||||
});
|
||||
|
||||
router.get("/project-daily-digest", (req: IWorkLenzRequest, res: IWorkLenzResponse) => {
|
||||
const sampleData: IProjectDigest = {
|
||||
id: "",
|
||||
name: "Worklenz",
|
||||
team_name: "Ceydigital",
|
||||
greeting: `Hi John Doe`,
|
||||
due_tomorrow: [],
|
||||
settings_url: "/",
|
||||
project_url: "/",
|
||||
subscribers: [],
|
||||
summary: `Here's the "Worklenz" summary | Ceydigital`,
|
||||
today_completed: [
|
||||
{
|
||||
id: "abc123",
|
||||
name: "Sample Task",
|
||||
url: "/",
|
||||
members: "John Doe, Jane Smith",
|
||||
}
|
||||
],
|
||||
today_new: [],
|
||||
};
|
||||
res.render(`${TEMPLATES_BASE}/email-notifications/project-daily-digest`, sampleData);
|
||||
});
|
||||
|
||||
router.get("/task-comment", (req: IWorkLenzRequest, res: IWorkLenzResponse) => {
|
||||
const data: ICommentEmailNotification = {
|
||||
greeting: "Hi John Doe",
|
||||
summary: `"John Doe Office" added a new comment on "Email Notifications"`,
|
||||
team: "Ceydigital",
|
||||
project_name: "Worklenz",
|
||||
comment: "Any updates on this?",
|
||||
task: "Email Notifications",
|
||||
settings_url: "/",
|
||||
task_url: "/",
|
||||
};
|
||||
|
||||
res.render(`${TEMPLATES_BASE}/email-notifications/task-comment`, data);
|
||||
});
|
||||
|
||||
export default router;
|
||||
20
worklenz-backend/src/routes/index.ts
Normal file
20
worklenz-backend/src/routes/index.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
import express from "express";
|
||||
import IndexController from "../controllers/index-controller";
|
||||
import safeControllerFunction from "../shared/safe-controller-function";
|
||||
|
||||
const router = express.Router({strict: false});
|
||||
|
||||
router.use(IndexController.use);
|
||||
|
||||
router.get("/", IndexController.worklenz);
|
||||
router.get("/pricing", IndexController.pricing);
|
||||
router.get("/privacy-policy", IndexController.privacyPolicy);
|
||||
router.get("/terms-of-use", IndexController.termsOfUse);
|
||||
router.get(["/session-expired", "/authenticate"], IndexController.redirectToLogin);
|
||||
router.get("/auth/signup", safeControllerFunction(IndexController.signup));
|
||||
router.get("/auth/login", safeControllerFunction(IndexController.login));
|
||||
router.get(["/teams"], IndexController.admin);
|
||||
router.get(["/auth", "/auth/**"], IndexController.auth);
|
||||
router.get(["/worklenz", "/worklenz/**"], IndexController.worklenz);
|
||||
|
||||
export default router;
|
||||
9
worklenz-backend/src/routes/public/index.ts
Normal file
9
worklenz-backend/src/routes/public/index.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import express from "express";
|
||||
import ClientsController from "../../controllers/clients-controller";
|
||||
import safeControllerFunction from "../../shared/safe-controller-function";
|
||||
|
||||
const public_router = express.Router();
|
||||
|
||||
public_router.post("/new-subscriber", safeControllerFunction(ClientsController.addSubscriber));
|
||||
|
||||
export default public_router;
|
||||
Reference in New Issue
Block a user