Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
23784 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23881 ashik.ali 3
import java.util.HashSet;
23784 ashik.ali 4
import java.util.List;
5
 
6
import javax.servlet.http.HttpServletRequest;
7
 
8
import org.apache.logging.log4j.LogManager;
9
import org.apache.logging.log4j.Logger;
10
import org.springframework.beans.factory.annotation.Autowired;
23881 ashik.ali 11
import org.springframework.beans.factory.annotation.Qualifier;
23784 ashik.ali 12
import org.springframework.stereotype.Controller;
13
import org.springframework.transaction.annotation.Transactional;
14
import org.springframework.ui.Model;
15
import org.springframework.web.bind.annotation.RequestBody;
16
import org.springframework.web.bind.annotation.RequestMapping;
17
import org.springframework.web.bind.annotation.RequestMethod;
18
import org.springframework.web.bind.annotation.RequestParam;
19
 
20
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
21
import com.spice.profitmandi.common.model.CreateWarehouseRequest;
23881 ashik.ali 22
import com.spice.profitmandi.common.model.ProfitMandiConstants;
23784 ashik.ali 23
import com.spice.profitmandi.common.util.Utils;
23881 ashik.ali 24
import com.spice.profitmandi.dao.entity.dtr.User;
23784 ashik.ali 25
import com.spice.profitmandi.dao.entity.nonbillable.Warehouse;
23881 ashik.ali 26
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
27
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
28
import com.spice.profitmandi.dao.repository.nonbillable.UserWarehouseRepository;
23784 ashik.ali 29
import com.spice.profitmandi.dao.repository.nonbillable.WarehouseRepository;
30
import com.spice.profitmandi.service.nonbillable.WarehouseService;
31
 
32
@Controller
33
@Transactional
34
public class WarehouseController {
35
 
36
	private static final Logger LOGGER = LogManager.getLogger(WarehouseController.class);
37
 
38
	@Autowired
39
	private WarehouseRepository warehouseRepository;
40
 
41
	@Autowired
42
	private WarehouseService warehouseService;
43
 
23881 ashik.ali 44
	@Autowired
45
	@Qualifier("userRepository")
46
	private UserRepository userRepository;
47
 
48
	@Autowired
49
	private UserAccountRepository userAccountRepository;
50
 
51
	@Autowired
52
	private UserWarehouseRepository userWarehouseRepository;
53
 
23784 ashik.ali 54
	@RequestMapping(value = "/createWarehouse", method = RequestMethod.GET)
55
	public String createWarehouse(HttpServletRequest request, Model model) {
56
		model.addAttribute("stateNames", Utils.getAllStateNames());
57
		return "create-warehouse";
58
	}
59
 
60
	@RequestMapping(value = "/createWarehouse", method = RequestMethod.POST)
61
	public String createWarehouse(HttpServletRequest request, @RequestBody CreateWarehouseRequest createWarehouseRequest, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
62
		LOGGER.info("Request Received at url {} with body {}", request.getRequestURI(), createWarehouseRequest);
63
		warehouseService.createWarehouse(createWarehouseRequest);
64
		List<Warehouse> warehouses = warehouseRepository.selectAll(offset, limit);
65
		long size = warehouseRepository.selectAllCount();
66
		model.addAttribute("warehouses", warehouses);
67
		model.addAttribute("start", offset + 1);
68
		model.addAttribute("size", size);
69
		if (warehouses.size() < limit){
70
			model.addAttribute("end", offset + warehouses.size());
71
		}else{
72
			model.addAttribute("end", offset + limit);
73
		}
74
		return "warehouses";
75
	}
76
 
77
	@RequestMapping(value = "/getWarehouses", method = RequestMethod.GET)
78
	public String getWarehouses(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
79
		List<Warehouse> warehouses = warehouseRepository.selectAll(offset, limit);
80
		long size = warehouseRepository.selectAllCount();
81
		model.addAttribute("warehouses", warehouses);
82
		model.addAttribute("start", offset + 1);
83
		model.addAttribute("size", size);
84
		if (warehouses.size() < limit){
85
			model.addAttribute("end", offset + warehouses.size());
86
		}else{
87
			model.addAttribute("end", offset + limit);
88
		}
89
		return "warehouses";
90
	}
91
 
92
	@RequestMapping(value = "/getPaginatedWarehouses", method = RequestMethod.GET)
93
	public String getPaginatedWarehouses(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue = "10") int limit, Model model) throws ProfitMandiBusinessException{
94
		List<Warehouse> warehouses = warehouseRepository.selectAll(offset, limit);
95
		model.addAttribute("warehouses", warehouses);
96
		return "warehouses-paginated";
97
	}
98
 
23881 ashik.ali 99
	@RequestMapping(value = "/getAddRemoveWarehouse", method = RequestMethod.GET)
100
	public String getAddRemoveWarehouse(HttpServletRequest request) {
101
		return "add-remove-warehouse";
102
	}
103
 
104
	@RequestMapping(value = "/userWarehouses", method = RequestMethod.GET)
105
	public String userWarehouses(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.EMAIL_ID_OR_MOBILE_NUMBER) String emailIdOrMobileNumber, Model model)  throws Exception{
106
		User user = userRepository.selectByEmailIdOrMobileNumber(emailIdOrMobileNumber);
107
		int retailerId = userAccountRepository.selectRetailerIdByUserId(user.getId());
108
		List<Integer> warehouseIds = userWarehouseRepository.selectWarehouseIdsByUserId(retailerId);
109
		List<Warehouse> warehouses = warehouseRepository.selectAll();
110
		model.addAttribute("userWarehouseIds", warehouseIds);
111
		model.addAttribute("warehouses", warehouses);
112
		return "user-warehouses";
113
	}
114
 
115
	@RequestMapping(value = "/addRemoveWarehouses", method = RequestMethod.POST)
116
	public String addRemoveRoles(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.EMAIL_ID_OR_MOBILE_NUMBER) String emailIdOrMobileNumber, @RequestBody List<Integer> warehouseIds, Model model)  throws Exception{
117
		warehouseService.addRemoveWarehouses(emailIdOrMobileNumber, new HashSet<>(warehouseIds));
118
		return "add-remove-warehouse";
119
	}
120
 
23784 ashik.ali 121
}