package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpDokumenRequest; import com.iconplus.smartproc.model.request.DrpRequest; import com.iconplus.smartproc.model.response.*; import com.iconplus.smartproc.service.drp.*; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; @CrossOrigin(origins = "${fe.server}", allowCredentials = "true") @RestController @RequestMapping("/api/drp") public class DrpController { private final GetDrpService getDrpService; private final GetListDrpService getListDrpService; private final PostDrpUploadDokumenRKAPService postDrpUploadDokumenRKAPService; private final PostCreateTahunDrpService postCreateTahunDrpService; private final DeleteDokumenUploadService deleteDokumenUploadService; private final PostCreateDrpService postCreateDrpService; private final EditUploadDokumenDrpService editUploadDokumenDrpService; public DrpController(GetDrpService getDrpService, GetListDrpService getListDrpService, PostDrpUploadDokumenRKAPService postDrpUploadDokumenRKAPService, PostCreateTahunDrpService postCreateTahunDrpService, DeleteDokumenUploadService deleteDokumenUploadService, PostCreateDrpService postCreateDrpService, EditUploadDokumenDrpService editUploadDokumenDrpService) { this.getDrpService = getDrpService; this.getListDrpService = getListDrpService; this.postDrpUploadDokumenRKAPService = postDrpUploadDokumenRKAPService; this.postCreateTahunDrpService = postCreateTahunDrpService; this.deleteDokumenUploadService = deleteDokumenUploadService; this.postCreateDrpService = postCreateDrpService; this.editUploadDokumenDrpService = editUploadDokumenDrpService; } @GetMapping public GetListDrpResponse getListDrp(@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); DrpRequest drpRequest = DrpRequest.builder() .search(search) .pageable(pageable) .build(); return getListDrpService.execute(drpRequest); } @GetMapping("/{id}") public DrpResponse getDrp(@PathVariable Long id) { return getDrpService.execute(DrpRequest.builder() .id(id) .build()); } @PostMapping("/tahun") public DrpResponse createTahunDrp(@RequestBody DrpRequest drpRequest) { return postCreateTahunDrpService.execute(drpRequest); } @PostMapping public DrpResponse createDrp(@RequestBody DrpRequest drpRequest) { return postCreateDrpService.execute(drpRequest); } @PostMapping("/upload/dokumen") public DrpDokumenResponse uploadDokumenRkap(@RequestParam(name = "jenisDokumenId") Long jenisDokumenId, @RequestParam(name = "keterangan") String keterangan, @RequestParam(name = "file") MultipartFile file) throws IOException { return postDrpUploadDokumenRKAPService.execute(DrpDokumenRequest.builder() .jenisDokumenId(jenisDokumenId) .keterangan(keterangan) .file(file) .build()); } @DeleteMapping("/upload/dokumen") public EmptyResponse deleteDokumenRkap(@RequestBody DrpDokumenRequest drpDokumenRequest) { return deleteDokumenUploadService.execute(drpDokumenRequest); } @PutMapping("/upload/dokumen") public DrpDokumenResponse editUploadDrpDokumen(@RequestParam(name = "filename") String filename, @RequestParam(name = "jenisDokumenId") Long jenisDokumenId, @RequestParam(name = "keterangan") String keterangan, @RequestParam(name = "file") MultipartFile file) { return editUploadDokumenDrpService.execute(DrpDokumenRequest.builder() .filename(filename) .jenisDokumenId(jenisDokumenId) .keterangan(keterangan) .file(file) .build()); } }