package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.DrpPengadaanDokumenRequest; import com.iconplus.smartproc.model.request.DrpPengadaanRequest; import com.iconplus.smartproc.model.response.*; import com.iconplus.smartproc.service.drppengadaan.*; 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/pengadaan") public class DrpPengadaanController { private final PostCreateDrpPengadaanService postCreateDrpPengadaanService; private final GetListDrpPengadaanService getListDrpPengadaanService; private final PostDrpUploadDokumenPendukungService postDrpUploadDokumenPendukungService; private final DeleteDrpPengadaanService deleteDrpPengadaanService; private final DeleteDokumenPendukungService deleteDokumenPendukungService; private final EditUploadDrpPengadaanService editUploadDrpPengadaanService; private final GetDrpPengadaanService getDrpPengadaanService; private final PutDrpPengadaanService putDrpPengadaanService; public DrpPengadaanController(PostCreateDrpPengadaanService postCreateDrpPengadaanService, GetListDrpPengadaanService getListDrpPengadaanService, PostDrpUploadDokumenPendukungService postDrpUploadDokumenPendukungService, DeleteDrpPengadaanService deleteDrpPengadaanService, DeleteDokumenPendukungService deleteDokumenPendukungService, EditUploadDrpPengadaanService editUploadDrpPengadaanService, GetDrpPengadaanService getDrpPengadaanService, PutDrpPengadaanService putDrpPengadaanService) { this.postCreateDrpPengadaanService = postCreateDrpPengadaanService; this.getListDrpPengadaanService = getListDrpPengadaanService; this.postDrpUploadDokumenPendukungService = postDrpUploadDokumenPendukungService; this.deleteDrpPengadaanService = deleteDrpPengadaanService; this.deleteDokumenPendukungService = deleteDokumenPendukungService; this.editUploadDrpPengadaanService = editUploadDrpPengadaanService; this.getDrpPengadaanService = getDrpPengadaanService; this.putDrpPengadaanService = putDrpPengadaanService; } @GetMapping("/list/{id}") public GetListDrpPengadaanResponse getDrpPengadaan(@PathVariable(name = "id") Long drpId, @RequestParam(name = "page", defaultValue = "1") Integer page, @RequestParam(name = "size", defaultValue = "5") Integer size){ Pageable pageable = PageRequest.of((page - 1), size); DrpPengadaanRequest drpPengadaanRequest = DrpPengadaanRequest.builder() .drpId(drpId) .pageable(pageable) .build(); return getListDrpPengadaanService.execute(drpPengadaanRequest); } @PostMapping public DrpPengadaanResponse createDrpPengadaan(@RequestBody DrpPengadaanRequest drpPengadaanRequest) { return postCreateDrpPengadaanService.execute(drpPengadaanRequest); } @GetMapping("/{id}") public DrpPengadaanResponse getDrpPengadaanById(@PathVariable Long id) { return getDrpPengadaanService.execute(DrpPengadaanRequest.builder() .id(id) .build()); } @PutMapping("/{id}") public DrpPengadaanResponse updateDrpPengadaan(@PathVariable Long id, @RequestBody DrpPengadaanRequest drpPengadaanRequest) throws IOException { drpPengadaanRequest.setId(id); return putDrpPengadaanService.execute(drpPengadaanRequest); } @DeleteMapping("/{id}") public EmptyResponse deleteDrpPengadaan(@RequestBody DrpPengadaanRequest drpPengadaanRequest) { return deleteDrpPengadaanService.execute(drpPengadaanRequest); } @PostMapping("/upload/dokumen") public DrpPengadaanDokumenResponse uploadDokumenPendukung(@RequestParam(name = "jenisDokumenId") Long jenisDokumenId, @RequestParam(name = "keterangan") String keterangan, @RequestParam(name = "file") MultipartFile file) throws IOException { return postDrpUploadDokumenPendukungService.execute(DrpPengadaanDokumenRequest.builder() .jenisDokumenId(jenisDokumenId) .keterangan(keterangan) .file(file) .build()); } @PutMapping("/upload/dokumen") public DrpPengadaanDokumenResponse editUploadDrpDokumen(@RequestParam(name = "filename") String filename, @RequestParam(name = "jenisDokumenId") Long jenisDokumenId, @RequestParam(name = "keterangan") String keterangan, @RequestParam(name = "file") MultipartFile file) { return editUploadDrpPengadaanService.execute(DrpPengadaanDokumenRequest.builder() .filename(filename) .jenisDokumenId(jenisDokumenId) .keterangan(keterangan) .file(file) .build()); } @DeleteMapping("/upload/dokumen") public EmptyResponse deleteDokumenPendukung(@RequestBody DrpPengadaanDokumenRequest drpPengadaanDokumenRequest) { return deleteDokumenPendukungService.execute(drpPengadaanDokumenRequest); } }