This commit is contained in:
Viktoria committed 2022-08-29 15:23:42 +02:00
1 parent 3b5a6aab84
commit 39aad68575
4 files changed
+88 -5

No files matched your search

@@ -7,6 +7,7 @@ import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import site.easystartup.web.project.domain.model.Project; import site.easystartup.web.project.domain.model.Project;
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
import site.easystartup.web.project.domain.validation.ResponseErrorValidation; import site.easystartup.web.project.domain.validation.ResponseErrorValidation;
import site.easystartup.web.project.dto.ProjectDto; import site.easystartup.web.project.dto.ProjectDto;
import site.easystartup.web.project.service.ProjectService; import site.easystartup.web.project.service.ProjectService;
@@ -23,7 +24,7 @@ public class ProjectController {
private final ModelMapper modelMapper; private final ModelMapper modelMapper;
@PostMapping("/create") @PostMapping("/create")
public ModelAndView createProject(@ModelAttribute("project") ProjectDto projectDto, public ModelAndView createProject(@ModelAttribute("project") ProjectRequest projectRequest,
BindingResult bindingResult, BindingResult bindingResult,
Principal principal) { Principal principal) {
ModelAndView modelAndView = new ModelAndView(); ModelAndView modelAndView = new ModelAndView();
@@ -33,7 +34,7 @@ public class ProjectController {
return modelAndView.addObject("errors", errors); return modelAndView.addObject("errors", errors);
} }
Project project = projectService.createProject(modelMapper.map(projectDto, Project.class), principal); Project project = projectService.createProject(projectRequest, principal);
modelAndView.addObject("project", project); modelAndView.addObject("project", project);
modelAndView.setViewName("project"); modelAndView.setViewName("project");
return modelAndView; return modelAndView;
@@ -0,0 +1,27 @@
package site.easystartup.web.project.domain.payload.requst;
import lombok.Data;
import lombok.RequiredArgsConstructor;
import org.springframework.web.multipart.MultipartFile;
import site.easystartup.web.project.dto.ParticipantDto;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;
import java.util.List;
@Data
@RequiredArgsConstructor
public class ProjectRequest {
private MultipartFile cover;
@Size(min = 3, max = 100, message = "Title should be no less 3 and no more 100 signs")
@NotNull
private String title;
@Size(min = 50, message = "Description should be no less 50 signs")
@NotNull
private String description;
private int commercialStatus;
@NotNull
private String technology;
private List<ParticipantDto> participants;
}
@@ -1,24 +1,38 @@
package site.easystartup.web.project.service; package site.easystartup.web.project.service;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import site.easystartup.web.project.domain.model.Participant;
import site.easystartup.web.project.domain.model.Project; import site.easystartup.web.project.domain.model.Project;
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
import site.easystartup.web.project.repo.ProjectRepo; import site.easystartup.web.project.repo.ProjectRepo;
import site.easystartup.web.service.UserService;
import site.easystartup.web.storage.service.StorageService;
import java.security.Principal; import java.security.Principal;
import java.util.Arrays;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectService { public class ProjectService {
private final ProjectRepo projectRepo; private final ProjectRepo projectRepo;
private final UserService userService;
private final ModelMapper modelMapper;
private final StorageService storageService;
public Project createProject(Project project, Principal principal) { public Project createProject(ProjectRequest projectRequest, Principal principal) {
return null; Project project = projectRequestToProject(projectRequest);
project.setOwner(userService.getUserByPrincipal(principal));
return project;
} }
public Project updateProject(Project map, Long projectId, Principal principal) { public Project updateProject(Project projectUpdate, Long projectId, Principal principal) {
} }
public void deleteProject(Long projectId, Principal principal) { public void deleteProject(Long projectId, Principal principal) {
@@ -46,4 +60,26 @@ public class ProjectService {
public Object confirmParticipant(Long projectId, Long participantId, Principal principal) { public Object confirmParticipant(Long projectId, Long participantId, Principal principal) {
} }
private String formatTechnology(String technology) {
StringBuilder result = new StringBuilder();
Arrays.stream(technology.split(",")).forEach(tech -> result.append(tech.trim()).append(" "));
return result.toString();
}
private Project projectRequestToProject(ProjectRequest projectRequest) {
Project project = new Project();
project.setParticipants(projectRequest.getParticipants()
.stream().map(part -> modelMapper.map(part, Participant.class)).collect(Collectors.toList()));
project.setTitle(projectRequest.getTitle());
project.setDescription(projectRequest.getDescription());
project.setTechnology(formatTechnology(projectRequest.getTechnology()));
project.setCommercialStatus(project.getCommercialStatus());
project.setCoverLink(projectRequest.getCover().getName());
storageService.save(projectRequest.getCover());
return project;
}
} }
@@ -0,0 +1,19 @@
package site.easystartup.web.service;
import lombok.RequiredArgsConstructor;
import org.hibernate.query.criteria.internal.predicate.PredicateImplementor;
import org.springframework.stereotype.Service;
import site.easystartup.web.domain.User;
import site.easystartup.web.repo.UserRepo;
import java.security.Principal;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepo userRepo;
public User getUserByPrincipal(Principal principal) {
return userRepo.findByUsername(principal.getName());
}
}