package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.SupplyPositioningMatrixRequest; import com.iconplus.smartproc.model.response.GetListSupplyPositioningMatrixResponse; import com.iconplus.smartproc.model.response.SupplyPositioningMatrixResponse; import com.iconplus.smartproc.repository.SupplyPositioningMatrixRepository; import com.iconplus.smartproc.service.supplypositioningmatrix.*; import org.springframework.beans.factory.annotation.Autowired; 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/supplypositioningmatrix") public class SupplyPositioningMatrixController { @Autowired private SupplyPositioningMatrixRepository supplypositioningmatrixRepository; private final GetListSupplyPositioningMatrixService getListSupplyPositioningMatrixService; private final GetSupplyPositioningMatrixByIdService getSupplyPositioningMatrixByIdService; private final PostCreateSupplyPositioningMatrixService postCreateSupplyPositioningMatrixService; private final PutUpdateSupplyPositioningMatrixService putUpdateSupplyPositioningMatrixService; private final DeleteSupplyPositioningMatrixService deleteSupplyPositioningMatrixService; public SupplyPositioningMatrixController(GetListSupplyPositioningMatrixService getListSupplyPositioningMatrixService, GetSupplyPositioningMatrixByIdService getSupplyPositioningMatrixByIdService, PostCreateSupplyPositioningMatrixService postCreateSupplyPositioningMatrixService, PutUpdateSupplyPositioningMatrixService putUpdateSupplyPositioningMatrixService, DeleteSupplyPositioningMatrixService deleteSupplyPositioningMatrixService) { this.getListSupplyPositioningMatrixService = getListSupplyPositioningMatrixService; this.getSupplyPositioningMatrixByIdService = getSupplyPositioningMatrixByIdService; this.postCreateSupplyPositioningMatrixService = postCreateSupplyPositioningMatrixService; this.putUpdateSupplyPositioningMatrixService = putUpdateSupplyPositioningMatrixService; this.deleteSupplyPositioningMatrixService = deleteSupplyPositioningMatrixService; } @GetMapping public GetListSupplyPositioningMatrixResponse getListSupplyPositioningMatrix(@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); SupplyPositioningMatrixRequest supplyPositioningMatrixRequest = SupplyPositioningMatrixRequest.builder() .search(search) .pageable(pageable) .build(); return getListSupplyPositioningMatrixService.execute(supplyPositioningMatrixRequest); } @PostMapping public SupplyPositioningMatrixResponse createSupplyPositioningMatrix(@RequestBody SupplyPositioningMatrixRequest supplyPositioningMatrixRequest) { return postCreateSupplyPositioningMatrixService.execute(supplyPositioningMatrixRequest); } @GetMapping("/{id}") public SupplyPositioningMatrixResponse getSupplyPositioningMatrixById(@PathVariable Long id) { return getSupplyPositioningMatrixByIdService.execute(SupplyPositioningMatrixRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public SupplyPositioningMatrixResponse updateSupplyPositioningmatrix(@PathVariable Long id, @RequestBody SupplyPositioningMatrixRequest supplyPositioningMatrixRequest){ supplyPositioningMatrixRequest.setId(id); return putUpdateSupplyPositioningMatrixService.execute(supplyPositioningMatrixRequest); } @DeleteMapping("/{id}") public EmptyResponse deleteSupplyPositioningMatrix(@PathVariable Long id) { return deleteSupplyPositioningMatrixService.execute(SupplyPositioningMatrixRequest.builder() .id(id) .build()); } }