issue-6 #8
@ -4,6 +4,7 @@ import core.api.models.auth.SimpleStatusResponse;
|
||||
import core.api.models.timemanager.taskgroup.TaskgroupEntityInfo;
|
||||
import core.api.models.timemanager.taskgroup.TaskgroupFieldInfo;
|
||||
import core.entities.timemanager.Taskgroup;
|
||||
import core.services.PermissionResult;
|
||||
import core.services.ServiceExitCode;
|
||||
import core.services.ServiceResult;
|
||||
import core.services.TaskgroupService;
|
||||
@ -35,4 +36,23 @@ public class TaskgroupController {
|
||||
return ResponseEntity.status(409).body(new SimpleStatusResponse("failed"));
|
||||
}
|
||||
}
|
||||
|
||||
@PostMapping("/taskgroups/{taskgroupID}")
|
||||
public ResponseEntity<?> editTaskgroup(@PathVariable long taskgroupID, @Valid @RequestBody TaskgroupFieldInfo taskgroupFieldInfo) {
|
||||
PermissionResult<Taskgroup> taskgroupPermissionResult = taskgroupService.getTaskgroupByIDAndUsername(taskgroupID, SecurityContextHolder.getContext().getAuthentication().getName());
|
||||
if(!taskgroupPermissionResult.isHasPermissions()) {
|
||||
return ResponseEntity.status(403).body(new SimpleStatusResponse("failed"));
|
||||
}
|
||||
|
||||
if(taskgroupPermissionResult.getExitCode() == ServiceExitCode.MISSING_ENTITY) {
|
||||
return ResponseEntity.status(404).body(new SimpleStatusResponse("failed"));
|
||||
}
|
||||
|
||||
ServiceExitCode serviceExitCode = taskgroupService.editTaskgroup(taskgroupPermissionResult.getResult(), taskgroupFieldInfo);
|
||||
if(serviceExitCode == ServiceExitCode.OK) {
|
||||
return ResponseEntity.ok(new SimpleStatusResponse("success"));
|
||||
} else {
|
||||
return ResponseEntity.status(409).body(new SimpleStatusResponse("failed"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package core.repositories.timemanager;
|
||||
|
||||
import core.entities.User;
|
||||
import core.entities.timemanager.Taskgroup;
|
||||
import org.springframework.data.repository.CrudRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
@ -7,5 +8,5 @@ import org.springframework.stereotype.Repository;
|
||||
@Repository
|
||||
public interface TaskgroupRepository extends CrudRepository<Taskgroup, Long> {
|
||||
|
||||
boolean existsByTaskgroupName(String name);
|
||||
boolean existsByTaskgroupNameAndUser(String name, User user);
|
||||
}
|
||||
|
40
backend/src/main/java/core/services/PermissionResult.java
Normal file
40
backend/src/main/java/core/services/PermissionResult.java
Normal file
@ -0,0 +1,40 @@
|
||||
package core.services;
|
||||
|
||||
public class PermissionResult <T> extends ServiceResult<T> {
|
||||
|
||||
private boolean hasPermissions;
|
||||
public PermissionResult(ServiceExitCode exitCode, T result) {
|
||||
super(exitCode, result);
|
||||
}
|
||||
|
||||
public PermissionResult(T result) {
|
||||
super(result);
|
||||
}
|
||||
|
||||
public PermissionResult(ServiceExitCode exitCode) {
|
||||
super(exitCode);
|
||||
}
|
||||
|
||||
public PermissionResult(ServiceExitCode exitCode, T result, boolean hasPermissions) {
|
||||
super(exitCode, result);
|
||||
this.hasPermissions = hasPermissions;
|
||||
}
|
||||
|
||||
public PermissionResult(T result, boolean hasPermissions) {
|
||||
super(result);
|
||||
this.hasPermissions = hasPermissions;
|
||||
}
|
||||
|
||||
public PermissionResult(ServiceExitCode exitCode, boolean hasPermissions) {
|
||||
super(exitCode);
|
||||
this.hasPermissions = hasPermissions;
|
||||
}
|
||||
|
||||
public boolean isHasPermissions() {
|
||||
return hasPermissions;
|
||||
}
|
||||
|
||||
public void setHasPermissions(boolean hasPermissions) {
|
||||
this.hasPermissions = hasPermissions;
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import core.repositories.UserRepository;
|
||||
import core.repositories.timemanager.TaskgroupRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.config.Task;
|
||||
import org.springframework.security.core.parameters.P;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.NoSuchElementException;
|
||||
@ -25,13 +26,19 @@ public class TaskgroupService {
|
||||
this.userRepository = userRepository;
|
||||
}
|
||||
|
||||
public PermissionResult<Taskgroup> getTaskgroupByIDAndUsername(long taskgroupID, String username) {
|
||||
Optional<Taskgroup> taskgroup = taskgroupRepository.findById(taskgroupID);
|
||||
return taskgroup.map(value -> new PermissionResult<>(value, value.getUser().getUsername().equals(username))).orElseGet(() ->
|
||||
new PermissionResult<>(ServiceExitCode.MISSING_ENTITY));
|
||||
}
|
||||
|
||||
public ServiceResult<Taskgroup> addTaskgroup(TaskgroupFieldInfo taskData, String username) {
|
||||
Optional<User> user = userRepository.findByUsername(username);
|
||||
if(user.isEmpty()) {
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
|
||||
if(!taskgroupRepository.existsByTaskgroupName(taskData.getName())) {
|
||||
if(!taskgroupRepository.existsByTaskgroupNameAndUser(taskData.getName(), user.get())) {
|
||||
|
||||
Taskgroup taskgroup = new Taskgroup(taskData.getName(), user.get());
|
||||
taskgroupRepository.save(taskgroup);
|
||||
@ -40,4 +47,19 @@ public class TaskgroupService {
|
||||
return new ServiceResult<>(ServiceExitCode.ENTITY_ALREADY_EXIST);
|
||||
}
|
||||
}
|
||||
|
||||
public ServiceExitCode editTaskgroup(Taskgroup taskgroup, TaskgroupFieldInfo taskgroupFieldInfo) {
|
||||
if(!taskgroup.getTaskgroupName().equals(taskgroupFieldInfo.getName())) {
|
||||
//Check if another taskgroup with the new name is already existent for the user of the taskgroup
|
||||
if(!taskgroupRepository.existsByTaskgroupNameAndUser(taskgroupFieldInfo.getName(), taskgroup.getUser())) {
|
||||
taskgroup.setTaskgroupName(taskgroupFieldInfo.getName());
|
||||
taskgroupRepository.save(taskgroup);
|
||||
return ServiceExitCode.OK;
|
||||
} else {
|
||||
return ServiceExitCode.ENTITY_ALREADY_EXIST;
|
||||
}
|
||||
} else {
|
||||
return ServiceExitCode.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user