package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.JenisAnggaranRequest; import com.iconplus.smartproc.model.response.GetListJenisAnggaranResponse; import com.iconplus.smartproc.model.response.JenisAnggaranResponse; import com.iconplus.smartproc.service.jenisanggaran.*; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") @RestController @RequestMapping("/api/jenisanggaran") public class JenisAnggaranController { private final GetListJenisAnggaranService getListJenisAnggaranService; private final GetJenisAnggaranByIdService getJenisAnggaranByIdService; private final PostCreateJenisAnggaranService postCreateJenisAnggaranService; private final PutUpdateJenisAnggaranService putUpdateJenisAnggaranService; private final DeleteJenisAnggaranService deleteJenisAnggaranService; public JenisAnggaranController(GetListJenisAnggaranService getListJenisAnggaranService, GetJenisAnggaranByIdService getJenisAnggaranByIdService, PostCreateJenisAnggaranService postCreateJenisAnggaranService, PutUpdateJenisAnggaranService putUpdateJenisAnggaranService, DeleteJenisAnggaranService deleteJenisAnggaranService) { this.getListJenisAnggaranService = getListJenisAnggaranService; this.getJenisAnggaranByIdService = getJenisAnggaranByIdService; this.postCreateJenisAnggaranService = postCreateJenisAnggaranService; this.putUpdateJenisAnggaranService = putUpdateJenisAnggaranService; this.deleteJenisAnggaranService = deleteJenisAnggaranService; } @GetMapping public GetListJenisAnggaranResponse getListJenisAnggaran(@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); JenisAnggaranRequest jenisAnggaranRequest = JenisAnggaranRequest.builder() .search(search) .pageable(pageable) .build(); return getListJenisAnggaranService.execute(jenisAnggaranRequest); } @PostMapping public JenisAnggaranResponse createJenisAnggaran(@RequestBody JenisAnggaranRequest jenisAnggaranRequest) { return postCreateJenisAnggaranService.execute(jenisAnggaranRequest); } @GetMapping("/{id}") public JenisAnggaranResponse getJenisAnggaranById(@PathVariable Long id) { return getJenisAnggaranByIdService.execute(JenisAnggaranRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public JenisAnggaranResponse updateJenisanggaran(@PathVariable Long id, @RequestBody JenisAnggaranRequest jenisAnggaranRequest){ jenisAnggaranRequest.setId(id); return putUpdateJenisAnggaranService.execute(jenisAnggaranRequest); } @DeleteMapping("/{id}") public EmptyResponse deleteJenisAnggaran(@PathVariable Long id) { return deleteJenisAnggaranService.execute(JenisAnggaranRequest.builder() .id(id) .build()); } }