Edit Taskgroup
This commit is contained in:
parent
712f793736
commit
99ae430d2b
@ -4,6 +4,7 @@ import core.api.models.auth.SimpleStatusResponse;
|
|||||||
import core.api.models.timemanager.taskgroup.TaskgroupEntityInfo;
|
import core.api.models.timemanager.taskgroup.TaskgroupEntityInfo;
|
||||||
import core.api.models.timemanager.taskgroup.TaskgroupFieldInfo;
|
import core.api.models.timemanager.taskgroup.TaskgroupFieldInfo;
|
||||||
import core.entities.timemanager.Taskgroup;
|
import core.entities.timemanager.Taskgroup;
|
||||||
|
import core.services.PermissionResult;
|
||||||
import core.services.ServiceExitCode;
|
import core.services.ServiceExitCode;
|
||||||
import core.services.ServiceResult;
|
import core.services.ServiceResult;
|
||||||
import core.services.TaskgroupService;
|
import core.services.TaskgroupService;
|
||||||
@ -35,4 +36,23 @@ public class TaskgroupController {
|
|||||||
return ResponseEntity.status(409).body(new SimpleStatusResponse("failed"));
|
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;
|
package core.repositories.timemanager;
|
||||||
|
|
||||||
|
import core.entities.User;
|
||||||
import core.entities.timemanager.Taskgroup;
|
import core.entities.timemanager.Taskgroup;
|
||||||
import org.springframework.data.repository.CrudRepository;
|
import org.springframework.data.repository.CrudRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
@ -7,5 +8,5 @@ import org.springframework.stereotype.Repository;
|
|||||||
@Repository
|
@Repository
|
||||||
public interface TaskgroupRepository extends CrudRepository<Taskgroup, Long> {
|
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 core.repositories.timemanager.TaskgroupRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.scheduling.config.Task;
|
import org.springframework.scheduling.config.Task;
|
||||||
|
import org.springframework.security.core.parameters.P;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
@ -25,13 +26,19 @@ public class TaskgroupService {
|
|||||||
this.userRepository = userRepository;
|
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) {
|
public ServiceResult<Taskgroup> addTaskgroup(TaskgroupFieldInfo taskData, String username) {
|
||||||
Optional<User> user = userRepository.findByUsername(username);
|
Optional<User> user = userRepository.findByUsername(username);
|
||||||
if(user.isEmpty()) {
|
if(user.isEmpty()) {
|
||||||
throw new NoSuchElementException();
|
throw new NoSuchElementException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!taskgroupRepository.existsByTaskgroupName(taskData.getName())) {
|
if(!taskgroupRepository.existsByTaskgroupNameAndUser(taskData.getName(), user.get())) {
|
||||||
|
|
||||||
Taskgroup taskgroup = new Taskgroup(taskData.getName(), user.get());
|
Taskgroup taskgroup = new Taskgroup(taskData.getName(), user.get());
|
||||||
taskgroupRepository.save(taskgroup);
|
taskgroupRepository.save(taskgroup);
|
||||||
@ -40,4 +47,19 @@ public class TaskgroupService {
|
|||||||
return new ServiceResult<>(ServiceExitCode.ENTITY_ALREADY_EXIST);
|
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