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
488 changes: 216 additions & 272 deletions API_DOCUMENTATION.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.example.task_manager.controller;

import java.util.NoSuchElementException;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import com.example.task_manager.DTO.AdminDTO;
import com.example.task_manager.DTO.AdminRequestDTO;
import com.example.task_manager.DTO.UpdateEmailRequestDTO;
import com.example.task_manager.DTO.UpdateNameRequestDTO;
import com.example.task_manager.service.AdminService;

@RestController
@RequestMapping("/api/admins")
public class AdminAccountController {
private final AdminService adminService;

public AdminAccountController(AdminService adminService) {
this.adminService = adminService;
}

// Create Admin entity
@PostMapping
public ResponseEntity<?> createAdmin(@RequestBody AdminRequestDTO request) {
try {
AdminDTO createAdmin = adminService.createAdmin(
request.getName(),
request.getEmail(),
request.getPassword()
);
return ResponseEntity.ok(createAdmin);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Delete Admin
@DeleteMapping("/{adminId}")
public ResponseEntity<?> deleteAdmin(@PathVariable int adminId) {
try {
adminService.deleteAdmin(adminId);
return ResponseEntity.noContent().build();
} catch (Exception e) {
return ResponseEntity.status(404).body("Admin not found");
}
}

// Modify Admin Name
@PutMapping("/{adminId}/name")
public ResponseEntity<?> updateAdminName(@PathVariable int adminId, @RequestBody UpdateNameRequestDTO request) {
try {
AdminDTO updatedAdmin = adminService.modifyAdminName(adminId, request.getNewName());
return ResponseEntity.ok(updatedAdmin);
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Modify Admin Email
@PutMapping("/{adminId}/email")
public ResponseEntity<?> updateAdminEmail(@PathVariable int adminId, @RequestBody UpdateEmailRequestDTO request) {
try {
AdminDTO updatedAdmin = adminService.modifyAdminEmail(adminId, request.getNewEmail());
return ResponseEntity.ok(updatedAdmin);
} catch (NoSuchElementException e) {
return ResponseEntity.status(404).body("Admin not found");
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@GetMapping("/{adminId}")
public ResponseEntity<?> getAdminById(@PathVariable int adminId) {
try {
AdminDTO admin = adminService.getAdminById(adminId);
return ResponseEntity.ok(admin);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}
}
Original file line number Diff line number Diff line change
@@ -1,163 +1,26 @@
package com.example.task_manager.controller;

import com.example.task_manager.DTO.AdminDTO;
import com.example.task_manager.DTO.AdminRequestDTO;
import com.example.task_manager.DTO.ChangeRoleRequestDTO;
import com.example.task_manager.DTO.TeamDTO;
import com.example.task_manager.DTO.TeamMemberDTO;
import com.example.task_manager.DTO.UpdateEmailRequestDTO;
import com.example.task_manager.DTO.UpdateNameRequestDTO;
import com.example.task_manager.entity.Admin;
import com.example.task_manager.repository.AdminRepository;
import com.example.task_manager.repository.AuthInfoRepository;
import com.example.task_manager.DTO.ResetPasswordRequestDTO;
import com.example.task_manager.service.AdminService;
import com.example.task_manager.service.TeamMemberService;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;

import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;

import com.example.task_manager.DTO.TeamMemberWithTeamLeadDTO;

@RestController
@RequestMapping("/api/admin")
//This is an admin controller
@RequestMapping("/api/admins/actions")
public class AdminController {

private final AdminService adminService;
private final TeamMemberService teamMemberService;

private final AuthInfoRepository authInfoRepository;

private final AuthController authController;

private final AdminRepository adminRepository;

public AdminController(AdminService adminService, AdminRepository adminRepository, AuthController authController, AuthInfoRepository authInfoRepository) {
public AdminController(AdminService adminService, TeamMemberService teamMemberService) {
this.adminService = adminService;
this.adminRepository = adminRepository;
this.authController = authController;
this.authInfoRepository = authInfoRepository;
}

// Create Admin entity
@PostMapping
public ResponseEntity<?> createAdmin(@RequestBody AdminRequestDTO request) {
try {
AdminDTO createAdmin = adminService.createAdmin(
request.getName(),
request.getEmail(),
request.getPassword()
);
return ResponseEntity.ok(createAdmin);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Delete Admin
@DeleteMapping("/{adminId}")
public ResponseEntity<?> deleteAdmin(@PathVariable int adminId) {
try {
adminService.deleteAdmin(adminId);
return ResponseEntity.noContent().build();
} catch (RuntimeException e) {
return ResponseEntity.status(404).body("Admin not found");
} catch (Exception e) {
return ResponseEntity.status(500).body("Unexpected error: " + e.getMessage());
}
}

// @DeleteMapping("/debug-delete/{adminId}")
// public ResponseEntity<?> debugDelete(@PathVariable int adminId) {
// return ResponseEntity.ok("Received DELETE request for ID: " + adminId);
// }


// @GetMapping("/admin/debug/{id}")
// public ResponseEntity<?> debugAdmin(@PathVariable int id) {
// try {
// Optional<Admin> admin = adminRepository.findById(id);
// return admin.map(a -> ResponseEntity.ok("FOUND: " + a.getUserName()))
// .orElse(ResponseEntity.status(404).body("Not found"));
// } catch (Exception e) {
// return ResponseEntity.status(500).body("Exception: " + e.getMessage());
// }
// }

// Modify Admin Name
@PutMapping("/{adminId}/update-name")
public ResponseEntity<?> updateAdminName(@PathVariable int adminId, @RequestBody UpdateNameRequestDTO request) {
try {
AdminDTO updatedAdmin = adminService.modifyAdminName(adminId, request.getNewName());
return ResponseEntity.ok(updatedAdmin);
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Modify Admin Email
@PutMapping("/{adminId}/update-email")
public ResponseEntity<?> updateAdminEmail(@PathVariable int adminId, @RequestBody UpdateEmailRequestDTO request) {
try {
AdminDTO updatedAdmin = adminService.modifyAdminEmail(adminId, request.getNewEmail());
return ResponseEntity.ok(updatedAdmin);
} catch (NoSuchElementException e) {
return ResponseEntity.status(404).body("Admin not found");
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Create Team Member
@PostMapping("/team-member")
public ResponseEntity<?> createTeamMember(@RequestBody AdminRequestDTO request) {
try {
TeamMemberDTO createTeamMember = adminService.createTeamMember(
request.getName(),
request.getEmail(),
request.getPassword()
);
return ResponseEntity.ok(createTeamMember);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Modify Team Member Name
@PutMapping("/team-member/{teamMemberId}/update-name")
public ResponseEntity<?> modifyTeamMemberName(@PathVariable int teamMemberId, @RequestBody UpdateNameRequestDTO request) {
try {
return ResponseEntity.ok(adminService.modifyTeamMemberName(teamMemberId, request.getNewName()));
} catch (Exception e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Modify Team Member Email
@PutMapping("/team-member/{teamMemberId}/update-email")
public ResponseEntity<?> modifyTeamMemberEmail(@PathVariable int teamMemberId, @RequestBody UpdateEmailRequestDTO request) {
try {
return ResponseEntity.ok(adminService.modifyTeamMemberEmail(teamMemberId, request.getNewEmail()));
} catch (NoSuchElementException e) {
return ResponseEntity.status(404).body("Team member not found");
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

// Delete Team Member
@DeleteMapping("/team-member/{teamMemberId}")
public ResponseEntity<?> deleteTeamMember(@PathVariable int teamMemberId) {
try {
adminService.deleteTeamMember(teamMemberId);
return ResponseEntity.noContent().build();
} catch (RuntimeException e) {
return ResponseEntity.status(404).body("Team member not found");
}
this.teamMemberService = teamMemberService;
}

// Assign Team Member to Team
Expand All @@ -171,7 +34,7 @@ public ResponseEntity<?> assignToTeam(@PathVariable int teamMemberId, @PathVaria
}

//change the role (promote/demote) of a team member
@PostMapping("/team-member/{teamMemberId}/change-role")
@PostMapping("/{teamMemberId}/role")
public ResponseEntity<?> changeRole(@PathVariable int teamMemberId, @RequestBody ChangeRoleRequestDTO request) {
try {
return ResponseEntity.ok(adminService.changeRole(teamMemberId, request.getRole()));
Expand Down Expand Up @@ -204,7 +67,7 @@ public ResponseEntity<?> unlockTask(@PathVariable int taskId) {
}

//get all admins
@GetMapping("/admins")
@GetMapping
public ResponseEntity<?> getAdmins() {
try {
List<AdminDTO> admins = adminService.getAllAdmins();
Expand All @@ -214,44 +77,16 @@ public ResponseEntity<?> getAdmins() {
}
}

//get all team members
@GetMapping("/team-members")
public ResponseEntity<?> getTeamMembers() {
try {
List<TeamMemberWithTeamLeadDTO> teamMembers = adminService.getAllTeamMembers();
return ResponseEntity.ok(teamMembers);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@GetMapping("/all-teams")
public ResponseEntity<?> getAllTeams() {
try {
List<TeamDTO> teams = adminService.getAllTeams();
return ResponseEntity.ok(teams);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}

@GetMapping("/{adminId}")
public ResponseEntity<?> getAdminById(@PathVariable int adminId) {
//Reset Password
@PostMapping("/{teamMemberId}/reset-password")
public ResponseEntity<?> resetPassword(@PathVariable int teamMemberId,
@RequestBody ResetPasswordRequestDTO request) {
try {
AdminDTO admin = adminService.getAdminById(adminId);
return ResponseEntity.ok(admin);
} catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
teamMemberService.resetPassword(teamMemberId, request.getNewPassword());
return ResponseEntity.noContent().build();
}
}

@GetMapping("/team-member/{teamMemberId}")
public ResponseEntity<?> getTeamMemberById(@PathVariable int teamMemberId) {
try {
TeamMemberDTO teamMember = adminService.getTeamMemberById(teamMemberId);
return ResponseEntity.ok(teamMember);
} catch (RuntimeException e) {
catch (RuntimeException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/auth-info")
@RequestMapping("/api/auth")
public class AuthController {

private final AuthInfoService authInfoService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public IsAssignedController(IsAssignedService isAssignedService) {
this.isAssignedService = isAssignedService;
}

// Assign Team Member to a Task
// Assign a team member to a task
@PostMapping("/{teamMemberId}/task/{taskId}")
public ResponseEntity<?> assignToTask(@PathVariable int teamMemberId, @PathVariable int taskId) {
try {
Expand All @@ -25,7 +25,7 @@ public ResponseEntity<?> assignToTask(@PathVariable int teamMemberId, @PathVaria
}
}

// Unassign Team Member from Task
// Unassign a team member from a task
@DeleteMapping("/{teamMemberId}/task/{taskId}")
public ResponseEntity<?> unassignFromTask(@PathVariable int teamMemberId, @PathVariable int taskId) {
try {
Expand All @@ -40,4 +40,4 @@ public ResponseEntity<?> unassignFromTask(@PathVariable int teamMemberId, @PathV
public ResponseEntity<?> isAssignedToTask(@PathVariable int teamMemberId, @PathVariable int taskId) {
return ResponseEntity.ok(isAssignedService.isAssignedToTask(teamMemberId, taskId));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ public ResponseEntity<?> removeMemberFromTeam(@PathVariable int teamMemberId, @P
public ResponseEntity<?> isMemberOfTeam(@PathVariable int teamMemberId, @PathVariable int teamId) {
return ResponseEntity.ok(isMemberOfService.isMemberOfTeam(teamMemberId, teamId));
}
}
}
Loading
Loading