package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.JenisKontrakRequest; import com.iconplus.smartproc.model.response.GetListJenisKontrakResponse; import com.iconplus.smartproc.model.response.JenisKontrakResponse; import com.iconplus.smartproc.service.jeniskontrak.*; 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/jeniskontrak") public class JenisKontrakController { private final GetListJenisKontrakService getListJenisKontrakService; private final GetJenisKontrakByIdService getJenisKontrakByIdService; private final PostCreateJenisKontrakService postCreateJenisKontrakService; private final PutUpdateJenisKontrakService putUpdateJenisKontrakService; private final DeleteJenisKontrakService deleteJenisKontrakService; public JenisKontrakController(GetListJenisKontrakService getListJenisKontrakService, GetJenisKontrakByIdService getJenisKontrakByIdService, PostCreateJenisKontrakService postCreateJenisKontrakService, PutUpdateJenisKontrakService putUpdateJenisKontrakService, DeleteJenisKontrakService deleteJenisKontrakService) { this.getListJenisKontrakService = getListJenisKontrakService; this.getJenisKontrakByIdService = getJenisKontrakByIdService; this.postCreateJenisKontrakService = postCreateJenisKontrakService; this.putUpdateJenisKontrakService = putUpdateJenisKontrakService; this.deleteJenisKontrakService = deleteJenisKontrakService; } @GetMapping public GetListJenisKontrakResponse getListJenisKontrak(@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); JenisKontrakRequest jenisKontrakRequest = JenisKontrakRequest.builder() .search(search) .pageable(pageable) .build(); return getListJenisKontrakService.execute(jenisKontrakRequest); } @PostMapping public JenisKontrakResponse createJenisKontrak(@RequestBody JenisKontrakRequest jenisKontrakRequest) { return postCreateJenisKontrakService.execute(jenisKontrakRequest); } @GetMapping("/{id}") public JenisKontrakResponse getJenisKontrakById(@PathVariable Long id) { return getJenisKontrakByIdService.execute(JenisKontrakRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public JenisKontrakResponse updateJeniskontrak(@PathVariable Long id, @RequestBody JenisKontrakRequest jenisKontrakRequest){ jenisKontrakRequest.setId(id); return putUpdateJenisKontrakService.execute(jenisKontrakRequest); } @DeleteMapping("/{id}") public EmptyResponse deleteJenisKontrak(@PathVariable Long id) { return deleteJenisKontrakService.execute(JenisKontrakRequest.builder() .id(id) .build()); } }