ranyeli
9/5/2017 - 3:19 PM

Manage api request related to suppliers

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);
// 	}