Subversion Repositories SmartDukaan

Rev

Rev 23886 | Rev 24106 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21577 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
22486 ashik.ali 3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
23886 amit.gupta 6
import java.time.LocalDateTime;
21577 ashik.ali 7
import java.util.List;
21654 ashik.ali 8
import java.util.Map;
21577 ashik.ali 9
 
10
import javax.servlet.http.HttpServletRequest;
21987 kshitij.so 11
import javax.servlet.http.HttpServletResponse;
21577 ashik.ali 12
 
23886 amit.gupta 13
import org.apache.logging.log4j.LogManager;
23568 govind 14
import org.apache.logging.log4j.Logger;
21577 ashik.ali 15
import org.springframework.beans.factory.annotation.Autowired;
23784 ashik.ali 16
import org.springframework.beans.factory.annotation.Qualifier;
21987 kshitij.so 17
import org.springframework.beans.factory.annotation.Value;
22486 ashik.ali 18
import org.springframework.core.io.InputStreamResource;
23886 amit.gupta 19
import org.springframework.format.annotation.DateTimeFormat;
20
import org.springframework.format.annotation.DateTimeFormat.ISO;
22486 ashik.ali 21
import org.springframework.http.HttpHeaders;
22
import org.springframework.http.HttpStatus;
22472 ashik.ali 23
import org.springframework.http.ResponseEntity;
21577 ashik.ali 24
import org.springframework.stereotype.Controller;
21654 ashik.ali 25
import org.springframework.transaction.annotation.Transactional;
21577 ashik.ali 26
import org.springframework.ui.Model;
22472 ashik.ali 27
import org.springframework.web.bind.annotation.RequestBody;
21577 ashik.ali 28
import org.springframework.web.bind.annotation.RequestMapping;
22472 ashik.ali 29
import org.springframework.web.bind.annotation.RequestMethod;
21577 ashik.ali 30
import org.springframework.web.bind.annotation.RequestParam;
31
 
21987 kshitij.so 32
import com.google.gson.Gson;
21577 ashik.ali 33
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
21612 ashik.ali 34
import com.spice.profitmandi.common.model.CustomCurrentInventorySnapshot;
22472 ashik.ali 35
import com.spice.profitmandi.common.model.InventoryItemAgingModel;
21577 ashik.ali 36
import com.spice.profitmandi.common.model.ProfitMandiConstants;
22472 ashik.ali 37
import com.spice.profitmandi.common.util.ExcelUtils;
21987 kshitij.so 38
import com.spice.profitmandi.common.util.Utils;
22927 ashik.ali 39
import com.spice.profitmandi.service.inventory.InventoryService;
22139 amit.gupta 40
import com.spice.profitmandi.web.model.LoginDetails;
22069 ashik.ali 41
import com.spice.profitmandi.web.util.CookiesProcessor;
21577 ashik.ali 42
 
43
@Controller
22037 amit.gupta 44
@Transactional(rollbackFor=Throwable.class)
21577 ashik.ali 45
public class InventoryController {
21987 kshitij.so 46
 
23568 govind 47
	private static final Logger LOGGER = LogManager.getLogger(InventoryController.class);
21987 kshitij.so 48
 
21577 ashik.ali 49
	@Autowired
22927 ashik.ali 50
	private CookiesProcessor cookiesProcessor;
21577 ashik.ali 51
 
22354 ashik.ali 52
	@Autowired
23784 ashik.ali 53
	@Qualifier("fofoInventoryService")
22927 ashik.ali 54
	private InventoryService inventoryService;
23786 amit.gupta 55
 
21987 kshitij.so 56
	@Value("${saholic.api.host}")
57
	private String host;
23786 amit.gupta 58
 
21987 kshitij.so 59
	@Value("${saholic.api.port}")
60
	private int port;
23786 amit.gupta 61
 
21987 kshitij.so 62
	@Value("${saholic.api.webapp}")
63
	private String webapp;
64
 
23786 amit.gupta 65
	@RequestMapping(value = "/getCurrentInventorySnapshot")
66
	public String getCurrentAvailability(HttpServletRequest request,
67
			@RequestParam(name = "offset", defaultValue = "0") int offset,
68
			@RequestParam(name = "limit", defaultValue = "10") int limit,
69
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, 
70
			Model model)
71
			throws ProfitMandiBusinessException {
22927 ashik.ali 72
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 73
		Map<String, Object> map = inventoryService.getCurrentInventorySnapshot(loginDetails.getFofoId(), offset, limit,
74
				searchTerm);
22927 ashik.ali 75
		model.addAllAttributes(map);
21987 kshitij.so 76
		return "inventory-snapshot";
21612 ashik.ali 77
	}
21987 kshitij.so 78
 
23786 amit.gupta 79
	@RequestMapping(value = "/getBadInventorySnapshot")
80
	public String getBadAvailability(HttpServletRequest request,
81
			@RequestParam(name = "offset", defaultValue = "0") int offset,
82
			@RequestParam(name = "limit", defaultValue = "10") int limit,
83
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
84
			throws ProfitMandiBusinessException {
24052 amit.gupta 85
		if(searchTerm==null) {
86
			searchTerm="";
87
		}
22927 ashik.ali 88
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 89
		Map<String, Object> map = inventoryService.getBadInventorySnapshot(loginDetails.getFofoId(), offset, limit,
90
				searchTerm);
22927 ashik.ali 91
		model.addAllAttributes(map);
21987 kshitij.so 92
		return "bad-inventory-snapshot";
93
	}
94
 
23786 amit.gupta 95
	@RequestMapping(value = "/getPaginatedCurrentInventorySnapshot")
96
	public String getPaginatedCurrentInventorySnapshot(HttpServletRequest request,
97
			@RequestParam(name = "offset", defaultValue = "0") int offset,
98
			@RequestParam(name = "limit", defaultValue = "10") int limit,
99
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
100
			throws ProfitMandiBusinessException {
24052 amit.gupta 101
		if(searchTerm==null) {
102
			searchTerm="";
103
		}
22927 ashik.ali 104
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 105
		Map<String, Object> map = inventoryService.getPaginatedCurrentInventorySnapshot(loginDetails.getFofoId(),
106
				offset, limit, searchTerm);
22927 ashik.ali 107
		model.addAllAttributes(map);
21987 kshitij.so 108
		return "inventory-snapshot-paginated";
109
	}
23786 amit.gupta 110
 
111
	@RequestMapping(value = "/getCatalog")
112
	public String getCatalog(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
113
			@RequestParam(name = "limit", defaultValue = "10") int limit,
114
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
115
			throws ProfitMandiBusinessException {
22927 ashik.ali 116
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24052 amit.gupta 117
		if(searchTerm==null) {
118
			searchTerm="";
119
		}
22927 ashik.ali 120
		Map<String, Object> map = inventoryService.getCatalog(loginDetails.getFofoId(), offset, limit, searchTerm);
121
		model.addAllAttributes(map);
21987 kshitij.so 122
		return "catalog";
123
	}
23786 amit.gupta 124
 
125
	@RequestMapping(value = "/getPaginatedCatalog")
126
	public String getCatalogPaginated(HttpServletRequest request,
127
			@RequestParam(name = "offset", defaultValue = "0") int offset,
128
			@RequestParam(name = "limit", defaultValue = "10") int limit,
129
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
130
			throws ProfitMandiBusinessException {
22927 ashik.ali 131
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
24052 amit.gupta 132
		if(searchTerm==null) {
133
			searchTerm="";
134
		}
23786 amit.gupta 135
		Map<String, Object> map = inventoryService.getPaginatedCatalog(loginDetails.getFofoId(), offset, limit,
136
				searchTerm);
22927 ashik.ali 137
		model.addAllAttributes(map);
21987 kshitij.so 138
		return "catalog-paginated";
139
	}
140
 
23786 amit.gupta 141
	@RequestMapping(value = "/checkItemAvailability")
142
	public String getItemAvailability(HttpServletRequest request,
143
			@RequestParam(name = ProfitMandiConstants.ITEM_ID) int itemId, Model model)
144
			throws ProfitMandiBusinessException {
22927 ashik.ali 145
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 146
		CustomCurrentInventorySnapshot customCurrentInventorySnapshot = inventoryService.checkItemAvailability(itemId,
147
				loginDetails.getFofoId());
148
		customCurrentInventorySnapshot
149
				.setIconUrl(Utils.getIconUrl(customCurrentInventorySnapshot.getCatalogItemId(), host, port, webapp));
22927 ashik.ali 150
		model.addAttribute("currentInventorySnapshot", new Gson().toJson(customCurrentInventorySnapshot));
151
		return "current-item-availability";
23786 amit.gupta 152
 
21577 ashik.ali 153
	}
23786 amit.gupta 154
 
23192 ashik.ali 155
	@RequestMapping(value = "/cart", method = RequestMethod.POST)
23786 amit.gupta 156
	public String addToCart(HttpServletRequest request, @RequestParam(name = "cartData") String cartData, Model model)
157
			throws ProfitMandiBusinessException {
22927 ashik.ali 158
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 159
 
22927 ashik.ali 160
		Map<String, Object> map = inventoryService.addToCart(cartData, loginDetails.getFofoId());
161
		model.addAllAttributes(map);
21987 kshitij.so 162
		return "cart";
163
	}
23786 amit.gupta 164
 
23192 ashik.ali 165
	@RequestMapping(value = "/validate-cart", method = RequestMethod.POST)
23786 amit.gupta 166
	public String validateCart(HttpServletRequest request, HttpServletResponse response,
167
			@RequestParam(name = "cartData") String cartData, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 168
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 169
 
22927 ashik.ali 170
		Map<String, Object> map = inventoryService.validateCart(cartData, loginDetails.getFofoId());
171
		model.addAllAttributes(map);
21987 kshitij.so 172
		return "validate-cart";
173
	}
174
 
23786 amit.gupta 175
	@RequestMapping(value = "/grnHistory")
176
	public String getGrnHistory(HttpServletRequest request,
23886 amit.gupta 177
			@RequestParam(required = false) LocalDateTime startTime,
178
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 179
			@RequestParam(name = "offset", defaultValue = "0") int offset,
180
			@RequestParam(name = "limit", defaultValue = "10") int limit,
181
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
182
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
183
			throws ProfitMandiBusinessException {
22927 ashik.ali 184
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23886 amit.gupta 185
		Map<String, Object> map = inventoryService.getGrnHistory(loginDetails.getFofoId(), startTime,
186
				endTime, offset, limit, purchaseReference, searchType);
22927 ashik.ali 187
		model.addAllAttributes(map);
21987 kshitij.so 188
		return "grn-history";
21636 ashik.ali 189
	}
21987 kshitij.so 190
 
23786 amit.gupta 191
	@RequestMapping(value = "/getPaginatedGrnHistory")
192
	public String getPaginatedGrnHistory(HttpServletRequest request,
23886 amit.gupta 193
			@RequestParam(required = false) LocalDateTime startTime,
194
			@RequestParam(required = false) LocalDateTime endTime,
23786 amit.gupta 195
			@RequestParam(name = "offset", defaultValue = "0") int offset,
196
			@RequestParam(name = "limit", defaultValue = "10") int limit,
197
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE, defaultValue = "") String purchaseReference,
198
			@RequestParam(name = "searchType", defaultValue = "") String searchType, Model model)
199
			throws ProfitMandiBusinessException {
22927 ashik.ali 200
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23886 amit.gupta 201
		Map<String, Object> map = inventoryService.getPaginatedGrnHistory(loginDetails.getFofoId(), startTime,
202
				endTime, offset, limit);
22927 ashik.ali 203
		model.addAllAttributes(map);
21987 kshitij.so 204
		return "grn-history-paginated";
205
	}
206
 
23786 amit.gupta 207
	@RequestMapping(value = "/grnHistoryDetailByPurchaseId")
208
	public String grnHistoryByPurchaseId(HttpServletRequest request,
209
			@RequestParam(name = ProfitMandiConstants.PURCHASE_ID) int purchaseId, Model model)
210
			throws ProfitMandiBusinessException {
22927 ashik.ali 211
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 212
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseId, host, port,
213
				webapp);
22927 ashik.ali 214
		model.addAllAttributes(map);
21987 kshitij.so 215
		return "grn-details";
21636 ashik.ali 216
	}
21987 kshitij.so 217
 
23786 amit.gupta 218
	@RequestMapping(value = "/grnHistoryDetailByPurchaseReference")
219
	public String grnHistoryByPurchaseReference(HttpServletRequest request,
220
			@RequestParam(name = ProfitMandiConstants.PURCHASE_REFERENCE) String purchaseReference, Model model)
221
			throws ProfitMandiBusinessException {
22927 ashik.ali 222
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 223
		Map<String, Object> map = inventoryService.getGrnHistoryDetail(loginDetails.getFofoId(), purchaseReference,
224
				host, port, webapp);
22927 ashik.ali 225
		model.addAllAttributes(map);
21987 kshitij.so 226
		return "grn-details";
21654 ashik.ali 227
	}
23786 amit.gupta 228
 
22472 ashik.ali 229
	@RequestMapping(value = "/getInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 230
	public String getInventoryItemAgingByInterval(HttpServletRequest request, @RequestBody List<Integer> intervals,
231
			Model model, @RequestParam(name = "searchContent", defaultValue = "") String searchContent,
232
			@RequestParam(name = "offset", defaultValue = "0") int offset,
233
			@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
22927 ashik.ali 234
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 235
		Map<String, Object> map = inventoryService.getPaginatedItemAgingByInterval(loginDetails.getFofoId(), intervals,
236
				searchContent, offset, limit);
22927 ashik.ali 237
		model.addAllAttributes(map);
22523 ashik.ali 238
		return "item-aging";
239
	}
23786 amit.gupta 240
 
22523 ashik.ali 241
	@RequestMapping(value = "/downloadInventoryItemAgingByInterval", method = RequestMethod.POST)
23786 amit.gupta 242
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request,
243
			@RequestBody List<Integer> intervals, Model model) throws ProfitMandiBusinessException {
22927 ashik.ali 244
		LOGGER.info("Request received at url{} with body {}", request.getRequestURI(), intervals);
245
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
23786 amit.gupta 246
 
247
		List<InventoryItemAgingModel> inventoryItemAgingModels = inventoryService
248
				.getItemAgingByInterval(fofoDetails.getFofoId(), intervals);
249
 
22486 ashik.ali 250
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
251
		ExcelUtils.writeInventoryItemAgingModels(inventoryItemAgingModels, intervals, byteArrayOutputStream);
23786 amit.gupta 252
 
253
		final HttpHeaders headers = new HttpHeaders();
254
		// private static final String CONTENT_TYPE_XLSX =
255
		// "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
256
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
257
		// headers.set("Content-Type", "application/vnd.ms-excel");
22486 ashik.ali 258
		headers.set("Content-disposition", "inline; filename=InventoryItemAging.xlsx");
23786 amit.gupta 259
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
260
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
261
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
262
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
263
 
264
		// return responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
22472 ashik.ali 265
	}
21987 kshitij.so 266
 
21577 ashik.ali 267
}