Files
smartproc-be/src/main/java/com/iconplus/smartproc/controller/InstansiController.java
2023-05-28 22:01:19 +07:00

75 lines
3.1 KiB
Java

package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.InstansiRequest;
import com.iconplus.smartproc.model.response.GetListInstansiResponse;
import com.iconplus.smartproc.model.response.InstansiResponse;
import com.iconplus.smartproc.service.instansi.*;
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/instansi")
public class InstansiController {
private final GetListInstansiService getListInstansiService;
private final PostCreateInstansiService postCreateInstansiService;
private final PutUpdateInstansiService putUpdateInstansiService;
private final GetInstansiByIdService getInstansiByIdService;
private final DeleteInstansiService deleteInstansiService;
public InstansiController(GetListInstansiService getListInstansiService,
PostCreateInstansiService postCreateInstansiService,
PutUpdateInstansiService putUpdateInstansiService,
GetInstansiByIdService getInstansiByIdService,
DeleteInstansiService deleteInstansiService) {
this.getListInstansiService = getListInstansiService;
this.postCreateInstansiService = postCreateInstansiService;
this.putUpdateInstansiService = putUpdateInstansiService;
this.getInstansiByIdService = getInstansiByIdService;
this.deleteInstansiService = deleteInstansiService;
}
@GetMapping
public GetListInstansiResponse getListInstansi(@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);
InstansiRequest instansiRequest = InstansiRequest.builder()
.search(search)
.pageable(pageable)
.build();
return getListInstansiService.execute(instansiRequest);
}
@PostMapping
public InstansiResponse createInstansi(@RequestBody InstansiRequest request) {
return postCreateInstansiService.execute(request);
}
@GetMapping("/{id}")
public InstansiResponse getInstansiById(@PathVariable Long id) {
return getInstansiByIdService.execute(InstansiRequest.builder()
.id(id)
.build());
}
@PutMapping("/{id}")
public InstansiResponse updateInstansi(@PathVariable Long id, @RequestBody InstansiRequest request){
request.setId(id);
return putUpdateInstansiService.execute(request);
}
@DeleteMapping("/{id}")
public EmptyResponse deleteInstansi(@PathVariable Long id){
return deleteInstansiService.execute(InstansiRequest.builder()
.id(id)
.build());
}
}