package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.SumberDanaRequest; import com.iconplus.smartproc.model.response.GetListSumberDanaResponse; import com.iconplus.smartproc.model.response.SumberDanaResponse; import com.iconplus.smartproc.service.sumberdana.*; 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/sumberdana") public class SumberDanaController { private GetListSumberDanaService getListSumberDanaService; private PostCreateSumberDanaService postCreateSumberDanaService; private DeleteSumberDanaService deleteSumberDanaService; private GetSumberDanaService getSumberDanaService; private PutSumberDanaService putSumberDanaService; public SumberDanaController(GetListSumberDanaService getListSumberDanaService, PostCreateSumberDanaService postCreateSumberDanaService, DeleteSumberDanaService deleteSumberDanaService, GetSumberDanaService getSumberDanaService, PutSumberDanaService putSumberDanaService) { this.getListSumberDanaService = getListSumberDanaService; this.postCreateSumberDanaService = postCreateSumberDanaService; this.deleteSumberDanaService = deleteSumberDanaService; this.getSumberDanaService = getSumberDanaService; this.putSumberDanaService = putSumberDanaService; } @GetMapping public GetListSumberDanaResponse getListSumberDana(@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); SumberDanaRequest sumberDanaRequest = SumberDanaRequest.builder() .search(search) .pageable(pageable) .build(); return getListSumberDanaService.execute(sumberDanaRequest); } @PostMapping public SumberDanaResponse createSumberDana(@RequestBody SumberDanaRequest request) { return postCreateSumberDanaService.execute(request); } @GetMapping("/{id}") public SumberDanaResponse getSumberDanaById(@PathVariable Long id) { return getSumberDanaService.execute(SumberDanaRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public SumberDanaResponse updateBidang(@PathVariable Long id, @RequestBody SumberDanaRequest request){ request.setId(id); return putSumberDanaService.execute(request); } @DeleteMapping("/{id}") public EmptyResponse deleteBidang(@PathVariable Long id){ return deleteSumberDanaService.execute(SumberDanaRequest.builder() .id(id) .build()); } }