From 5cad573cc5a739dca6e9ae92e66974a2ba014e49 Mon Sep 17 00:00:00 2001 From: Viktoria Date: Mon, 29 Aug 2022 14:03:39 +0200 Subject: [PATCH 1/2] ViSnezh --- .../project/controller/ProjectController.java | 182 ++++++++++++------ .../project/domain/model/Participant.java | 2 +- .../payload/response/ResponseMessage.java | 12 ++ .../project/dto/ParticipantDto.java | 2 +- .../project/service/ProjectService.java | 30 +++ src/main/resources/application.properties | 4 +- .../resources/templates/all-projects.html | 10 + 7 files changed, 175 insertions(+), 67 deletions(-) create mode 100644 src/main/java/site/easystartup/easystartupcore/project/domain/payload/response/ResponseMessage.java create mode 100644 src/main/resources/templates/all-projects.html diff --git a/src/main/java/site/easystartup/easystartupcore/project/controller/ProjectController.java b/src/main/java/site/easystartup/easystartupcore/project/controller/ProjectController.java index 4839cf0..2e224b6 100644 --- a/src/main/java/site/easystartup/easystartupcore/project/controller/ProjectController.java +++ b/src/main/java/site/easystartup/easystartupcore/project/controller/ProjectController.java @@ -8,6 +8,7 @@ import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import site.easystartup.easystartupcore.project.domain.model.Project; +import site.easystartup.easystartupcore.project.domain.payload.response.ResponseMessage; import site.easystartup.easystartupcore.project.domain.validation.ResponseErrorValidation; import site.easystartup.easystartupcore.project.dto.ProjectDto; import site.easystartup.easystartupcore.project.service.ProjectService; @@ -23,69 +24,124 @@ public class ProjectController { private final ResponseErrorValidation responseErrorValidation; private final ModelMapper modelMapper; -// @PostMapping("/create") -// public ModelAndView createProject(@ModelAttribute("project") ProjectDto projectDto, -// BindingResult bindingResult, -// Principal principal) { -// ModelAndView modelAndView = new ModelAndView(); -// -// if (bindingResult.hasErrors()) { -// Map errors = responseErrorValidation.mapValidationService(bindingResult); -// return modelAndView.addObject("errors", errors); -// } -// -// Project project = projectService.createProject(modelMapper.map(projectDto, Project.class), principal); -// modelAndView.addObject("project", project); -// modelAndView.setViewName("project"); -// return modelAndView; -// } -// -// @PatchMapping("/{projectId}/update") -// public ModelAndView updateProject() { -// ModelAndView modelAndView = new ModelAndView(); -// -// return modelAndView; -// } -// -// @DeleteMapping("/{projectId}/delete") -// public ModelAndView deleteProject() { -// ModelAndView modelAndView = new ModelAndView(); -// -// return modelAndView; -// } -// -// @GetMapping("/{projectId}") -// public ModelAndView getProject() { -// ModelAndView modelAndView = new ModelAndView(); -// -// return modelAndView; -// } -// -// @GetMapping("/{userId}") -// public ModelAndView getAllProjectsForUser() { -// } -// -// @GetMapping("/{technology}") -// public ModelAndView getAllProjectsWithTechnology() { -// } -// -// @GetMapping("/my") -// public ModelAndView getAllProjectsForCurrentUser() { -// } -// -// @PostMapping("/{projectId}/applay") -// public ModelAndView applayOnProject() { -// ModelAndView modelAndView = new ModelAndView(); -// -// return modelAndView; -// } -// -// @PostMapping("/{projectId}/{participantId}") -// public ModelAndView confirmParticipant() { -// ModelAndView modelAndView = new ModelAndView(); -// -// return modelAndView; -// } + @PostMapping("/create") + public ModelAndView createProject(@ModelAttribute("project") ProjectDto projectDto, + BindingResult bindingResult, + Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + + if (bindingResult.hasErrors()) { + Map errors = responseErrorValidation.mapValidationService(bindingResult); + return modelAndView.addObject("errors", errors); + } + + Project project = projectService.createProject(modelMapper.map(projectDto, Project.class), principal); + modelAndView.addObject("project", project); + modelAndView.setViewName("project"); + return modelAndView; + } + + @PatchMapping("/{projectId}/update") + public ModelAndView updateProject(@ModelAttribute("projectUpdate") ProjectDto projectDto, + @PathVariable("projectId") Long projectId, + BindingResult bindingResult, + Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + + if (bindingResult.hasErrors()) { + Map errors = responseErrorValidation.mapValidationService(bindingResult); + return modelAndView.addObject("errors", errors); + } + + Project projectUpdated = projectService + .updateProject(modelMapper.map(projectDto, Project.class), projectId, principal); + modelAndView.addObject(projectUpdated); + modelAndView.setViewName("project"); + return modelAndView; + } + + @DeleteMapping("/{projectId}/delete") + public ModelAndView deleteProject(@PathVariable("projectId") Long projectId, + Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + projectService.deleteProject(projectId, principal); + modelAndView.setViewName("redirect:/my"); // some ? + return modelAndView; + } + + @GetMapping("/{projectId}") + public ModelAndView getProject(@PathVariable("projectId") Long projectId) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("project", projectService.getProjectById(projectId)); + modelAndView.setViewName("project"); + + return modelAndView; + } + + @GetMapping("/{userId}") + public ModelAndView getAllProjectsForUser(@PathVariable("userId") Long userId) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("projects", projectService.getAllProjectsForUser(userId)); + modelAndView.setViewName("all-projects"); + return modelAndView; + } + + @GetMapping("/{technology}") + public ModelAndView getAllProjectsWithTechnology(@PathVariable("technology") String technology) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("projects", projectService.getAllProjectsWithTechnology(technology)); + modelAndView.setViewName("all-projects"); + return modelAndView; + } + + @GetMapping("/my") + public ModelAndView getAllProjectsForCurrentUser(Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject(projectService.getAllProjectsForCurrentUser(principal)); + modelAndView.setViewName("all-projects"); + return modelAndView; + } + + + @GetMapping("/{nameOfPosition}") + public ModelAndView getAllProjectsWithPosition(@PathVariable("nameOfPosition") String nameOfPosition) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("projects", projectService.getAllProjectsWithPosition(nameOfPosition)); + modelAndView.setViewName("all-projects"); + + + return modelAndView; + } + + @PostMapping("/{projectId}/applay") + public ModelAndView applayOnProject(@PathVariable("projectId") Long projectId, + Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("message", projectService.applayOnProject(projectId, principal)); + modelAndView.addObject("project", modelMapper.map(projectService.getProjectById(projectId), ProjectDto.class)); + modelAndView.setViewName("project"); + + return modelAndView; + } + + @PostMapping("/{projectId}/{participantId}") + public ModelAndView confirmParticipant(@PathVariable("projectId") Long projectId, + @PathVariable("participantId") Long participantId, + Principal principal) { + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject("message", projectService.confirmParticipant(projectId, participantId, principal)); + modelAndView.addObject("project", projectService.getProjectById(projectId)); + modelAndView.setViewName("project"); + + return modelAndView; + } } diff --git a/src/main/java/site/easystartup/easystartupcore/project/domain/model/Participant.java b/src/main/java/site/easystartup/easystartupcore/project/domain/model/Participant.java index fb04e30..efd7f75 100644 --- a/src/main/java/site/easystartup/easystartupcore/project/domain/model/Participant.java +++ b/src/main/java/site/easystartup/easystartupcore/project/domain/model/Participant.java @@ -28,7 +28,7 @@ public class Participant { private String nameOfPosition; @ManyToOne @JoinColumn(name = "user_id") - private User userId; + private User user; @OneToMany private Set requests; diff --git a/src/main/java/site/easystartup/easystartupcore/project/domain/payload/response/ResponseMessage.java b/src/main/java/site/easystartup/easystartupcore/project/domain/payload/response/ResponseMessage.java new file mode 100644 index 0000000..4ba6cff --- /dev/null +++ b/src/main/java/site/easystartup/easystartupcore/project/domain/payload/response/ResponseMessage.java @@ -0,0 +1,12 @@ +package site.easystartup.easystartupcore.project.domain.payload.response; + +import lombok.Data; + +@Data +public class ResponseMessage { + private String message; + + public ResponseMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/site/easystartup/easystartupcore/project/dto/ParticipantDto.java b/src/main/java/site/easystartup/easystartupcore/project/dto/ParticipantDto.java index 153636f..ab1d020 100644 --- a/src/main/java/site/easystartup/easystartupcore/project/dto/ParticipantDto.java +++ b/src/main/java/site/easystartup/easystartupcore/project/dto/ParticipantDto.java @@ -12,6 +12,6 @@ public class ParticipantDto implements Serializable { @NotNull private final String technology; private final String nameOfPosition; - private final UserDto userId; + private final UserDto user; private final Set requests; } diff --git a/src/main/java/site/easystartup/easystartupcore/project/service/ProjectService.java b/src/main/java/site/easystartup/easystartupcore/project/service/ProjectService.java index 7d5e903..c24551f 100644 --- a/src/main/java/site/easystartup/easystartupcore/project/service/ProjectService.java +++ b/src/main/java/site/easystartup/easystartupcore/project/service/ProjectService.java @@ -6,6 +6,7 @@ import site.easystartup.easystartupcore.project.domain.model.Project; import site.easystartup.easystartupcore.project.repo.ProjectRepo; import java.security.Principal; +import java.util.Set; @Service @RequiredArgsConstructor @@ -16,4 +17,33 @@ public class ProjectService { public Project createProject(Project project, Principal principal) { return null; } + + public Project updateProject(Project map, Long projectId, Principal principal) { + } + + public void deleteProject(Long projectId, Principal principal) { + } + + public Project getProjectById(Long projectId) { + } + + public Set getAllProjectsForUser(Long userId) { + + + } + + public Set getAllProjectsWithTechnology(String technology) { + } + + public Set getAllProjectsForCurrentUser(Principal principal) { + } + + public Set getAllProjectsWithPosition(String nameOfPosition) { + } + + public Object applayOnProject(Long projectId, Principal principal) { + } + + public Object confirmParticipant(Long projectId, Long participantId, Principal principal) { + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index dd54a6b..15705f3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,6 +7,6 @@ spring.sql.init.mode=always spring.sql.init.platform=postgres spring.datasource.url=jdbc:postgresql://localhost:5432/testdb spring.datasource.username=postgres -spring.datasource.password=root -#spring.datasource.password=postgres +#spring.datasource.password=root +spring.datasource.password=postgres diff --git a/src/main/resources/templates/all-projects.html b/src/main/resources/templates/all-projects.html new file mode 100644 index 0000000..566549b --- /dev/null +++ b/src/main/resources/templates/all-projects.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From bcafc9d8a67a5d8bbb526776805b489777ab2dfb Mon Sep 17 00:00:00 2001 From: Viktoria Date: Mon, 29 Aug 2022 14:03:58 +0200 Subject: [PATCH 2/2] ViSnezh --- src/main/resources/application.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 15705f3..dd54a6b 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -7,6 +7,6 @@ spring.sql.init.mode=always spring.sql.init.platform=postgres spring.datasource.url=jdbc:postgresql://localhost:5432/testdb spring.datasource.username=postgres -#spring.datasource.password=root -spring.datasource.password=postgres +spring.datasource.password=root +#spring.datasource.password=postgres