Manage api request related to suppliers
package com.project.api;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.WebRequest;
import com.project.dao.SupplierDao;
import com.project.dto.SupplierFilter;
import com.project.model.Item;
import com.project.model.Supplier;
@RestController
public class SupplierApi {
@Autowired
private SupplierDao _dao;
@PostMapping("api/supplier/add")
public HttpStatus addSupplier(@RequestBody Supplier supplier) {
_dao.save(supplier);
return HttpStatus.OK;
}
@PostMapping("api/suppliers/add")
public void addSupplier(@RequestBody List<Supplier> supplier) {
_dao.saveAll(supplier);
}
@PostMapping("api/supplier/add/items/supplier_id/{id}")
public void setItems(@PathVariable("id") Long id, @RequestBody List<Item> items) {
Supplier s = _dao.referTo(Supplier.class, id);
s.setItems(items);
_dao.save(s);
}
@GetMapping("api/supplier/items/supplier_id/{id}")
public List<Item> getItems(@PathVariable("id") Long id) {
return _dao.getItems(id);
}
@GetMapping("api/supplier/items/supplier/{id}")
public List<Item> getAllItem(@PathVariable("id") Long id) {
return _dao.referTo(Supplier.class, id).getItems();
}
@DeleteMapping("api/supplier/delete")
public void deleteSupplier(@RequestBody Supplier supplier) {
_dao.delete(supplier);
}
@PutMapping("api/supplier/update")
public void updateSupplier(@RequestBody Supplier supplier) {
_dao.update(supplier);
}
@GetMapping("api/supplier/{id}")
public Supplier getSupplier(@PathVariable("id") long id) {
return _dao.findById(Supplier.class, id);
}
@GetMapping("api/suppliers")
public List<Supplier> getSuppliers(WebRequest params){
SupplierFilter filter = new SupplierFilter();
filter.setLimit(Integer.valueOf(params.getParameter("limit")));
filter.setOffset(Integer.valueOf(params.getParameter("offset")));
filter.setName(params.getParameter("name"));
filter.setPhone(params.getParameter("phone"));
return _dao.filterSuppliers(filter);
}
/*@GetMapping("api/suppliers")
public List<Supplier> getSuppliers(
@RequestParam(value="offset", required=false) Integer offset,
@RequestParam(value="limit", required=false) Integer limit, WebRequest params){
GeneralFilter filter = new GeneralFilter();
filter.setLimit(limit);
filter.setOffset(offset);
return _dao.findAll(Supplier.class, filter);
}*/
@GetMapping("api/suppliers/search/{by}")
public List<Supplier> searchSupplier(
@PathVariable("by") String by,
@RequestParam(value="term", required=false) String term
){
return by.trim().equals("name") ?
_dao.findByName(term) :_dao.findByPhone(term) ;
}
@GetMapping("api/suppliers/count")
public Long countSuppliers(WebRequest params) {
SupplierFilter filter = new SupplierFilter();
filter.setName(params.getParameter("name"));
filter.setPhone(params.getParameter("phone"));
return _dao.supplierCount(filter);
}
}
// @GetMapping("api/suppliers")
// public List<Supplier> getSuppliers(
// @RequestParam(value="offset", required=false) Integer offset,
// @RequestParam(value="limit", required=false) Integer limit){
// return _dao.findAll(Supplier.class, offset, limit);
// }