Implement create project route
This commit is contained in:
parent
8df1ec7ee1
commit
04bf485fd0
43
src/main/java/de/szut/lf8_starter/project/GetProjectDto.java
Normal file
43
src/main/java/de/szut/lf8_starter/project/GetProjectDto.java
Normal file
@ -0,0 +1,43 @@
|
||||
package de.szut.lf8_starter.project;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class GetProjectDto {
|
||||
@NotBlank
|
||||
private String name;
|
||||
|
||||
@NotNull
|
||||
private long leadingEmployee;
|
||||
|
||||
private List<Long> employees;
|
||||
|
||||
@NotNull
|
||||
private long contractor;
|
||||
|
||||
@NotBlank
|
||||
private String contractorName;
|
||||
|
||||
@NotBlank
|
||||
private String comment;
|
||||
|
||||
@NotNull
|
||||
@JsonFormat(pattern = "dd.MM.yyyy")
|
||||
private LocalDate startDate;
|
||||
|
||||
@NotNull
|
||||
@JsonFormat(pattern = "dd.MM.yyyy")
|
||||
private LocalDate plannedEndDate;
|
||||
|
||||
@NotNull
|
||||
@JsonFormat(pattern = "dd.MM.yyyy")
|
||||
private LocalDate endDate;
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package de.szut.lf8_starter.project.dto;
|
||||
|
||||
import de.szut.lf8_starter.project.GetProjectDto;
|
||||
import de.szut.lf8_starter.project.ProjectEntity;
|
||||
import de.szut.lf8_starter.project.ProjectMapper;
|
||||
import de.szut.lf8_starter.project.ProjectService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.media.Content;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/projects")
|
||||
public class CreateProjectAction {
|
||||
private final ProjectService projectService;
|
||||
private final ProjectMapper projectMapper;
|
||||
|
||||
public CreateProjectAction(ProjectService projectService, ProjectMapper mappingService) {
|
||||
this.projectService = projectService;
|
||||
this.projectMapper = mappingService;
|
||||
}
|
||||
|
||||
@Operation(summary = "Creates a new Project")
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "201", description = "created project", content = {@Content(mediaType = "application/json", schema = @Schema(implementation = GetProjectDto.class))}),
|
||||
@ApiResponse(responseCode = "400", description = "invalid JSON posted", content = @Content),
|
||||
@ApiResponse(responseCode = "401", description = "not authorized", content = @Content)})
|
||||
@PostMapping
|
||||
public GetProjectDto create(@RequestBody @Valid CreateProjectDto createProjectDto) {
|
||||
ProjectEntity projectEntity = this.projectMapper.mapCreateDtoToEntity(createProjectDto);
|
||||
|
||||
projectEntity = this.projectService.create(projectEntity);
|
||||
|
||||
return this.projectMapper.mapToGetDto(projectEntity);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user