enhance api sumber dana

This commit is contained in:
dirgantarasiahaan
2023-05-24 23:53:00 +07:00
parent 11430dc068
commit 28f17d5b54
11 changed files with 334 additions and 61 deletions

View File

@ -1,78 +1,73 @@
package com.iconplus.smartproc.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.iconplus.smartproc.exception.ResourceNotFoundException;
import com.iconplus.smartproc.model.entity.SumberDana;
import com.iconplus.smartproc.repository.SumberDanaRepository;
import com.iconplus.smartproc.helper.model.EmptyResponse;
import com.iconplus.smartproc.model.request.SumberDanaRequest;
import com.iconplus.smartproc.model.response.GetListSumberDanaResponse;
import com.iconplus.smartproc.model.response.SumberDanaResponse;
import com.iconplus.smartproc.service.sumberdana.*;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
@CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true")
@RestController
@RequestMapping("/api/sumberdana")
public class SumberDanaController {
@Autowired
private SumberDanaRepository sumberdanaRepository;
//get all data
@GetMapping
public List<SumberDana> getAllSumberdanas(){
return sumberdanaRepository.findAll();
}
private GetListSumberDanaService getListSumberDanaService;
private PostCreateSumberDanaService postCreateSumberDanaService;
private DeleteSumberDanaService deleteSumberDanaService;
private GetSumberDanaService getSumberDanaService;
private PutSumberDanaService putSumberDanaService;
// create
@PostMapping
public SumberDana createSumberdana(@RequestBody SumberDana sumberdana) {
return sumberdanaRepository.save(sumberdana);
}
public SumberDanaController(GetListSumberDanaService getListSumberDanaService,
PostCreateSumberDanaService postCreateSumberDanaService,
DeleteSumberDanaService deleteSumberDanaService,
GetSumberDanaService getSumberDanaService,
PutSumberDanaService putSumberDanaService) {
this.getListSumberDanaService = getListSumberDanaService;
this.postCreateSumberDanaService = postCreateSumberDanaService;
this.deleteSumberDanaService = deleteSumberDanaService;
this.getSumberDanaService = getSumberDanaService;
this.putSumberDanaService = putSumberDanaService;
}
// get sumberdana by id rest api
@GetMapping("/{id}")
public ResponseEntity<SumberDana> getSumberdanaById(@PathVariable Long id) {
SumberDana sumberdana = sumberdanaRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Sumberdana not exist with id :" + id));
return ResponseEntity.ok(sumberdana);
}
@GetMapping
public GetListSumberDanaResponse getListSumberDana(@RequestParam(name = "search", required = false) String search,
@RequestParam(name = "page", defaultValue = "1") Integer page,
@RequestParam(name = "size", defaultValue = "5") Integer size){
// update sumberdana rest api
@PutMapping("/{id}")
public ResponseEntity<SumberDana> updateSumberdana(@PathVariable Long id, @RequestBody SumberDana sumberDanaDetails){
SumberDana sumberdana = sumberdanaRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Sumberdana not exist with id :" + id));
Pageable pageable = PageRequest.of((page - 1), size);
SumberDanaRequest sumberDanaRequest = SumberDanaRequest.builder()
.search(search)
.pageable(pageable)
.build();
sumberdana.setSumberDana(sumberDanaDetails.getSumberDana());
sumberdana.setKeterangan(sumberDanaDetails.getKeterangan());
SumberDana updatedSumberDana = sumberdanaRepository.save(sumberdana);
return ResponseEntity.ok(updatedSumberDana);
}
// delete sumberdana rest api
@DeleteMapping("/{id}")
public ResponseEntity<Map<String, Boolean>> deleteSumberdana(@PathVariable Long id){
SumberDana sumberdana = sumberdanaRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Sumberdana not exist with id :" + id));
sumberdanaRepository.delete(sumberdana);
Map<String, Boolean> response = new HashMap<>();
response.put("deleted", Boolean.TRUE);
return ResponseEntity.ok(response);
}
return getListSumberDanaService.execute(sumberDanaRequest);
}
@PostMapping
public SumberDanaResponse createSumberDana(@RequestBody SumberDanaRequest request) {
return postCreateSumberDanaService.execute(request);
}
@GetMapping("/{id}")
public SumberDanaResponse getSumberDanaById(@PathVariable Long id) {
return getSumberDanaService.execute(SumberDanaRequest.builder()
.id(id)
.build());
}
@PutMapping("/{id}")
public SumberDanaResponse updateBidang(@PathVariable Long id, @RequestBody SumberDanaRequest request){
request.setId(id);
return putSumberDanaService.execute(request);
}
@DeleteMapping("/{id}")
public EmptyResponse deleteBidang(@PathVariable Long id){
return deleteSumberDanaService.execute(SumberDanaRequest.builder()
.id(id)
.build());
}
}