Files
smartproc-be/src/main/java/com/iconplus/smartproc/controller/RolesController.java
2023-05-28 22:01:19 +07:00

74 lines
3.1 KiB
Java

package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.RolesRequest;
import com.iconplus.smartproc.model.response.GetRolesResponse;
import com.iconplus.smartproc.model.response.RolesResponse;
import com.iconplus.smartproc.service.roles.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
@CrossOrigin(origins = "${fe.server}", allowCredentials = "true")
@RestController
@RequestMapping("/api/roles")
public class RolesController {
private final GetRolesService getRolesService;
private final PostCreateRoleService postCreateRoleService;
private final GetRoleByIdService getRoleByIdService;
private final PutUpdateRoleService putUpdateRoleService;
private final DeleteRoleService deleteRoleService;
public RolesController(GetRolesService getRolesService,
PostCreateRoleService postCreateRoleService,
GetRoleByIdService getRoleByIdService,
PutUpdateRoleService putUpdateRoleService,
DeleteRoleService deleteRoleService) {
this.getRolesService = getRolesService;
this.postCreateRoleService = postCreateRoleService;
this.getRoleByIdService = getRoleByIdService;
this.putUpdateRoleService = putUpdateRoleService;
this.deleteRoleService = deleteRoleService;
}
@GetMapping
public GetRolesResponse getRoles(@RequestParam(name = "search", required = false) String search,
@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "size", defaultValue = "5") Integer size){
Pageable pageable = PageRequest.of((page - 1), size);
RolesRequest rolesRequest = RolesRequest.builder()
.search(search)
.pageable(pageable)
.build();
return getRolesService.execute(rolesRequest);
}
@PostMapping
public RolesResponse createRoles(@RequestBody RolesRequest rolesRequest) {
return postCreateRoleService.execute(rolesRequest);
}
@GetMapping("/{id}")
public RolesResponse getRolesById(@PathVariable Long id) {
return getRoleByIdService.execute(RolesRequest.builder()
.id(id)
.build());
}
@PutMapping("/{id}")
public RolesResponse updateRoles(@PathVariable Long id, @RequestBody RolesRequest rolesRequest){
rolesRequest.setId(id);
return putUpdateRoleService.execute(rolesRequest);
}
@DeleteMapping("/{id}")
public EmptyResponse deleteRoles(@PathVariable Long id){
return deleteRoleService.execute(RolesRequest.builder()
.id(id)
.build());
}
}