2023-05-28 22:01:19 +07:00

78 lines
3.3 KiB
Java

package com.iconplus.smartproc.controller;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.LokasiRequest;
import com.iconplus.smartproc.model.response.GetListLokasiResponse;
import com.iconplus.smartproc.model.response.LokasiResponse;
import com.iconplus.smartproc.service.lokasi.*;
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/lokasi")
public class LokasiController {
private final GetListLokasiService getListLokasiService;
private final GetLokasiByIdService getLokasiByIdService;
private final PostCreateLokasiService postCreateLokasiService;
private final PutUpdateLokasiService putUpdateLokasiService;
private final DeleteLokasiService deleteLokasiService;
public LokasiController(GetListLokasiService getListLokasiService,
GetLokasiByIdService getLokasiByIdService,
PostCreateLokasiService postCreateLokasiService,
PutUpdateLokasiService putUpdateLokasiService,
DeleteLokasiService deleteLokasiService) {
this.getListLokasiService = getListLokasiService;
this.getLokasiByIdService = getLokasiByIdService;
this.postCreateLokasiService = postCreateLokasiService;
this.putUpdateLokasiService = putUpdateLokasiService;
this.deleteLokasiService = deleteLokasiService;
}
@GetMapping
public GetListLokasiResponse getListLokasi(@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);
LokasiRequest lokasiRequest = LokasiRequest.builder()
.search(search)
.pageable(pageable)
.build();
return getListLokasiService.execute(lokasiRequest);
}
@PostMapping
public LokasiResponse createLokasi(@RequestBody LokasiRequest lokasiRequest) {
return postCreateLokasiService.execute(lokasiRequest);
}
@GetMapping("/{id}")
public LokasiResponse getLokasiById(@PathVariable Long id) {
return getLokasiByIdService.execute(LokasiRequest.builder()
.id(id)
.build());
}
@PutMapping("/{id}")
public LokasiResponse updateLokasi(@PathVariable Long id,
@RequestBody LokasiRequest LokasiRequest){
LokasiRequest.setId(id);
return putUpdateLokasiService.execute(LokasiRequest);
}
@DeleteMapping("/{id}")
public EmptyResponse deleteLokasi(@PathVariable Long id) {
return deleteLokasiService.execute(LokasiRequest.builder()
.id(id)
.build());
}
}