All checks were successful
CI fuzzy controller / container-test-job (push) Successful in 1m40s
70 lines
2.3 KiB
Java
70 lines
2.3 KiB
Java
package ru.ulstu.fc.project.service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
import ru.ulstu.fc.project.model.Project;
|
|
import ru.ulstu.fc.project.model.ProjectDto;
|
|
import ru.ulstu.fc.project.repository.ProjectRepository;
|
|
import ru.ulstu.fc.user.model.User;
|
|
import ru.ulstu.fc.user.service.UserService;
|
|
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Service
|
|
public class ProjectService {
|
|
private final ProjectRepository projectRepository;
|
|
private final UserService userService;
|
|
|
|
public ProjectService(ProjectRepository projectRepository,
|
|
UserService userService) {
|
|
this.projectRepository = projectRepository;
|
|
this.userService = userService;
|
|
}
|
|
|
|
public List<Project> getCurrentUserProjects() {
|
|
return projectRepository.findAllByUserId(userService.getCurrentUser().getId());
|
|
}
|
|
|
|
public List<ProjectDto> getCurrentUserProjectsDto() {
|
|
return getCurrentUserProjects().stream().map(ProjectDto::new).collect(Collectors.toList());
|
|
}
|
|
|
|
public Project getById(Integer id) {
|
|
Project project = projectRepository
|
|
.findById(id)
|
|
.orElseThrow(() -> new RuntimeException("Project not found by id"));
|
|
checkIsCurrentUserProjectWithThrow(project);
|
|
return project;
|
|
}
|
|
|
|
public ProjectDto save(ProjectDto projectDto) {
|
|
return new ProjectDto(save(new Project(projectDto)));
|
|
}
|
|
|
|
public Project save(Project projectToSave) {
|
|
User currentUser = userService.getCurrentUser();
|
|
if (projectToSave.getId() == null) {
|
|
projectToSave.setUser(currentUser);
|
|
return projectRepository.save(projectToSave);
|
|
}
|
|
Project dbProject = getById(projectToSave.getId());
|
|
dbProject.setName(projectToSave.getName());
|
|
return projectRepository.save(dbProject);
|
|
}
|
|
|
|
public void delete(ProjectDto projectDto) {
|
|
getById(projectDto.getId());
|
|
projectRepository.deleteById(projectDto.getId());
|
|
}
|
|
|
|
public void checkIsCurrentUserProjectWithThrow(Project project) {
|
|
if (!isUserProject(project, userService.getCurrentUser())) {
|
|
throw new RuntimeException("User can not get access to project");
|
|
}
|
|
}
|
|
|
|
private boolean isUserProject(Project project, User currentUser) {
|
|
return (currentUser.equals(project.getUser()));
|
|
}
|
|
}
|