package ru.ulstu.activity.project.controller; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import ru.ulstu.activity.api.ActivityController; import ru.ulstu.activity.project.model.ProjectDashboardDto; import ru.ulstu.activity.project.model.ProjectDto; import ru.ulstu.activity.project.model.ProjectListDto; import ru.ulstu.activity.project.service.ProjectService; import ru.ulstu.configuration.Constants; import ru.ulstu.core.model.response.PageableItems; import ru.ulstu.core.model.response.Response; import javax.validation.Valid; @RestController @RequestMapping(Constants.API_1_0 + "projects") public class ProjectController implements ActivityController { private final ProjectService projectService; public ProjectController(ProjectService projectService) { this.projectService = projectService; } @GetMapping("list") public Response> getList(@RequestParam(value = "offset", defaultValue = "0") int offset, @RequestParam(value = "count", defaultValue = "10") int count) { return new Response<>(projectService.findAllDto(offset, count)); } @GetMapping("dashboard") public Response> getDashboard(@RequestParam(value = "offset", defaultValue = "0") int offset, @RequestParam(value = "count", defaultValue = "10") int count) { return new Response<>(projectService.findAllActiveDto(offset, count)); } @GetMapping("{project-id}") public Response get(@PathVariable("project-id") Integer projectId) { return new Response<>(projectService.findDtoById(projectId)); } @PostMapping public Response create(@RequestBody @Valid ProjectDto projectDto) { return new Response<>(projectService.create(projectDto)); } @PutMapping public Response update(@RequestBody @Valid ProjectDto projectDto) { return new Response<>(projectService.update(projectDto)); } @DeleteMapping("/{project-id}") public Response delete(@PathVariable("project-id") Integer projectId) { return new Response<>(projectService.delete(projectId)); } @PostMapping("ping/{project-id}") public void ping(@PathVariable("project-id") int projectId) { projectService.ping(projectId); } }