package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.UnitInisiatorRequest; import com.iconplus.smartproc.model.response.GetListUnitInisiatorResponse; import com.iconplus.smartproc.model.response.UnitInisiatorResponse; import com.iconplus.smartproc.service.unitinisiator.*; 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/unitinisiator") public class UnitInisiatorController { private final GetUnitInisiatorService getUnitInisiatorService; private final GetListUnitInisiatorService getListUnitInisiatorService; private final PostCreateUnitInisiatorService postCreateUnitInisiatorService; private final DeleteUnitInisiatorService deleteUnitInisiatorService; private final PutUpdateUnitInisiatorService putUpdateUnitInisiatorService; public UnitInisiatorController(GetUnitInisiatorService getUnitInisiatorService, GetListUnitInisiatorService getListUnitInisiatorService, PostCreateUnitInisiatorService postCreateUnitInisiatorService, DeleteUnitInisiatorService deleteUnitInisiatorService, PutUpdateUnitInisiatorService putUpdateUnitInisiatorService) { this.getUnitInisiatorService = getUnitInisiatorService; this.getListUnitInisiatorService = getListUnitInisiatorService; this.postCreateUnitInisiatorService = postCreateUnitInisiatorService; this.deleteUnitInisiatorService = deleteUnitInisiatorService; this.putUpdateUnitInisiatorService = putUpdateUnitInisiatorService; } @GetMapping public GetListUnitInisiatorResponse getListUnitInisiator(@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); UnitInisiatorRequest unitInisiatorRequest = UnitInisiatorRequest.builder() .search(search) .pageable(pageable) .build(); return getListUnitInisiatorService.execute(unitInisiatorRequest); } @PostMapping public UnitInisiatorResponse createUnitInisiator(@RequestBody UnitInisiatorRequest request) { return postCreateUnitInisiatorService.execute(request); } @GetMapping("/{id}") public UnitInisiatorResponse getUnitInisiator(@PathVariable Long id) { return getUnitInisiatorService.execute(UnitInisiatorRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public UnitInisiatorResponse updateUnitInisiator(@PathVariable Long id, @RequestBody UnitInisiatorRequest request){ request.setId(id); return putUpdateUnitInisiatorService.execute(request); } @DeleteMapping("/{id}") public EmptyResponse deleteUnitInisiator(@PathVariable Long id){ return deleteUnitInisiatorService.execute(UnitInisiatorRequest.builder() .id(id) .build()); } }