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()); } }