Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
22981 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23494 ashik.ali 3
import java.io.File;
4
import java.io.FileInputStream;
5
import java.io.FileNotFoundException;
28710 amit.gupta 6
import java.time.Instant;
24349 amit.gupta 7
import java.time.LocalDate;
24159 tejbeer 8
import java.time.LocalDateTime;
28272 tejbeer 9
import java.util.AbstractMap;
24124 govind 10
import java.util.ArrayList;
25276 amit.gupta 11
import java.util.Arrays;
28710 amit.gupta 12
import java.util.Date;
24349 amit.gupta 13
import java.util.HashMap;
24124 govind 14
import java.util.List;
22981 ashik.ali 15
import java.util.Map;
24986 tejbeer 16
import java.util.Set;
24159 tejbeer 17
import java.util.stream.Collectors;
22981 ashik.ali 18
 
19
import javax.servlet.http.HttpServletRequest;
25276 amit.gupta 20
import javax.transaction.Transactional;
22981 ashik.ali 21
 
24159 tejbeer 22
import org.apache.logging.log4j.LogManager;
23955 govind 23
import org.apache.logging.log4j.Logger;
24159 tejbeer 24
import org.json.JSONObject;
22981 ashik.ali 25
import org.springframework.beans.factory.annotation.Autowired;
24159 tejbeer 26
import org.springframework.beans.factory.annotation.Qualifier;
23494 ashik.ali 27
import org.springframework.core.io.InputStreamResource;
28
import org.springframework.http.HttpHeaders;
29
import org.springframework.http.HttpStatus;
23330 ashik.ali 30
import org.springframework.http.ResponseEntity;
22981 ashik.ali 31
import org.springframework.stereotype.Controller;
32
import org.springframework.ui.Model;
24124 govind 33
import org.springframework.web.bind.annotation.GetMapping;
34
import org.springframework.web.bind.annotation.PostMapping;
23026 ashik.ali 35
import org.springframework.web.bind.annotation.RequestBody;
22981 ashik.ali 36
import org.springframework.web.bind.annotation.RequestMapping;
37
import org.springframework.web.bind.annotation.RequestMethod;
38
import org.springframework.web.bind.annotation.RequestParam;
39
 
23494 ashik.ali 40
import com.spice.profitmandi.common.enumuration.ContentType;
23955 govind 41
import com.spice.profitmandi.common.enumuration.CounterSize;
28825 tejbeer 42
import com.spice.profitmandi.common.enumuration.FofoType;
22981 ashik.ali 43
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
24123 tejbeer 44
import com.spice.profitmandi.common.model.AddLocationModel;
24124 govind 45
import com.spice.profitmandi.common.model.CustomRetailer;
22981 ashik.ali 46
import com.spice.profitmandi.common.model.ProfitMandiConstants;
24159 tejbeer 47
import com.spice.profitmandi.common.model.PromoterDetailModel;
23026 ashik.ali 48
import com.spice.profitmandi.common.model.UpdateRetailerRequest;
28024 tejbeer 49
import com.spice.profitmandi.common.util.Utils;
23330 ashik.ali 50
import com.spice.profitmandi.common.web.util.ResponseSender;
27231 tejbeer 51
import com.spice.profitmandi.dao.entity.auth.AuthUser;
28272 tejbeer 52
import com.spice.profitmandi.dao.entity.dtr.BrandLimit;
23494 ashik.ali 53
import com.spice.profitmandi.dao.entity.dtr.Document;
54
import com.spice.profitmandi.dao.entity.dtr.Retailer;
28024 tejbeer 55
import com.spice.profitmandi.dao.entity.dtr.RetailerBlockBrands;
28272 tejbeer 56
import com.spice.profitmandi.dao.entity.dtr.RetailerBrandsLimit;
23494 ashik.ali 57
import com.spice.profitmandi.dao.entity.dtr.Shop;
24124 govind 58
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
27797 tejbeer 59
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
60
import com.spice.profitmandi.dao.entity.fofo.PartnerTypeChange;
28381 tejbeer 61
import com.spice.profitmandi.dao.entity.fofo.PincodePartner;
24159 tejbeer 62
import com.spice.profitmandi.dao.entity.user.Location;
63
import com.spice.profitmandi.dao.entity.user.Promoter;
24123 tejbeer 64
import com.spice.profitmandi.dao.entity.user.User;
28825 tejbeer 65
 
27231 tejbeer 66
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
67
import com.spice.profitmandi.dao.repository.cs.CsService;
28272 tejbeer 68
import com.spice.profitmandi.dao.repository.cs.RetailerBrandsLimitService;
69
import com.spice.profitmandi.dao.repository.dtr.BrandLimitRepository;
23494 ashik.ali 70
import com.spice.profitmandi.dao.repository.dtr.DocumentRepository;
24124 govind 71
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
24159 tejbeer 72
import com.spice.profitmandi.dao.repository.dtr.Mongo;
28024 tejbeer 73
import com.spice.profitmandi.dao.repository.dtr.RetailerBlockBrandsRepository;
28272 tejbeer 74
import com.spice.profitmandi.dao.repository.dtr.RetailerBrandsLimitRepository;
23494 ashik.ali 75
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
76
import com.spice.profitmandi.dao.repository.dtr.ShopRepository;
27797 tejbeer 77
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeRepository;
78
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
28381 tejbeer 79
import com.spice.profitmandi.dao.repository.fofo.PincodePartnerRepository;
24123 tejbeer 80
import com.spice.profitmandi.dao.repository.user.LocationRepository;
24159 tejbeer 81
import com.spice.profitmandi.dao.repository.user.PromoterRepository;
24123 tejbeer 82
import com.spice.profitmandi.dao.repository.user.UserRepository;
24349 amit.gupta 83
import com.spice.profitmandi.service.PartnerInvestmentService;
24159 tejbeer 84
import com.spice.profitmandi.service.inventory.InventoryService;
22981 ashik.ali 85
import com.spice.profitmandi.service.user.RetailerService;
25276 amit.gupta 86
import com.spice.profitmandi.web.model.LoginDetails;
87
import com.spice.profitmandi.web.util.CookiesProcessor;
24123 tejbeer 88
import com.spice.profitmandi.web.util.MVCResponseSender;
22981 ashik.ali 89
 
90
@Controller
25277 amit.gupta 91
@Transactional(rollbackOn = Throwable.class)
22981 ashik.ali 92
public class RetailerController {
93
 
23568 govind 94
	private static final Logger LOGGER = LogManager.getLogger(RetailerController.class);
24124 govind 95
 
22981 ashik.ali 96
	@Autowired
97
	private RetailerService retailerService;
24124 govind 98
 
23330 ashik.ali 99
	@Autowired
28832 tejbeer 100
	private RetailerRepository retailerRepository;
101
 
23494 ashik.ali 102
	@Autowired
28381 tejbeer 103
	private PincodePartnerRepository PincodePartnerRepository;
28832 tejbeer 104
 
28381 tejbeer 105
	@Autowired
28272 tejbeer 106
	private BrandLimitRepository brandLimitRepository;
107
 
108
	@Autowired
109
	private RetailerBrandsLimitService retailerBrandsLimitService;
110
 
111
	@Autowired
112
	private RetailerBrandsLimitRepository retailerBrandsLimitRepository;
113
 
114
	@Autowired
23494 ashik.ali 115
	private ShopRepository shopRepository;
24124 govind 116
 
23494 ashik.ali 117
	@Autowired
28024 tejbeer 118
	private RetailerBlockBrandsRepository retailerBlockBrandsRepository;
119
 
120
	@Autowired
24124 govind 121
	private FofoStoreRepository fofoStoreRepository;
122
 
123
	@Autowired
23494 ashik.ali 124
	private DocumentRepository documentRepository;
24124 govind 125
 
23494 ashik.ali 126
	@Autowired
25276 amit.gupta 127
	private CookiesProcessor cookiesProcessor;
128
 
129
	@Autowired
24159 tejbeer 130
	@Qualifier("userUserRepository")
24123 tejbeer 131
	private UserRepository userRepository;
24124 govind 132
 
24123 tejbeer 133
	@Autowired
27231 tejbeer 134
	private AuthRepository authRepository;
135
 
136
	@Autowired
137
	private CsService csService;
138
 
139
	@Autowired
24123 tejbeer 140
	private LocationRepository locationRepository;
24124 govind 141
 
24123 tejbeer 142
	@Autowired
23330 ashik.ali 143
	private ResponseSender<?> responseSender;
24124 govind 144
 
24123 tejbeer 145
	@Autowired
146
	private MVCResponseSender mvcResponseSender;
24124 govind 147
 
24159 tejbeer 148
	@Autowired
149
	private InventoryService inventoryService;
150
 
151
	@Autowired
152
	private PromoterRepository promoterRepository;
153
 
154
	@Autowired
24349 amit.gupta 155
	private PartnerInvestmentService partnerInvestmentService;
156
 
157
	@Autowired
24159 tejbeer 158
	private Mongo mongoClient;
159
 
27797 tejbeer 160
	@Autowired
161
	private PartnerTypeChangeService partnerTypeChangeService;
162
 
163
	@Autowired
164
	private PartnerTypeChangeRepository partnerTypeChangeRepository;
165
 
23784 ashik.ali 166
	@RequestMapping(value = "/retailerDetails", method = RequestMethod.GET)
24124 govind 167
	public String retailerInfoByEmailIdOrMobileNumber(HttpServletRequest request,
168
			@RequestParam(name = ProfitMandiConstants.EMAIL_ID_OR_MOBILE_NUMBER) String emailIdOrMobileNumber,
169
			Model model) throws ProfitMandiBusinessException {
170
		LOGGER.info("Request Received at url {} with emailIdOrMobileNumber {}", request.getRequestURI(),
171
				emailIdOrMobileNumber);
28071 tejbeer 172
 
173
		Map<String, Object> map = retailerService.getByEmailIdOrMobileNumber(emailIdOrMobileNumber);
174
 
26771 amit.gupta 175
		model.addAllAttributes(map);
28071 tejbeer 176
 
23955 govind 177
		model.addAttribute("counterSizes", CounterSize.values());
26209 tejbeer 178
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
28825 tejbeer 179
 
26209 tejbeer 180
		LOGGER.info("warehouseMap", warehouseMap);
181
		model.addAttribute("warehouses", warehouseMap);
28825 tejbeer 182
		model.addAttribute("fofoTypes", FofoType.values());
26771 amit.gupta 183
		if (map.containsKey("retailer")) {
184
			Retailer retailer = (Retailer) map.get("retailer");
185
			User user = userRepository.selectById(retailer.getId());
186
			if (user.getLocation() != null) {
187
				Location location = locationRepository.selectById(user.getLocation());
188
				model.addAttribute("locationdetail", location);
189
				LOGGER.info("location" + location);
190
			}
191
		}
22981 ashik.ali 192
		return "retailer-details";
193
	}
24124 govind 194
 
23026 ashik.ali 195
	@RequestMapping(value = "/retailerDetails", method = RequestMethod.PUT)
24124 govind 196
	public String updateRetailerDetails(HttpServletRequest request,
197
			@RequestBody UpdateRetailerRequest updateRetailerRequest, Model model) throws ProfitMandiBusinessException {
23026 ashik.ali 198
		LOGGER.info("Request Received at url {} with body {}", request.getRequestURI(), updateRetailerRequest);
199
		Map<String, Object> map = retailerService.updateRetailerDetails(updateRetailerRequest);
28071 tejbeer 200
 
23026 ashik.ali 201
		model.addAllAttributes(map);
23955 govind 202
		model.addAttribute("counterSizes", CounterSize.values());
26209 tejbeer 203
		Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
204
		LOGGER.info("warehouseMap", warehouseMap);
205
		model.addAttribute("warehouses", warehouseMap);
28832 tejbeer 206
		model.addAttribute("fofoTypes", FofoType.values());
23026 ashik.ali 207
		return "retailer-details";
208
	}
22981 ashik.ali 209
 
210
	@RequestMapping(value = "/retailerInfo", method = RequestMethod.GET)
24124 govind 211
	public String retailerInfo(HttpServletRequest request) throws Exception {
22981 ashik.ali 212
		return "retailer-info";
213
	}
24124 govind 214
 
23330 ashik.ali 215
	@RequestMapping(value = "/district/all/stateName", method = RequestMethod.GET)
24124 govind 216
	public ResponseEntity<?> getAllDistrict(@RequestParam(name = "stateName") String stateName) {
23330 ashik.ali 217
		return responseSender.ok(retailerService.getAllDistrictMaster(stateName));
218
	}
24124 govind 219
 
23494 ashik.ali 220
	@RequestMapping(value = "/retailerDocument/documentId", method = RequestMethod.GET)
24124 govind 221
	public ResponseEntity<?> retailerDocumentById(HttpServletRequest request,
222
			@RequestParam(name = ProfitMandiConstants.DOCUMENT_ID) int documentId,
223
			@RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId) throws ProfitMandiBusinessException {
23494 ashik.ali 224
		Document document = documentRepository.selectById(documentId);
23499 ashik.ali 225
		Retailer retailer = retailerRepository.selectById(retailerId);
24124 govind 226
 
227
		if (retailer.getDocumentId() == null) {
23494 ashik.ali 228
			throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, retailer.getId(), "RTLR_1012");
229
		}
24124 govind 230
		if (retailer.getDocumentId() != documentId) {
23494 ashik.ali 231
			throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, documentId, "RTLR_1014");
232
		}
233
		return responseSender.ok(document);
234
	}
24124 govind 235
 
23494 ashik.ali 236
	@RequestMapping(value = "/retailerDocument/download", method = RequestMethod.GET)
24124 govind 237
	public ResponseEntity<?> downloadRetailerDocument(HttpServletRequest request,
238
			@RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId, Model model)
239
			throws ProfitMandiBusinessException {
240
 
23499 ashik.ali 241
		Retailer retailer = retailerRepository.selectById(retailerId);
24124 govind 242
 
243
		if (retailer.getDocumentId() == null) {
23494 ashik.ali 244
			throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, retailer.getId(), "RTLR_1012");
245
		}
24124 govind 246
 
23494 ashik.ali 247
		Document document = documentRepository.selectById(retailer.getDocumentId());
24124 govind 248
 
23494 ashik.ali 249
		FileInputStream file = null;
250
		try {
251
			file = new FileInputStream(document.getPath() + File.separator + document.getName());
252
		} catch (FileNotFoundException e) {
253
			LOGGER.error("Retailer Document file not found : ", e);
254
			throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, document.getId(), "RTLR_1013");
255
		}
24159 tejbeer 256
		// ByteArrayOutputStream byteArrayOutputStream = new
257
		// ByteArrayOutputStream();
24124 govind 258
		// ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
259
 
260
		final HttpHeaders headers = new HttpHeaders();
23494 ashik.ali 261
		String contentType = "";
24124 govind 262
		if (document.getContentType() == ContentType.JPEG) {
23494 ashik.ali 263
			contentType = "image/jpeg";
24124 govind 264
		} else if (document.getContentType() == ContentType.PNG) {
23494 ashik.ali 265
			contentType = "image/png";
24124 govind 266
		} else if (document.getContentType() == ContentType.PDF) {
23494 ashik.ali 267
			contentType = "application/pdf";
268
		}
24124 govind 269
		headers.set("Content-Type", contentType);
270
		headers.set("Content-disposition", "inline; filename=" + document.getName());
271
		headers.setContentLength(document.getSize());
272
		final InputStreamResource inputStreamResource = new InputStreamResource(file);
273
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
274
 
24159 tejbeer 275
		// return
276
		// responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
23494 ashik.ali 277
	}
24124 govind 278
 
23494 ashik.ali 279
	@RequestMapping(value = "/retailerShopDocument/shopId", method = RequestMethod.GET)
24124 govind 280
	public ResponseEntity<?> retailerShopDocumentById(HttpServletRequest request,
281
			@RequestParam(name = ProfitMandiConstants.SHOP_ID) int shopId,
282
			@RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId) throws ProfitMandiBusinessException {
23494 ashik.ali 283
		Shop shop = shopRepository.selectById(shopId);
24124 govind 284
 
285
		if (shop.getRetailerId() != retailerId) {
23494 ashik.ali 286
			throw new ProfitMandiBusinessException(ProfitMandiConstants.SHOP_ID, shop.getId(), "SHP_1004");
287
		}
24124 govind 288
 
289
		if (shop.getDocumentId() == null) {
23494 ashik.ali 290
			throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, shop.getId(), "SHP_1005");
291
		}
24124 govind 292
 
23494 ashik.ali 293
		Document document = documentRepository.selectById(shop.getDocumentId());
294
		return responseSender.ok(document);
295
	}
24124 govind 296
 
23494 ashik.ali 297
	@RequestMapping(value = "/retailerShopDocument/download", method = RequestMethod.GET)
24124 govind 298
	public ResponseEntity<?> downloadRetailerShopDocument(HttpServletRequest request,
299
			@RequestParam(name = ProfitMandiConstants.SHOP_ID) int shopId,
300
			@RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId, Model model)
301
			throws ProfitMandiBusinessException {
302
 
23494 ashik.ali 303
		Shop shop = shopRepository.selectById(shopId);
24124 govind 304
 
305
		if (shop.getRetailerId() != retailerId) {
23494 ashik.ali 306
			throw new ProfitMandiBusinessException(ProfitMandiConstants.SHOP_ID, shop.getId(), "SHP_1004");
307
		}
24124 govind 308
 
309
		if (shop.getDocumentId() == null) {
23494 ashik.ali 310
			throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, shop.getId(), "SHP_1005");
311
		}
24124 govind 312
 
23494 ashik.ali 313
		Document document = documentRepository.selectById(shop.getDocumentId());
24124 govind 314
 
23494 ashik.ali 315
		FileInputStream file = null;
316
		try {
317
			file = new FileInputStream(document.getPath() + File.separator + document.getName());
318
		} catch (FileNotFoundException e) {
319
			LOGGER.error("Retailer Document file not found : ", e);
320
			throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, document.getId(), "RTLR_1013");
321
		}
24159 tejbeer 322
		// ByteArrayOutputStream byteArrayOutputStream = new
323
		// ByteArrayOutputStream();
24124 govind 324
		// ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
325
 
326
		final HttpHeaders headers = new HttpHeaders();
23494 ashik.ali 327
		String contentType = "";
24124 govind 328
		if (document.getContentType() == ContentType.JPEG) {
23494 ashik.ali 329
			contentType = "image/jpeg";
24124 govind 330
		} else if (document.getContentType() == ContentType.PNG) {
23494 ashik.ali 331
			contentType = "image/png";
24124 govind 332
		} else if (document.getContentType() == ContentType.PDF) {
23494 ashik.ali 333
			contentType = "application/pdf";
334
		}
24124 govind 335
		headers.set("Content-Type", contentType);
336
		headers.set("Content-disposition", "inline; filename=" + document.getName());
337
		headers.setContentLength(document.getSize());
338
		final InputStreamResource inputStreamResource = new InputStreamResource(file);
339
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
340
 
24159 tejbeer 341
		// return
342
		// responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
23494 ashik.ali 343
	}
24124 govind 344
 
345
	@GetMapping(value = "/getAllStores")
346
	public String getAllStores(HttpServletRequest request, Model model) {
347
 
25276 amit.gupta 348
		List<FofoStore> fofoStores = fofoStoreRepository.selectAll().stream().filter(x -> x.isActive())
349
				.collect(Collectors.toList());
24349 amit.gupta 350
		Map<Integer, Boolean> investments = new HashMap<>();
24124 govind 351
 
24349 amit.gupta 352
		for (FofoStore fofoStore : fofoStores) {
353
			boolean isOk = false;
354
			if (fofoStore.getGraceDate() != null && fofoStore.getGraceDate().isAfter(LocalDate.now())) {
355
				isOk = true;
356
			} else {
357
				try {
25276 amit.gupta 358
					isOk = partnerInvestmentService.isInvestmentOk(fofoStore.getId(), 10,
359
							ProfitMandiConstants.CUTOFF_INVESTMENT);
360
					if (fofoStore.getGraceCount() > 0) {
24349 amit.gupta 361
						fofoStore.setGraceDate(null);
362
						fofoStore.setGraceCount(0);
363
						fofoStoreRepository.persist(fofoStore);
364
					}
365
				} catch (ProfitMandiBusinessException e) {
366
				}
367
			}
368
			investments.put(fofoStore.getId(), isOk);
369
		}
24124 govind 370
 
26963 amit.gupta 371
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(false);
24124 govind 372
		model.addAttribute("fofoStores", fofoStores);
24349 amit.gupta 373
		model.addAttribute("investments", investments);
24124 govind 374
		model.addAttribute("customRetailers", customRetailers);
375
 
376
		return "store";
377
 
378
	}
379
 
27797 tejbeer 380
	@GetMapping(value = "/getPartnerCategory")
381
	public String getPartnerCategory(HttpServletRequest request, @RequestParam int fofoId, Model model) {
382
 
383
		PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fofoId, LocalDate.now());
384
		List<PartnerType> partnerTypes = partnerType.nextPartnerTypes();
385
		LOGGER.info("partnerType" + partnerTypes);
386
		model.addAttribute("partnerTypes", partnerTypes);
387
		model.addAttribute("fofoId", fofoId);
388
		return "partner-category";
389
	}
390
 
391
	@PostMapping(value = "/updatePartnerCategory")
392
	public String updatePartnerCategory(HttpServletRequest request, @RequestParam(name = "fofoId") int fofoId,
393
			@RequestParam(name = "partnerType") PartnerType partnerType, Model model) throws Exception {
394
 
395
		PartnerTypeChange ptc = new PartnerTypeChange();
396
		ptc.setFofoId(fofoId);
397
		ptc.setPartnerType(partnerType);
398
		ptc.setCreateTimestamp(LocalDate.now().atStartOfDay().plusDays(1));
399
		partnerTypeChangeRepository.persist(ptc);
400
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
401
 
402
		return "response";
403
	}
404
 
24349 amit.gupta 405
	@GetMapping(value = "/partners")
406
	public String getStoreName(HttpServletRequest request, Model model, @RequestParam String query) throws Exception {
407
		model.addAttribute("response", mvcResponseSender
26963 amit.gupta 408
				.createResponseString(retailerService.getFofoRetailers(false).values().stream().filter(x -> {
24349 amit.gupta 409
					return x.getDisplayName().toLowerCase().matches(".*?" + query.toLowerCase() + ".*?");
410
				}).collect(Collectors.toList())));
411
		return "response";
412
	}
413
 
24124 govind 414
	@PostMapping(value = "/deactivateStore")
415
	public String deActivateStore(HttpServletRequest request,
416
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
417
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
25276 amit.gupta 418
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
27231 tejbeer 419
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com")
26131 tejbeer 420
				.contains(loginDetails.getEmailId())) {
421
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
422
					"You are not authorise to deactivate retailer");
25276 amit.gupta 423
		}
24843 govind 424
		fofoStore.setActive(false);
425
		fofoStoreRepository.persist(fofoStore);
24124 govind 426
		LOGGER.info("inserted into InActiveFofoStore successfully");
427
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
428
		return "response";
429
	}
28825 tejbeer 430
 
28710 amit.gupta 431
	@PostMapping(value = "/activateStoreForever")
432
	public String activateStoreForever(HttpServletRequest request,
433
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
434
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
435
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
28825 tejbeer 436
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com",
437
				"manish.tiwari@smartdukaan.com").contains(loginDetails.getEmailId())) {
28710 amit.gupta 438
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
439
					"You are not authorise to activate retailer");
440
		}
441
		fofoStore.setActive(true);
442
		fofoStoreRepository.persist(fofoStore);
443
		LOGGER.info("inserted into ActiveFofoStore successfully");
444
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
445
		return "response";
446
	}
28825 tejbeer 447
 
28710 amit.gupta 448
	@PostMapping(value = "/activateStoreTemporary")
449
	public String activateStoreTemporary(HttpServletRequest request,
450
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId,
28825 tejbeer 451
			@RequestParam(name = "days", required = true) int days, Model model) throws Exception {
452
 
28710 amit.gupta 453
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
454
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
28825 tejbeer 455
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com",
456
				"manish.tiwari@smartdukaan.com").contains(loginDetails.getEmailId())) {
28710 amit.gupta 457
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
458
					"You are not authorise to deactivate retailer");
459
		}
28825 tejbeer 460
 
461
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
462
 
28710 amit.gupta 463
		LocalDateTime EndDate = currentDate.plusDays(days);
464
		fofoStore.setActiveTimeStamp(EndDate);
28825 tejbeer 465
 
466
		LOGGER.info("EndDate" + EndDate);
467
		LOGGER.info("getActiveTimeStamp" + fofoStore.getActiveTimeStamp());
468
 
469
		if (currentDate.isBefore(fofoStore.getActiveTimeStamp())) {
470
 
471
			fofoStore.setActive(true);
472
			fofoStoreRepository.persist(fofoStore);
473
			LOGGER.info("inserted into InActiveFofoStore successfully");
474
 
28710 amit.gupta 475
		}
28825 tejbeer 476
 
28710 amit.gupta 477
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
478
		return "response";
479
	}
25276 amit.gupta 480
 
481
	@GetMapping(value = "/getAllInactiveStores")
482
	public String getInactiveStores(HttpServletRequest request, Model model) {
483
		List<FofoStore> inActiveFofoStores = fofoStoreRepository.selectInActiveStore();
484
		Map<Integer, CustomRetailer> customRetailers = retailerService
485
				.getFofoRetailers(inActiveFofoStores.stream().map(x -> x.getId()).collect(Collectors.toList()));
24680 govind 486
		model.addAttribute("inActiveFofoStores", inActiveFofoStores);
487
		model.addAttribute("customRetailers", customRetailers);
488
		return "inactive-stores";
489
	}
25276 amit.gupta 490
 
491
	// Extend billing for 2 days
24349 amit.gupta 492
	@PostMapping(value = "/extendBilling")
493
	public String extendBilling(HttpServletRequest request,
494
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
495
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
25276 amit.gupta 496
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
27231 tejbeer 497
		if (Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "prakash.rai@smartdukaan.com",
498
				"amit.gupta@smartdukaan.com").contains(loginDetails.getEmailId())) {
25276 amit.gupta 499
			fofoStore.setGraceDate(LocalDate.now().plusDays(2));
500
			fofoStore.setGraceCount(fofoStore.getGraceCount() + 1);
501
			fofoStoreRepository.persist(fofoStore);
502
			model.addAttribute("response", mvcResponseSender.createResponseString(fofoStore.getGraceCount()));
503
		} else {
26131 tejbeer 504
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
505
					"You are not authorise to extend billing");
25276 amit.gupta 506
		}
24349 amit.gupta 507
		return "response";
25276 amit.gupta 508
 
24124 govind 509
	}
510
 
24159 tejbeer 511
	@RequestMapping(value = "/getPromoterInfo", method = RequestMethod.GET)
512
	public String getPromoterInfo(HttpServletRequest request,
513
			@RequestParam(name = "offset", defaultValue = "0") int offset,
27489 tejbeer 514
			@RequestParam(name = "limit", defaultValue = "10") int limit,
515
			@RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
516
			throws Exception {
24159 tejbeer 517
		LOGGER.info("requested url : " + request.getRequestURL().toString());
518
		List<Promoter> promoterInfo = null;
519
 
520
		long size = 0;
27489 tejbeer 521
 
24159 tejbeer 522
		List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
523
				.collect(Collectors.toList());
524
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
525
		String customRetailers = JSONObject.valueToString(customRetailersMap.values());
24986 tejbeer 526
		Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
527
		brands.add("Airtel");
528
		brands.add("Vodafone");
529
		brands.add("Idea");
25276 amit.gupta 530
		LOGGER.info("brands" + brands);
24159 tejbeer 531
		model.addAttribute("customRetailers", customRetailers);
25276 amit.gupta 532
		model.addAttribute("brands", brands);
24159 tejbeer 533
 
27489 tejbeer 534
		if (fofoId != 0) {
535
			promoterInfo = promoterRepository.selectAllPromoterByFofoId(fofoId, offset, limit);
24159 tejbeer 536
 
27489 tejbeer 537
			size = promoterRepository.selectPromoterCount(fofoId);
538
 
539
		} else {
540
			promoterInfo = promoterRepository.selectAllPromoter(offset, limit);
541
 
542
			size = promoterRepository.selectAllCount();
543
 
544
		}
24159 tejbeer 545
		if (!promoterInfo.isEmpty()) {
546
			List<Integer> partnerIds = new ArrayList<>();
547
 
548
			for (Promoter promoterdetail : promoterInfo) {
549
				partnerIds.add(promoterdetail.getRetailerId());
550
			}
551
			Map<Integer, CustomRetailer> partnersMap = null;
24349 amit.gupta 552
			if (!partnerIds.equals(null)) {
24159 tejbeer 553
				LOGGER.info("partnerIds" + partnerIds);
24349 amit.gupta 554
				partnersMap = retailerService.getFofoRetailers(partnerIds);
24159 tejbeer 555
			}
24349 amit.gupta 556
 
24159 tejbeer 557
			LOGGER.info("partnerIds" + partnersMap);
558
			model.addAttribute("promoterInfo", promoterInfo);
559
			model.addAttribute("partnersMap", partnersMap);
560
			model.addAttribute("start", offset + 1);
561
			model.addAttribute("size", size);
562
			model.addAttribute("url", "/getPaginatedPromoterInfo");
563
 
564
			if (promoterInfo.size() < limit) {
565
				model.addAttribute("end", offset + promoterInfo.size());
566
			} else {
567
				model.addAttribute("end", offset + limit);
568
			}
569
		} else {
570
			model.addAttribute("promoterInfo", promoterInfo);
571
			model.addAttribute("size", size);
572
		}
573
		return "promoter-info";
574
 
575
	}
24349 amit.gupta 576
 
24159 tejbeer 577
	@RequestMapping(value = "/getPaginatedPromoterInfo", method = RequestMethod.GET)
578
	public String getPaginatedPromoterInfo(HttpServletRequest request,
579
			@RequestParam(name = "offset", defaultValue = "0") int offset,
27489 tejbeer 580
			@RequestParam(name = "limit", defaultValue = "10") int limit,
581
			@RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
24159 tejbeer 582
			throws ProfitMandiBusinessException {
583
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
584
		List<Promoter> promoterInfo = null;
27489 tejbeer 585
		if (fofoId != 0) {
586
			promoterInfo = promoterRepository.selectAllPromoterByFofoId(fofoId, offset, limit);
587
		} else {
588
			promoterInfo = promoterRepository.selectAllPromoter(offset, limit);
589
		}
24159 tejbeer 590
		LOGGER.info("promoterInfo" + promoterInfo);
591
		if (!promoterInfo.isEmpty()) {
592
			List<Integer> partnerIds = new ArrayList<>();
593
 
594
			for (Promoter promoterdetail : promoterInfo) {
595
				partnerIds.add(promoterdetail.getRetailerId());
596
			}
597
			Map<Integer, CustomRetailer> partnersMap = null;
24349 amit.gupta 598
			if (!partnerIds.equals(null)) {
24159 tejbeer 599
				LOGGER.info("partnerIds" + partnerIds);
24349 amit.gupta 600
				partnersMap = retailerService.getFofoRetailers(partnerIds);
24159 tejbeer 601
			}
24349 amit.gupta 602
 
24159 tejbeer 603
			LOGGER.info("partnerIds" + partnersMap);
604
			model.addAttribute("promoterInfo", promoterInfo);
605
			model.addAttribute("partnersMap", partnersMap);
606
			model.addAttribute("url", "/getPaginatedPromoterInfo");
607
		} else {
608
			model.addAttribute("promoterInfo", promoterInfo);
609
 
610
		}
611
 
612
		return "promoter-info-paginated";
613
	}
614
 
615
	@RequestMapping(value = "/createPromoter", method = RequestMethod.POST)
616
	public String createPromoter(HttpServletRequest request, @RequestBody PromoterDetailModel promoterdetailModel,
617
			Model model) throws Exception {
618
		LOGGER.info("requested url : " + request.getRequestURL().toString());
619
		LOGGER.info("requested url : " + promoterdetailModel);
26131 tejbeer 620
		Promoter promoter = promoterRepository.selectById(promoterdetailModel.getId());
621
		if (promoter == null) {
622
			promoter = new Promoter();
24159 tejbeer 623
			promoter.setBrand(promoterdetailModel.getBrand());
624
			promoter.setRetailerId(promoterdetailModel.getRetailerId());
625
			promoter.setCreatedTimestamp(LocalDateTime.now());
26131 tejbeer 626
 
24159 tejbeer 627
		}
27489 tejbeer 628
		promoter.setName(promoterdetailModel.getName());
629
		promoter.setEmail(promoterdetailModel.getEmail());
630
		promoter.setMobile(promoterdetailModel.getMobile());
631
		promoter.setSdPortalAccess(promoterdetailModel.isSdPortalAccess());
632
		promoter.setStatus(promoterdetailModel.isStatus());
633
		LOGGER.info("sdport" + promoterdetailModel.isStatus());
634
		promoterRepository.persist(promoter);
24159 tejbeer 635
 
636
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
637
 
638
		return "response";
639
 
640
	}
641
 
642
	@RequestMapping(value = "/removePromoterfromPartnerStore", method = RequestMethod.POST)
643
	public String removePromoterfromPartnerStore(HttpServletRequest request,
644
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
645
 
646
		Promoter promoter = promoterRepository.selectById(id);
647
 
26131 tejbeer 648
		promoter.setStatus(false);
24159 tejbeer 649
		promoterRepository.persist(promoter);
650
 
651
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
652
 
653
		return "response";
654
	}
655
 
656
	@RequestMapping(value = "/addLocation", method = RequestMethod.POST)
657
	public String addLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel, Model model)
658
			throws Exception {
659
 
660
		Location location = new Location();
661
		location.setName(addLocationModel.getName());
662
		location.setLine1(addLocationModel.getLine1());
663
		location.setLine2(addLocationModel.getLine2());
664
		location.setCity(addLocationModel.getCity());
665
		location.setState(addLocationModel.getState());
666
		location.setPin(addLocationModel.getPin());
667
 
668
		LOGGER.info("PostLocation" + location);
669
		locationRepository.persist(location);
670
 
671
		User user = userRepository.selectById(addLocationModel.getUserId());
672
		user.setLocation(location.getId());
673
		userRepository.persist(user);
674
 
675
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
676
		return "response";
677
 
678
	}
679
 
680
	@RequestMapping(value = "/updateLocation", method = RequestMethod.POST)
681
	public String updateLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel,
682
			Model model) throws Exception {
683
 
684
		Location userlocation = locationRepository.selectById(addLocationModel.getUserId());
685
 
686
		userlocation.setName(addLocationModel.getName());
687
		userlocation.setCity(addLocationModel.getCity());
688
		userlocation.setLine1(addLocationModel.getLine1());
689
		userlocation.setLine2(addLocationModel.getLine2());
690
		userlocation.setPin(addLocationModel.getPin());
691
		userlocation.setState(addLocationModel.getState());
692
 
693
		locationRepository.persist(userlocation);
694
 
695
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
696
		return "response";
697
 
698
	}
699
 
27231 tejbeer 700
	@RequestMapping(value = "/getPartnerReadonlyInfo")
701
	public String getPartnerReadonlyInfo(HttpServletRequest request, Model model) throws Exception {
702
 
703
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
704
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
705
 
706
		Map<Integer, List<Integer>> pp = csService.getAuthUserIdPartnerIdMapping();
707
 
708
		List<Integer> fofoIds = pp.get(authUser.getId());
709
 
710
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
711
 
712
		model.addAttribute("customRetailersMap", customRetailersMap);
27243 tejbeer 713
 
27231 tejbeer 714
		return "partner-readonly-info";
715
 
716
	}
717
 
28071 tejbeer 718
	@RequestMapping(value = "/getBlockBrandMapping")
719
	public String getBlockBrandMapping(HttpServletRequest request, Model model) throws Exception {
720
 
721
		int fofoId = Utils.SYSTEM_PARTNER_ID;
722
		Set<String> brands = null;
723
 
724
		brands = mongoClient.getMongoBrands(fofoId, null, 3).stream().map(x -> (String) x.get("name"))
725
				.collect(Collectors.toSet());
726
 
727
		LOGGER.info("brands" + brands);
728
		model.addAttribute("brands", brands);
729
 
730
		return "block-brand-mapping";
731
 
732
	}
733
 
734
	@RequestMapping(value = "/getBlockBrand")
735
	public String getBlockBrand(HttpServletRequest request,
736
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
737
			throws Exception {
738
 
739
		List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
740
 
741
		List<Integer> blockBrandPartners = retailerBlockBrands.stream().map(x -> x.getFofoId())
742
				.collect(Collectors.toList());
743
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28272 tejbeer 744
 
28071 tejbeer 745
		LOGGER.info("retailerBlockBrands" + retailerBlockBrands);
746
		model.addAttribute("blockBrandPartners", blockBrandPartners);
747
		model.addAttribute("retailerBlockBrands", retailerBlockBrands);
748
		model.addAttribute("customRetailers", customRetailers);
749
 
750
		return "retailer-block-brand";
751
 
752
	}
753
 
754
	@RequestMapping(value = "/getRetailerBlockBrandMappping", method = RequestMethod.POST)
755
	public String getBlockBrandMappping(HttpServletRequest request,
756
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
757
			@RequestParam(name = "fofoIds", required = true, defaultValue = "0") List<Integer> fofoIds, Model model)
758
			throws Exception {
759
		List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
760
		if (!retailerBlockBrands.isEmpty()) {
761
			retailerBlockBrandsRepository.deleteAllbyBrands(brand);
762
		}
763
 
764
		for (int id : fofoIds) {
765
			RetailerBlockBrands retailerBlockBrand = new RetailerBlockBrands();
766
			retailerBlockBrand.setFofoId(id);
767
			retailerBlockBrand.setBlockBrands(brand);
768
			retailerBlockBrandsRepository.persist(retailerBlockBrand);
769
 
770
		}
771
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
772
 
773
		return "response";
774
	}
775
 
28272 tejbeer 776
	@RequestMapping(value = "/getBrandslimit", method = RequestMethod.GET)
777
	public String getBrandslimit(HttpServletRequest request, Model model) throws Exception {
778
 
779
		int fofoId = Utils.SYSTEM_PARTNER_ID;
780
		Set<String> brands = null;
781
 
782
		brands = mongoClient.getMongoBrands(fofoId, null, 3).stream().map(x -> (String) x.get("name"))
783
				.collect(Collectors.toSet());
784
 
785
		model.addAttribute("brands", brands);
786
 
787
		return "brands-limit";
788
 
789
	}
790
 
791
	@RequestMapping(value = "/setUpdateLimit", method = RequestMethod.POST)
792
	public String getUpdateLimit(HttpServletRequest request,
793
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
794
			@RequestParam(name = "fofoId", required = true, defaultValue = "0") int fofoId,
795
			@RequestParam(name = "limit", required = true, defaultValue = "0") float limit, Model model)
796
			throws Exception {
797
 
798
		CustomRetailer cr = retailerService.getFofoRetailer(fofoId);
28277 tejbeer 799
 
800
		Map.Entry<Integer, CustomRetailer> customRetailers = new AbstractMap.SimpleEntry(cr.getPartnerId(), cr);
801
 
802
		// Map<Integer, CustomRetailer> customRetailers =
803
		// retailerService.getFofoRetailers(true);
804
		LOGGER.info("customRetailers" + customRetailers);
28272 tejbeer 805
		RetailerBrandsLimit retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
28277 tejbeer 806
 
28272 tejbeer 807
		if (retailerBrands == null) {
808
			retailerBrands = new RetailerBrandsLimit();
809
			retailerBrands.setBrandLimit(limit);
810
			retailerBrands.setIsUpdate(1);
811
			retailerBrands.setCreatedTimestamp(LocalDateTime.now());
812
			retailerBrands.setPartnerId(fofoId);
813
			retailerBrands.setBrandName(brand);
814
			retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
815
			retailerBrandsLimitRepository.persist(retailerBrands);
816
 
817
		}
818
 
819
		else {
820
			retailerBrands.setBrandLimit(limit);
821
			retailerBrands.setIsUpdate(1);
822
			retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
823
			retailerBrandsLimitRepository.persist(retailerBrands);
824
 
825
		}
826
		retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
827
 
828
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = new HashMap<>();
829
 
830
		retailerBrandsLimitMap.put(retailerBrands.getPartnerId(), retailerBrands);
831
 
832
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
833
 
834
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
835
		model.addAttribute("brandLimit", brandLimit);
836
		model.addAttribute("customRetailers", customRetailers);
28277 tejbeer 837
 
838
		model.addAttribute("brand", brand);
28272 tejbeer 839
		return "brands-limit-row-mapping";
840
 
841
	}
842
 
843
	@RequestMapping(value = "/getRetailerBrandslimitMapping", method = RequestMethod.GET)
844
	public String getRetailerBrandslimit(HttpServletRequest request,
845
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
846
			throws Exception {
847
 
848
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28283 tejbeer 849
		List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrands(brand);
850
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
851
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
28272 tejbeer 852
 
853
		model.addAttribute("customRetailers", customRetailers);
854
		model.addAttribute("brand", brand);
28283 tejbeer 855
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
28272 tejbeer 856
 
857
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
858
 
859
		model.addAttribute("brandLimit", brandLimit);
860
 
861
		return "brands-limit-mapping";
862
 
863
	}
864
 
865
	@RequestMapping(value = "/setBrandWiseLimit", method = RequestMethod.POST)
866
	public String brandwiseLimit(HttpServletRequest request,
867
			@RequestParam(name = "brands", required = true, defaultValue = "") String brands,
868
			@RequestParam(name = "limit", required = true, defaultValue = "") float limit, Model model)
869
			throws Exception {
870
 
871
		LOGGER.info("limit" + limit);
872
 
873
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brands);
874
 
875
		List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrands(brands);
876
 
877
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
878
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
879
 
880
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
881
 
882
		if (brandLimit == null) {
883
 
884
			brandLimit = new BrandLimit();
885
			brandLimit.setBrandLimit(limit);
886
			brandLimit.setBrandName(brands);
887
			brandLimit.setCreatedTimestamp(LocalDateTime.now());
888
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
889
			brandLimitRepository.persist(brandLimit);
890
 
891
		}
892
 
893
		else {
894
			brandLimit.setBrandLimit(limit);
895
 
896
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
897
			brandLimitRepository.persist(brandLimit);
898
 
899
		}
900
		brandLimit = brandLimitRepository.setLimitByBrands(brands);
901
 
902
		LOGGER.info("brandLimit" + brandLimit);
28277 tejbeer 903
		model.addAttribute("brand", brands);
28272 tejbeer 904
		model.addAttribute("brandLimit", brandLimit);
905
		model.addAttribute("customRetailers", customRetailers);
906
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
907
		return "brands-limit-mapping";
908
 
909
	}
28825 tejbeer 910
 
28381 tejbeer 911
	@RequestMapping(value = "/setPartnerPincode", method = RequestMethod.POST)
912
	public String setPartnerPincode(HttpServletRequest request,
913
			@RequestParam(name = "pincode", required = true, defaultValue = "") String pincode,
28825 tejbeer 914
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
915
			throws Exception {
28272 tejbeer 916
 
28825 tejbeer 917
		if (!pincode.equals("")) {
918
			PincodePartner pinPartner = new PincodePartner();
919
			pinPartner.setFofoId(fofoId);
920
			pinPartner.setPincode(pincode);
921
			PincodePartnerRepository.perist(pinPartner);
28381 tejbeer 922
		}
923
 
28825 tejbeer 924
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(fofoId);
925
 
926
		LOGGER.info("partnerPincodeList" + partnerPincodeList);
927
 
928
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28381 tejbeer 929
		return "pincode-partner-index";
930
 
931
	}
28825 tejbeer 932
 
28381 tejbeer 933
	@RequestMapping(value = "/removePartnerPincode", method = RequestMethod.POST)
28825 tejbeer 934
	public String removePartnerPincode(HttpServletRequest request, @RequestParam int id,
935
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
936
			throws Exception {
28381 tejbeer 937
 
28825 tejbeer 938
		PincodePartnerRepository.delete(id);
28381 tejbeer 939
 
28825 tejbeer 940
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(fofoId);
941
 
942
		LOGGER.info("partnerPincodeList" + partnerPincodeList);
943
 
944
		model.addAttribute("partnerPincodeList", partnerPincodeList);
945
 
28381 tejbeer 946
		return "pincode-partner-index";
947
 
948
	}
28825 tejbeer 949
 
28381 tejbeer 950
	@RequestMapping(value = "/removeSearchPincode", method = RequestMethod.POST)
28825 tejbeer 951
	public String removeSearchPincode(HttpServletRequest request, @RequestParam int id,
28381 tejbeer 952
			@RequestParam(name = "pin", required = true, defaultValue = "") String pin,
28825 tejbeer 953
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
954
			throws Exception {
28381 tejbeer 955
 
28825 tejbeer 956
		PincodePartnerRepository.delete(id);
28381 tejbeer 957
 
28825 tejbeer 958
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectPartnersByPincode(pin);
28381 tejbeer 959
 
28825 tejbeer 960
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
961
 
962
		model.addAttribute("customRetailerMap", customRetailerMap);
963
 
964
		model.addAttribute("partnerPincodeList", partnerPincodeList);
965
 
28381 tejbeer 966
		return "search-pincode-partner";
967
 
968
	}
28825 tejbeer 969
 
28381 tejbeer 970
	@RequestMapping(value = "/searchPincodePartner", method = RequestMethod.GET)
971
	public String searchPincodePartner(HttpServletRequest request,
28825 tejbeer 972
			@RequestParam(name = "pincode", required = true, defaultValue = "") String pincode, Model model)
973
			throws Exception {
28381 tejbeer 974
 
28825 tejbeer 975
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectPartnersByPincode(pincode);
976
 
28381 tejbeer 977
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
978
 
979
		model.addAttribute("customRetailerMap", customRetailerMap);
28825 tejbeer 980
 
28381 tejbeer 981
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28825 tejbeer 982
 
28381 tejbeer 983
		return "search-pincode-partner";
28825 tejbeer 984
 
28381 tejbeer 985
	}
28825 tejbeer 986
 
28381 tejbeer 987
	@RequestMapping(value = "/showPartnerPincode", method = RequestMethod.GET)
988
	public String showPartnerPincode(HttpServletRequest request,
28825 tejbeer 989
			@RequestParam(name = "partnerId", required = true, defaultValue = "") int partnerId, Model model)
990
			throws Exception {
28381 tejbeer 991
 
28825 tejbeer 992
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(partnerId);
993
 
28381 tejbeer 994
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28825 tejbeer 995
 
28381 tejbeer 996
		return "pincode-partner-index";
28825 tejbeer 997
 
28381 tejbeer 998
	}
28825 tejbeer 999
 
28381 tejbeer 1000
	@RequestMapping(value = "/getAllPartnerPincode", method = RequestMethod.GET)
28825 tejbeer 1001
	public String getAllPartnerPincode(HttpServletRequest request, Model model) throws Exception {
28381 tejbeer 1002
 
1003
		return "add-partner-pincode";
28825 tejbeer 1004
 
28381 tejbeer 1005
	}
28272 tejbeer 1006
}