Subversion Repositories SmartDukaan

Rev

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