Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
55a5985b08
8 files changed
+88
-21
No files matched your search
@@ -139,13 +139,13 @@ public class ProjectController {
|
||||
return modelAndView;
|
||||
}
|
||||
|
||||
@PostMapping("/{projectId}/{nameOfPosition}/applay")
|
||||
public ModelAndView applayOnProject(@PathVariable("projectId") Long projectId,
|
||||
@PostMapping("/{projectId}/{nameOfPosition}/apply")
|
||||
public ModelAndView applyOnProject(@PathVariable("projectId") Long projectId,
|
||||
@PathVariable("nameOfPosition") String nameOfPosition,
|
||||
Principal principal) {
|
||||
ModelAndView modelAndView = new ModelAndView();
|
||||
|
||||
modelAndView.addObject("message", projectService.applayOnProject(projectId, nameOfPosition, principal));
|
||||
modelAndView.addObject("message", projectService.applyOnProject(projectId, nameOfPosition, principal));
|
||||
modelAndView.addObject("project", modelMapper.map(projectService.getProjectById(projectId), ProjectDto.class));
|
||||
modelAndView.setViewName("project");
|
||||
|
||||
|
||||
@@ -21,10 +21,6 @@ public class Participant {
|
||||
@JoinColumn(name = "project_id", updatable = false)
|
||||
private Project project;
|
||||
|
||||
@Column(name = "technology")
|
||||
@NotNull
|
||||
private String technology;
|
||||
|
||||
@Column(name = "name_of_position")
|
||||
private String nameOfPosition;
|
||||
@ManyToOne
|
||||
|
||||
@@ -9,6 +9,7 @@ import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@@ -35,9 +36,12 @@ public class Project {
|
||||
@Column(name = "commercial_status") // 1 - commercial, 0 - non-commercial
|
||||
private int commercialStatus;
|
||||
|
||||
@Column(name = "technology")
|
||||
@NotNull
|
||||
private String technology;
|
||||
@ManyToMany
|
||||
@JoinTable(
|
||||
joinColumns = @JoinColumn(name = "project_id"),
|
||||
inverseJoinColumns = @JoinColumn(name = "tag_id")
|
||||
)
|
||||
private List<Tag> technology;
|
||||
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "owner_id", updatable = false)
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package site.easystartup.web.project.domain.model;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.util.Set;
|
||||
|
||||
@Data
|
||||
@Entity
|
||||
@Table(name = "tag")
|
||||
public class Tag {
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Column(name = "tag_id")
|
||||
private Long tagId;
|
||||
|
||||
@Column(name = "tage_name")
|
||||
private String tagName;
|
||||
|
||||
@ManyToMany(mappedBy = "technology")
|
||||
private Set<Project> projects;
|
||||
}
|
||||
+4
-2
@@ -1,11 +1,13 @@
|
||||
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.domain.model.Tag;
|
||||
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
|
||||
@@ -22,6 +24,6 @@ public class ProjectRequest {
|
||||
private String description;
|
||||
private int commercialStatus;
|
||||
@NotNull
|
||||
private String technology;
|
||||
private List<Tag> technology;
|
||||
private List<ParticipantDto> participants;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package site.easystartup.web.project.repo;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import site.easystartup.web.project.domain.model.Tag;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@Repository
|
||||
public interface TagRepo extends JpaRepository<Tag, Long> {
|
||||
|
||||
Optional<Tag> findTagByTagNameIgnoreCase(String tagName);
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import site.easystartup.web.domain.User;
|
||||
import site.easystartup.web.project.domain.exeption.ProjectNotFoundException;
|
||||
import site.easystartup.web.project.domain.model.Participant;
|
||||
import site.easystartup.web.project.domain.model.Project;
|
||||
import site.easystartup.web.project.domain.model.Tag;
|
||||
import site.easystartup.web.project.domain.payload.requst.ProjectRequest;
|
||||
import site.easystartup.web.project.repo.ParticipantRepo;
|
||||
import site.easystartup.web.project.repo.ProjectRepo;
|
||||
@@ -14,6 +15,7 @@ import site.easystartup.web.service.UserService;
|
||||
import site.easystartup.web.storage.service.StorageService;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
@@ -27,6 +29,7 @@ public class ProjectService {
|
||||
private final ModelMapper modelMapper;
|
||||
private final StorageService storageService;
|
||||
private final ParticipantRepo participantRepo;
|
||||
private final TagService tagService;
|
||||
|
||||
|
||||
public Project createProject(ProjectRequest projectRequest, Principal principal) {
|
||||
@@ -77,7 +80,7 @@ public class ProjectService {
|
||||
return participantRepo.findAllByNameOfPosition(nameOfPosition.trim());
|
||||
}
|
||||
|
||||
public Project applayOnProject(Long projectId, String nameOfPosition, Principal principal) {
|
||||
public Project applyOnProject(Long projectId, String nameOfPosition, Principal principal) {
|
||||
Project project = getProjectById(projectId);
|
||||
project.getParticipants().stream().forEach(participant -> {
|
||||
if (participant.getNameOfPosition().equals(nameOfPosition))
|
||||
@@ -108,13 +111,6 @@ public class ProjectService {
|
||||
return projectRepo.save(project);
|
||||
}
|
||||
|
||||
|
||||
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, Principal principal) {
|
||||
Project project = new Project();
|
||||
|
||||
@@ -122,7 +118,7 @@ public class ProjectService {
|
||||
.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.setTechnology(tagService.convertTechnology(projectRequest.getTechnology()));
|
||||
project.setCommercialStatus(project.getCommercialStatus());
|
||||
project.setCoverLink(projectRequest.getCover().getName());
|
||||
project.setOwner(userService.getUserByPrincipal(principal));
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package site.easystartup.web.project.service;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import site.easystartup.web.project.domain.model.Tag;
|
||||
import site.easystartup.web.project.repo.TagRepo;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class TagService {
|
||||
private final TagRepo tagRepo;
|
||||
|
||||
public List<Tag> getAllTags() {
|
||||
return tagRepo.findAll();
|
||||
}
|
||||
public List<Tag> convertTechnology(List<Tag> technology) {
|
||||
List<Tag> tags = new ArrayList<>();
|
||||
technology.forEach(tag -> {
|
||||
Optional<Tag> foundTag = tagRepo.findTagByTagNameIgnoreCase(tag.getTagName());
|
||||
if (foundTag.isPresent()) {
|
||||
tags.add(foundTag.get());
|
||||
}
|
||||
else {
|
||||
tagRepo.save(tag);
|
||||
tags.add(tagRepo.findTagByTagNameIgnoreCase(tag.getTagName()).get());
|
||||
}
|
||||
});
|
||||
return tags;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user