Subversion Repositories SmartDukaan

Rev

Rev 30944 | Rev 30963 | 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,
30426 tejbeer 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,
30426 tejbeer 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,
30426 tejbeer 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,
30426 tejbeer 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,
30426 tejbeer 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,
30426 tejbeer 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());
30426 tejbeer 322
 
323
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
324
 
325
		Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = fofoIds.stream().map(x -> customRetailerMap.get(x))
326
				.filter(x -> x != null).collect(Collectors.toList()).stream()
327
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
328
 
29267 manish 329
		LOGGER.info("fofoIds" + fofoIds);
330
		model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
331
		LOGGER.info("fofoIdsAndCustomRetailer" + fofoIdsAndCustomRetailer);
332
		model.addAttribute("fofoIds", fofoIds);
24124 govind 333
 
29267 manish 334
		return "store";
335
 
336
	}
30017 amit.gupta 337
 
29267 manish 338
	@RequestMapping(value = "/getPartnerinfo")
30426 tejbeer 339
	public String getPartnerinfo(HttpServletRequest request, @RequestBody SelectStorePartnerInfo selectStorePartnerInfo,
340
			Model model) throws ProfitMandiBusinessException {
30017 amit.gupta 341
 
29267 manish 342
		LOGGER.info("selectStorePartnerInfo" + selectStorePartnerInfo.getUserIds());
343
		List<FofoStore> fofoStores = fofoStoreRepository.selectByRetailerIds(selectStorePartnerInfo.getUserIds());
344
		LOGGER.info("fofoStoresInfo" + fofoStores);
345
		Map<Integer, Boolean> investments = new HashMap<>();
346
 
347
		for (FofoStore fofoStore : fofoStores) {
348
			boolean isOk = false;
349
			if (fofoStore.getGraceDate() != null && fofoStore.getGraceDate().isAfter(LocalDate.now())) {
350
				isOk = true;
351
			} else {
352
				try {
353
					isOk = partnerInvestmentService.isInvestmentOk(fofoStore.getId(), 10,
354
							ProfitMandiConstants.CUTOFF_INVESTMENT);
355
					if (fofoStore.getGraceCount() > 0) {
356
						fofoStore.setGraceDate(null);
357
						fofoStore.setGraceCount(0);
358
						fofoStoreRepository.persist(fofoStore);
359
					}
360
				} catch (ProfitMandiBusinessException e) {
30017 amit.gupta 361
				}
29267 manish 362
			}
363
			investments.put(fofoStore.getId(), isOk);
364
		}
365
 
366
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(false);
367
		model.addAttribute("fofoStores", fofoStores);
368
		model.addAttribute("investments", investments);
369
		model.addAttribute("customRetailers", customRetailers);
370
 
371
		return "store-investment";
372
 
373
	}
30017 amit.gupta 374
 
24124 govind 375
	@GetMapping(value = "/getAllStores")
376
	public String getAllStores(HttpServletRequest request, Model model) {
377
 
25276 amit.gupta 378
		List<FofoStore> fofoStores = fofoStoreRepository.selectAll().stream().filter(x -> x.isActive())
379
				.collect(Collectors.toList());
24349 amit.gupta 380
		Map<Integer, Boolean> investments = new HashMap<>();
24124 govind 381
 
24349 amit.gupta 382
		for (FofoStore fofoStore : fofoStores) {
383
			boolean isOk = false;
384
			if (fofoStore.getGraceDate() != null && fofoStore.getGraceDate().isAfter(LocalDate.now())) {
385
				isOk = true;
386
			} else {
387
				try {
25276 amit.gupta 388
					isOk = partnerInvestmentService.isInvestmentOk(fofoStore.getId(), 10,
389
							ProfitMandiConstants.CUTOFF_INVESTMENT);
390
					if (fofoStore.getGraceCount() > 0) {
24349 amit.gupta 391
						fofoStore.setGraceDate(null);
392
						fofoStore.setGraceCount(0);
393
						fofoStoreRepository.persist(fofoStore);
394
					}
395
				} catch (ProfitMandiBusinessException e) {
396
				}
397
			}
398
			investments.put(fofoStore.getId(), isOk);
399
		}
24124 govind 400
 
26963 amit.gupta 401
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(false);
24124 govind 402
		model.addAttribute("fofoStores", fofoStores);
24349 amit.gupta 403
		model.addAttribute("investments", investments);
24124 govind 404
		model.addAttribute("customRetailers", customRetailers);
405
 
29267 manish 406
		return "store-investment";
24124 govind 407
 
408
	}
409
 
27797 tejbeer 410
	@GetMapping(value = "/getPartnerCategory")
411
	public String getPartnerCategory(HttpServletRequest request, @RequestParam int fofoId, Model model) {
412
 
413
		PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fofoId, LocalDate.now());
414
		List<PartnerType> partnerTypes = partnerType.nextPartnerTypes();
415
		LOGGER.info("partnerType" + partnerTypes);
416
		model.addAttribute("partnerTypes", partnerTypes);
417
		model.addAttribute("fofoId", fofoId);
418
		return "partner-category";
419
	}
420
 
421
	@PostMapping(value = "/updatePartnerCategory")
422
	public String updatePartnerCategory(HttpServletRequest request, @RequestParam(name = "fofoId") int fofoId,
30426 tejbeer 423
			@RequestParam(name = "partnerType") PartnerType partnerType, Model model) throws Exception {
27797 tejbeer 424
 
425
		PartnerTypeChange ptc = new PartnerTypeChange();
426
		ptc.setFofoId(fofoId);
427
		ptc.setPartnerType(partnerType);
428
		ptc.setCreateTimestamp(LocalDate.now().atStartOfDay().plusDays(1));
429
		partnerTypeChangeRepository.persist(ptc);
430
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
431
 
432
		return "response";
433
	}
434
 
24349 amit.gupta 435
	@GetMapping(value = "/partners")
436
	public String getStoreName(HttpServletRequest request, Model model, @RequestParam String query) throws Exception {
437
		model.addAttribute("response", mvcResponseSender
26963 amit.gupta 438
				.createResponseString(retailerService.getFofoRetailers(false).values().stream().filter(x -> {
24349 amit.gupta 439
					return x.getDisplayName().toLowerCase().matches(".*?" + query.toLowerCase() + ".*?");
440
				}).collect(Collectors.toList())));
441
		return "response";
442
	}
443
 
24124 govind 444
	@PostMapping(value = "/deactivateStore")
445
	public String deActivateStore(HttpServletRequest request,
30426 tejbeer 446
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
24124 govind 447
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
25276 amit.gupta 448
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
30944 tejbeer 449
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com",
450
				"tejbeer.kaur@smartdukaan.com").contains(loginDetails.getEmailId())) {
26131 tejbeer 451
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
452
					"You are not authorise to deactivate retailer");
25276 amit.gupta 453
		}
24843 govind 454
		fofoStore.setActive(false);
455
		fofoStoreRepository.persist(fofoStore);
24124 govind 456
		LOGGER.info("inserted into InActiveFofoStore successfully");
457
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
458
		return "response";
459
	}
28825 tejbeer 460
 
28710 amit.gupta 461
	@PostMapping(value = "/activateStoreForever")
462
	public String activateStoreForever(HttpServletRequest request,
30426 tejbeer 463
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
28710 amit.gupta 464
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
465
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
30944 tejbeer 466
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com")
467
				.contains(loginDetails.getEmailId())) {
28710 amit.gupta 468
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
469
					"You are not authorise to activate retailer");
470
		}
471
		fofoStore.setActive(true);
472
		fofoStoreRepository.persist(fofoStore);
473
		LOGGER.info("inserted into ActiveFofoStore successfully");
474
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
475
		return "response";
476
	}
28825 tejbeer 477
 
28710 amit.gupta 478
	@PostMapping(value = "/activateStoreTemporary")
479
	public String activateStoreTemporary(HttpServletRequest request,
30426 tejbeer 480
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId,
481
			@RequestParam(name = "days", required = true) int days, Model model) throws Exception {
28825 tejbeer 482
 
28710 amit.gupta 483
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
484
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
30944 tejbeer 485
		if (!Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "amit.gupta@smartdukaan.com")
486
				.contains(loginDetails.getEmailId())) {
28710 amit.gupta 487
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
488
					"You are not authorise to deactivate retailer");
489
		}
28825 tejbeer 490
 
491
		LocalDateTime currentDate = LocalDate.now().atStartOfDay();
492
 
28710 amit.gupta 493
		LocalDateTime EndDate = currentDate.plusDays(days);
494
		fofoStore.setActiveTimeStamp(EndDate);
28825 tejbeer 495
 
496
		LOGGER.info("EndDate" + EndDate);
497
		LOGGER.info("getActiveTimeStamp" + fofoStore.getActiveTimeStamp());
498
 
499
		if (currentDate.isBefore(fofoStore.getActiveTimeStamp())) {
500
 
501
			fofoStore.setActive(true);
502
			fofoStoreRepository.persist(fofoStore);
503
			LOGGER.info("inserted into InActiveFofoStore successfully");
504
 
28710 amit.gupta 505
		}
28825 tejbeer 506
 
28710 amit.gupta 507
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
508
		return "response";
509
	}
25276 amit.gupta 510
 
511
	@GetMapping(value = "/getAllInactiveStores")
512
	public String getInactiveStores(HttpServletRequest request, Model model) {
513
		List<FofoStore> inActiveFofoStores = fofoStoreRepository.selectInActiveStore();
30426 tejbeer 514
 
30431 tejbeer 515
		LOGGER.info("inActiveFofoStores {}", inActiveFofoStores);
30426 tejbeer 516
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
517
 
30431 tejbeer 518
		List<Integer> fofoIds = inActiveFofoStores.stream().map(x -> x.getId()).collect(Collectors.toList());
519
 
520
		Map<Integer, CustomRetailer> customRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x))
30426 tejbeer 521
				.filter(x -> x != null).collect(Collectors.toList()).stream()
522
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
30431 tejbeer 523
		LOGGER.info("customRetailers {}", customRetailers);
30426 tejbeer 524
 
24680 govind 525
		model.addAttribute("inActiveFofoStores", inActiveFofoStores);
526
		model.addAttribute("customRetailers", customRetailers);
527
		return "inactive-stores";
528
	}
25276 amit.gupta 529
 
530
	// Extend billing for 2 days
24349 amit.gupta 531
	@PostMapping(value = "/extendBilling")
532
	public String extendBilling(HttpServletRequest request,
30426 tejbeer 533
			@RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
24349 amit.gupta 534
		FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
25276 amit.gupta 535
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
27231 tejbeer 536
		if (Arrays.asList("kamini.sharma@smartdukaan.com", "tarun.verma@smartdukaan.com", "prakash.rai@smartdukaan.com",
537
				"amit.gupta@smartdukaan.com").contains(loginDetails.getEmailId())) {
25276 amit.gupta 538
			fofoStore.setGraceDate(LocalDate.now().plusDays(2));
539
			fofoStore.setGraceCount(fofoStore.getGraceCount() + 1);
540
			fofoStoreRepository.persist(fofoStore);
541
			model.addAttribute("response", mvcResponseSender.createResponseString(fofoStore.getGraceCount()));
542
		} else {
26131 tejbeer 543
			throw new ProfitMandiBusinessException("Access Denied", "Unauthorised Access",
544
					"You are not authorise to extend billing");
25276 amit.gupta 545
		}
24349 amit.gupta 546
		return "response";
25276 amit.gupta 547
 
24124 govind 548
	}
549
 
24159 tejbeer 550
	@RequestMapping(value = "/getPromoterInfo", method = RequestMethod.GET)
551
	public String getPromoterInfo(HttpServletRequest request,
30426 tejbeer 552
			@RequestParam(name = "offset", defaultValue = "0") int offset,
553
			@RequestParam(name = "limit", defaultValue = "10") int limit,
554
			@RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
27489 tejbeer 555
			throws Exception {
24159 tejbeer 556
		LOGGER.info("requested url : " + request.getRequestURL().toString());
557
		List<Promoter> promoterInfo = null;
558
 
559
		long size = 0;
27489 tejbeer 560
 
24159 tejbeer 561
		List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
562
				.collect(Collectors.toList());
30426 tejbeer 563
 
564
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
565
 
566
		Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
567
				.filter(x -> x != null).collect(Collectors.toList()).stream()
568
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
24159 tejbeer 569
		String customRetailers = JSONObject.valueToString(customRetailersMap.values());
24986 tejbeer 570
		Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
571
		brands.add("Airtel");
572
		brands.add("Vodafone");
573
		brands.add("Idea");
25276 amit.gupta 574
		LOGGER.info("brands" + brands);
24159 tejbeer 575
		model.addAttribute("customRetailers", customRetailers);
25276 amit.gupta 576
		model.addAttribute("brands", brands);
24159 tejbeer 577
 
27489 tejbeer 578
		if (fofoId != 0) {
579
			promoterInfo = promoterRepository.selectAllPromoterByFofoId(fofoId, offset, limit);
24159 tejbeer 580
 
27489 tejbeer 581
			size = promoterRepository.selectPromoterCount(fofoId);
582
 
583
		} else {
584
			promoterInfo = promoterRepository.selectAllPromoter(offset, limit);
585
 
586
			size = promoterRepository.selectAllCount();
587
 
588
		}
24159 tejbeer 589
		if (!promoterInfo.isEmpty()) {
30944 tejbeer 590
			Set<Integer> partnerIds = new HashSet<>();
24159 tejbeer 591
 
592
			for (Promoter promoterdetail : promoterInfo) {
593
				partnerIds.add(promoterdetail.getRetailerId());
594
			}
595
			Map<Integer, CustomRetailer> partnersMap = null;
24349 amit.gupta 596
			if (!partnerIds.equals(null)) {
24159 tejbeer 597
				LOGGER.info("partnerIds" + partnerIds);
30426 tejbeer 598
 
599
				partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
600
						.collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
601
 
24159 tejbeer 602
			}
24349 amit.gupta 603
 
24159 tejbeer 604
			LOGGER.info("partnerIds" + partnersMap);
605
			model.addAttribute("promoterInfo", promoterInfo);
606
			model.addAttribute("partnersMap", partnersMap);
607
			model.addAttribute("start", offset + 1);
608
			model.addAttribute("size", size);
609
			model.addAttribute("url", "/getPaginatedPromoterInfo");
610
 
611
			if (promoterInfo.size() < limit) {
612
				model.addAttribute("end", offset + promoterInfo.size());
613
			} else {
614
				model.addAttribute("end", offset + limit);
615
			}
616
		} else {
617
			model.addAttribute("promoterInfo", promoterInfo);
618
			model.addAttribute("size", size);
619
		}
620
		return "promoter-info";
621
 
622
	}
24349 amit.gupta 623
 
24159 tejbeer 624
	@RequestMapping(value = "/getPaginatedPromoterInfo", method = RequestMethod.GET)
625
	public String getPaginatedPromoterInfo(HttpServletRequest request,
30426 tejbeer 626
			@RequestParam(name = "offset", defaultValue = "0") int offset,
627
			@RequestParam(name = "limit", defaultValue = "10") int limit,
628
			@RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
24159 tejbeer 629
			throws ProfitMandiBusinessException {
630
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
631
		List<Promoter> promoterInfo = null;
27489 tejbeer 632
		if (fofoId != 0) {
633
			promoterInfo = promoterRepository.selectAllPromoterByFofoId(fofoId, offset, limit);
634
		} else {
635
			promoterInfo = promoterRepository.selectAllPromoter(offset, limit);
636
		}
24159 tejbeer 637
		LOGGER.info("promoterInfo" + promoterInfo);
638
		if (!promoterInfo.isEmpty()) {
30945 tejbeer 639
			Set<Integer> partnerIds = new HashSet<>();
24159 tejbeer 640
 
641
			for (Promoter promoterdetail : promoterInfo) {
642
				partnerIds.add(promoterdetail.getRetailerId());
643
			}
644
			Map<Integer, CustomRetailer> partnersMap = null;
24349 amit.gupta 645
			if (!partnerIds.equals(null)) {
24159 tejbeer 646
				LOGGER.info("partnerIds" + partnerIds);
30426 tejbeer 647
 
648
				Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
649
 
650
				partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
651
						.collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
652
 
24159 tejbeer 653
			}
24349 amit.gupta 654
 
24159 tejbeer 655
			LOGGER.info("partnerIds" + partnersMap);
656
			model.addAttribute("promoterInfo", promoterInfo);
657
			model.addAttribute("partnersMap", partnersMap);
658
			model.addAttribute("url", "/getPaginatedPromoterInfo");
659
		} else {
660
			model.addAttribute("promoterInfo", promoterInfo);
661
 
662
		}
663
 
664
		return "promoter-info-paginated";
665
	}
666
 
667
	@RequestMapping(value = "/createPromoter", method = RequestMethod.POST)
668
	public String createPromoter(HttpServletRequest request, @RequestBody PromoterDetailModel promoterdetailModel,
30426 tejbeer 669
			Model model) throws Exception {
24159 tejbeer 670
		LOGGER.info("requested url : " + request.getRequestURL().toString());
671
		LOGGER.info("requested url : " + promoterdetailModel);
26131 tejbeer 672
		Promoter promoter = promoterRepository.selectById(promoterdetailModel.getId());
673
		if (promoter == null) {
674
			promoter = new Promoter();
24159 tejbeer 675
			promoter.setBrand(promoterdetailModel.getBrand());
676
			promoter.setRetailerId(promoterdetailModel.getRetailerId());
677
			promoter.setCreatedTimestamp(LocalDateTime.now());
28996 amit.gupta 678
			promoter.setEmail(promoterdetailModel.getEmail());
679
			promoter.setName(promoterdetailModel.getName());
680
			promoter.setMobile(promoterdetailModel.getMobile());
681
			promoter.setSdPortalAccess(promoterdetailModel.isSdPortalAccess());
682
			promoter.setStatus(promoterdetailModel.isStatus());
28908 tejbeer 683
			promoterRepository.persist(promoter);
26131 tejbeer 684
 
28908 tejbeer 685
			List<Promoter> promoters = promoterRepository.selectAllByRetailer(promoterdetailModel.getRetailerId());
686
			if (!promoters.isEmpty()) {
28970 tejbeer 687
				FofoStore fs = fofoStoreRepository.selectByRetailerId(promoterdetailModel.getRetailerId());
28908 tejbeer 688
				PartnerOnBoardingPanel pobp = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
689
				if (pobp != null) {
690
					storeTimelineTatService.promoterComplete(pobp.getId());
691
				}
692
			}
693
 
28996 amit.gupta 694
		} else {
695
			promoter.setEmail(promoterdetailModel.getEmail());
696
			promoter.setName(promoterdetailModel.getName());
697
			promoter.setMobile(promoterdetailModel.getMobile());
698
			promoter.setSdPortalAccess(promoterdetailModel.isSdPortalAccess());
699
			promoter.setStatus(promoterdetailModel.isStatus());
24159 tejbeer 700
		}
27489 tejbeer 701
		LOGGER.info("sdport" + promoterdetailModel.isStatus());
24159 tejbeer 702
 
703
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
704
 
705
		return "response";
706
 
707
	}
708
 
709
	@RequestMapping(value = "/removePromoterfromPartnerStore", method = RequestMethod.POST)
710
	public String removePromoterfromPartnerStore(HttpServletRequest request,
30426 tejbeer 711
			@RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
24159 tejbeer 712
 
713
		Promoter promoter = promoterRepository.selectById(id);
714
 
26131 tejbeer 715
		promoter.setStatus(false);
24159 tejbeer 716
		promoterRepository.persist(promoter);
717
 
718
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
719
 
720
		return "response";
721
	}
722
 
723
	@RequestMapping(value = "/addLocation", method = RequestMethod.POST)
724
	public String addLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel, Model model)
725
			throws Exception {
726
 
727
		Location location = new Location();
728
		location.setName(addLocationModel.getName());
729
		location.setLine1(addLocationModel.getLine1());
730
		location.setLine2(addLocationModel.getLine2());
731
		location.setCity(addLocationModel.getCity());
732
		location.setState(addLocationModel.getState());
733
		location.setPin(addLocationModel.getPin());
734
 
735
		LOGGER.info("PostLocation" + location);
736
		locationRepository.persist(location);
737
 
738
		User user = userRepository.selectById(addLocationModel.getUserId());
739
		user.setLocation(location.getId());
740
		userRepository.persist(user);
741
 
742
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
743
		return "response";
744
 
745
	}
746
 
747
	@RequestMapping(value = "/updateLocation", method = RequestMethod.POST)
748
	public String updateLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel,
30426 tejbeer 749
			Model model) throws Exception {
24159 tejbeer 750
 
751
		Location userlocation = locationRepository.selectById(addLocationModel.getUserId());
752
 
753
		userlocation.setName(addLocationModel.getName());
754
		userlocation.setCity(addLocationModel.getCity());
755
		userlocation.setLine1(addLocationModel.getLine1());
756
		userlocation.setLine2(addLocationModel.getLine2());
757
		userlocation.setPin(addLocationModel.getPin());
758
		userlocation.setState(addLocationModel.getState());
759
 
760
		locationRepository.persist(userlocation);
761
 
762
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
763
		return "response";
764
 
765
	}
766
 
27231 tejbeer 767
	@RequestMapping(value = "/getPartnerReadonlyInfo")
768
	public String getPartnerReadonlyInfo(HttpServletRequest request, Model model) throws Exception {
769
 
770
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
771
		AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
772
 
773
		Map<Integer, List<Integer>> pp = csService.getAuthUserIdPartnerIdMapping();
774
 
29633 amit.gupta 775
		Set<Integer> fofoIds = new HashSet<>(pp.get(authUser.getId()));
27231 tejbeer 776
 
30017 amit.gupta 777
		Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> {
29604 amit.gupta 778
			try {
779
				return retailerService.getFofoRetailer(x);
780
			} catch (ProfitMandiBusinessException e) {
781
				// TODO Auto-generated catch block
782
				return null;
783
			}
30017 amit.gupta 784
		}).filter(x -> x != null).collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
27231 tejbeer 785
 
786
		model.addAttribute("customRetailersMap", customRetailersMap);
27243 tejbeer 787
 
27231 tejbeer 788
		return "partner-readonly-info";
789
 
790
	}
791
 
28071 tejbeer 792
	@RequestMapping(value = "/getBlockBrandMapping")
793
	public String getBlockBrandMapping(HttpServletRequest request, Model model) throws Exception {
794
 
795
		int fofoId = Utils.SYSTEM_PARTNER_ID;
796
		Set<String> brands = null;
797
 
798
		brands = mongoClient.getMongoBrands(fofoId, null, 3).stream().map(x -> (String) x.get("name"))
799
				.collect(Collectors.toSet());
800
 
801
		LOGGER.info("brands" + brands);
802
		model.addAttribute("brands", brands);
803
 
804
		return "block-brand-mapping";
805
 
806
	}
807
 
808
	@RequestMapping(value = "/getBlockBrand")
809
	public String getBlockBrand(HttpServletRequest request,
30426 tejbeer 810
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
28071 tejbeer 811
			throws Exception {
812
 
813
		List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
814
 
815
		List<Integer> blockBrandPartners = retailerBlockBrands.stream().map(x -> x.getFofoId())
816
				.collect(Collectors.toList());
817
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28272 tejbeer 818
 
28071 tejbeer 819
		LOGGER.info("retailerBlockBrands" + retailerBlockBrands);
820
		model.addAttribute("blockBrandPartners", blockBrandPartners);
821
		model.addAttribute("retailerBlockBrands", retailerBlockBrands);
822
		model.addAttribute("customRetailers", customRetailers);
823
 
824
		return "retailer-block-brand";
825
 
826
	}
827
 
828
	@RequestMapping(value = "/getRetailerBlockBrandMappping", method = RequestMethod.POST)
829
	public String getBlockBrandMappping(HttpServletRequest request,
30426 tejbeer 830
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
831
			@RequestParam(name = "fofoIds", required = true, defaultValue = "0") List<Integer> fofoIds, Model model)
28071 tejbeer 832
			throws Exception {
833
		List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
834
		if (!retailerBlockBrands.isEmpty()) {
835
			retailerBlockBrandsRepository.deleteAllbyBrands(brand);
836
		}
837
 
838
		for (int id : fofoIds) {
839
			RetailerBlockBrands retailerBlockBrand = new RetailerBlockBrands();
840
			retailerBlockBrand.setFofoId(id);
841
			retailerBlockBrand.setBlockBrands(brand);
842
			retailerBlockBrandsRepository.persist(retailerBlockBrand);
843
 
844
		}
845
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
846
 
847
		return "response";
848
	}
849
 
28272 tejbeer 850
	@RequestMapping(value = "/getBrandslimit", method = RequestMethod.GET)
851
	public String getBrandslimit(HttpServletRequest request, Model model) throws Exception {
852
 
853
		int fofoId = Utils.SYSTEM_PARTNER_ID;
854
		Set<String> brands = null;
855
 
856
		brands = mongoClient.getMongoBrands(fofoId, null, 3).stream().map(x -> (String) x.get("name"))
857
				.collect(Collectors.toSet());
858
 
859
		model.addAttribute("brands", brands);
860
 
861
		return "brands-limit";
862
 
863
	}
864
 
865
	@RequestMapping(value = "/setUpdateLimit", method = RequestMethod.POST)
866
	public String getUpdateLimit(HttpServletRequest request,
30028 manish 867
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
868
			@RequestParam(name = "fofoId", required = true, defaultValue = "0") int fofoId,
869
			@RequestParam(name = "limit", required = true, defaultValue = "0") float limit,
870
			@RequestParam(name = "minStockLimit", required = true, defaultValue = "0") float minStockLimit,
871
			@RequestParam(name = "preLimit", required = true, defaultValue = "0") float preLimit,
872
			@RequestParam(name = "preStockLimit", required = true, defaultValue = "0") float preStockLimit, Model model)
28272 tejbeer 873
			throws Exception {
874
 
875
		CustomRetailer cr = retailerService.getFofoRetailer(fofoId);
28277 tejbeer 876
 
877
		Map.Entry<Integer, CustomRetailer> customRetailers = new AbstractMap.SimpleEntry(cr.getPartnerId(), cr);
878
 
879
		// Map<Integer, CustomRetailer> customRetailers =
880
		// retailerService.getFofoRetailers(true);
30028 manish 881
 
28272 tejbeer 882
		RetailerBrandsLimit retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
28277 tejbeer 883
 
28272 tejbeer 884
		if (retailerBrands == null) {
885
			retailerBrands = new RetailerBrandsLimit();
30028 manish 886
 
887
			if (minStockLimit != 0) {
888
 
889
				retailerBrands.setMinStockLimit(minStockLimit);
890
			} else {
891
				retailerBrands.setMinStockLimit(preStockLimit);
892
			}
893
			if (limit != 0) {
894
				retailerBrands.setBrandLimit(limit);
895
			} else {
896
				retailerBrands.setBrandLimit(preLimit);
897
			}
898
 
28272 tejbeer 899
			retailerBrands.setIsUpdate(1);
900
			retailerBrands.setCreatedTimestamp(LocalDateTime.now());
901
			retailerBrands.setPartnerId(fofoId);
902
			retailerBrands.setBrandName(brand);
903
			retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
904
			retailerBrandsLimitRepository.persist(retailerBrands);
30028 manish 905
		} else {
906
			if (minStockLimit != 0) {
907
				retailerBrands.setMinStockLimit(minStockLimit);
908
			} else {
909
				retailerBrands.setMinStockLimit(preStockLimit);
910
			}
28272 tejbeer 911
 
30028 manish 912
			if (limit != 0) {
913
				retailerBrands.setBrandLimit(limit);
914
			} else {
915
				retailerBrands.setBrandLimit(preLimit);
916
			}
28272 tejbeer 917
			retailerBrands.setIsUpdate(1);
918
			retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
919
			retailerBrandsLimitRepository.persist(retailerBrands);
920
 
921
		}
922
		retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
923
 
924
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = new HashMap<>();
925
 
926
		retailerBrandsLimitMap.put(retailerBrands.getPartnerId(), retailerBrands);
927
 
928
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
929
 
930
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
931
		model.addAttribute("brandLimit", brandLimit);
932
		model.addAttribute("customRetailers", customRetailers);
28277 tejbeer 933
 
934
		model.addAttribute("brand", brand);
28272 tejbeer 935
		return "brands-limit-row-mapping";
936
 
937
	}
938
 
939
	@RequestMapping(value = "/getRetailerBrandslimitMapping", method = RequestMethod.GET)
940
	public String getRetailerBrandslimit(HttpServletRequest request,
30426 tejbeer 941
			@RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
28272 tejbeer 942
			throws Exception {
943
 
944
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28283 tejbeer 945
		List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrands(brand);
946
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
947
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
28272 tejbeer 948
 
949
		model.addAttribute("customRetailers", customRetailers);
950
		model.addAttribute("brand", brand);
28283 tejbeer 951
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
28272 tejbeer 952
 
953
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
954
 
955
		model.addAttribute("brandLimit", brandLimit);
956
 
957
		return "brands-limit-mapping";
958
 
959
	}
30426 tejbeer 960
 
28272 tejbeer 961
	@RequestMapping(value = "/setBrandWiseLimit", method = RequestMethod.POST)
962
	public String brandwiseLimit(HttpServletRequest request,
30028 manish 963
			@RequestParam(name = "brands", required = true, defaultValue = "") String brands,
964
			@RequestParam(name = "limit", required = true, defaultValue = "") float limit, Model model)
28272 tejbeer 965
			throws Exception {
966
 
967
		LOGGER.info("limit" + limit);
968
 
969
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brands);
970
 
971
		List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrands(brands);
972
 
973
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
974
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
975
 
976
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
977
 
978
		if (brandLimit == null) {
979
 
980
			brandLimit = new BrandLimit();
981
			brandLimit.setBrandLimit(limit);
982
			brandLimit.setBrandName(brands);
983
			brandLimit.setCreatedTimestamp(LocalDateTime.now());
984
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
985
			brandLimitRepository.persist(brandLimit);
986
 
30028 manish 987
		}
988
 
989
		else {
28272 tejbeer 990
			brandLimit.setBrandLimit(limit);
991
 
992
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
993
			brandLimitRepository.persist(brandLimit);
994
 
995
		}
996
		brandLimit = brandLimitRepository.setLimitByBrands(brands);
997
 
998
		LOGGER.info("brandLimit" + brandLimit);
28277 tejbeer 999
		model.addAttribute("brand", brands);
28272 tejbeer 1000
		model.addAttribute("brandLimit", brandLimit);
1001
		model.addAttribute("customRetailers", customRetailers);
1002
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
1003
		return "brands-limit-mapping";
1004
 
1005
	}
28825 tejbeer 1006
 
30028 manish 1007
	@RequestMapping(value = "/setBrandWiseStockLimit", method = RequestMethod.POST)
1008
	public String setBrandWiseStockLimit(HttpServletRequest request,
1009
			@RequestParam(name = "brands", required = true, defaultValue = "") String brands,
1010
			@RequestParam(name = "stockLimit", required = true, defaultValue = "") float stockLimit, Model model)
1011
			throws Exception {
1012
 
1013
		LOGGER.info("limit" + stockLimit);
1014
 
1015
		BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brands);
1016
 
1017
		List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrands(brands);
1018
 
1019
		Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
1020
				.collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
1021
 
1022
		Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
1023
 
1024
		if (brandLimit == null) {
1025
 
1026
			brandLimit = new BrandLimit();
1027
			brandLimit.setBrandLimit(0);
1028
			brandLimit.setBrandName(brands);
1029
			brandLimit.setStockLimit(stockLimit);
1030
			brandLimit.setCreatedTimestamp(LocalDateTime.now());
1031
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1032
			brandLimitRepository.persist(brandLimit);
1033
 
1034
		}
1035
 
1036
		else {
1037
			brandLimit.setStockLimit(stockLimit);
1038
 
1039
			brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1040
			brandLimitRepository.persist(brandLimit);
1041
 
1042
		}
1043
		brandLimit = brandLimitRepository.setLimitByBrands(brands);
1044
 
1045
		model.addAttribute("brand", brands);
1046
		model.addAttribute("brandLimit", brandLimit);
1047
		model.addAttribute("customRetailers", customRetailers);
1048
		model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
1049
		return "brands-limit-mapping";
1050
 
1051
	}
1052
 
28381 tejbeer 1053
	@RequestMapping(value = "/setPartnerPincode", method = RequestMethod.POST)
1054
	public String setPartnerPincode(HttpServletRequest request,
30426 tejbeer 1055
			@RequestParam(name = "pincode", required = true, defaultValue = "") String pincode,
1056
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
28825 tejbeer 1057
			throws Exception {
28272 tejbeer 1058
 
28825 tejbeer 1059
		if (!pincode.equals("")) {
1060
			PincodePartner pinPartner = new PincodePartner();
1061
			pinPartner.setFofoId(fofoId);
1062
			pinPartner.setPincode(pincode);
1063
			PincodePartnerRepository.perist(pinPartner);
28381 tejbeer 1064
		}
1065
 
28825 tejbeer 1066
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(fofoId);
1067
 
1068
		LOGGER.info("partnerPincodeList" + partnerPincodeList);
1069
 
1070
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28381 tejbeer 1071
		return "pincode-partner-index";
1072
 
1073
	}
28825 tejbeer 1074
 
28381 tejbeer 1075
	@RequestMapping(value = "/removePartnerPincode", method = RequestMethod.POST)
28825 tejbeer 1076
	public String removePartnerPincode(HttpServletRequest request, @RequestParam int id,
30426 tejbeer 1077
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
28825 tejbeer 1078
			throws Exception {
28381 tejbeer 1079
 
28825 tejbeer 1080
		PincodePartnerRepository.delete(id);
28381 tejbeer 1081
 
28825 tejbeer 1082
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(fofoId);
1083
 
1084
		LOGGER.info("partnerPincodeList" + partnerPincodeList);
1085
 
1086
		model.addAttribute("partnerPincodeList", partnerPincodeList);
1087
 
28381 tejbeer 1088
		return "pincode-partner-index";
1089
 
1090
	}
28825 tejbeer 1091
 
28381 tejbeer 1092
	@RequestMapping(value = "/removeSearchPincode", method = RequestMethod.POST)
28825 tejbeer 1093
	public String removeSearchPincode(HttpServletRequest request, @RequestParam int id,
30426 tejbeer 1094
			@RequestParam(name = "pin", required = true, defaultValue = "") String pin,
1095
			@RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
28825 tejbeer 1096
			throws Exception {
28381 tejbeer 1097
 
28825 tejbeer 1098
		PincodePartnerRepository.delete(id);
28381 tejbeer 1099
 
28825 tejbeer 1100
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectPartnersByPincode(pin);
28381 tejbeer 1101
 
28825 tejbeer 1102
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
1103
 
1104
		model.addAttribute("customRetailerMap", customRetailerMap);
1105
 
1106
		model.addAttribute("partnerPincodeList", partnerPincodeList);
1107
 
28381 tejbeer 1108
		return "search-pincode-partner";
1109
 
1110
	}
28825 tejbeer 1111
 
28381 tejbeer 1112
	@RequestMapping(value = "/searchPincodePartner", method = RequestMethod.GET)
1113
	public String searchPincodePartner(HttpServletRequest request,
30426 tejbeer 1114
			@RequestParam(name = "pincode", required = true, defaultValue = "") String pincode, Model model)
28825 tejbeer 1115
			throws Exception {
28381 tejbeer 1116
 
28825 tejbeer 1117
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectPartnersByPincode(pincode);
1118
 
28381 tejbeer 1119
		Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
1120
 
1121
		model.addAttribute("customRetailerMap", customRetailerMap);
28825 tejbeer 1122
 
28381 tejbeer 1123
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28825 tejbeer 1124
 
28381 tejbeer 1125
		return "search-pincode-partner";
28825 tejbeer 1126
 
28381 tejbeer 1127
	}
28825 tejbeer 1128
 
28381 tejbeer 1129
	@RequestMapping(value = "/showPartnerPincode", method = RequestMethod.GET)
1130
	public String showPartnerPincode(HttpServletRequest request,
30426 tejbeer 1131
			@RequestParam(name = "partnerId", required = true, defaultValue = "") int partnerId, Model model)
28825 tejbeer 1132
			throws Exception {
28381 tejbeer 1133
 
28825 tejbeer 1134
		List<PincodePartner> partnerPincodeList = PincodePartnerRepository.selectByPartnerId(partnerId);
1135
 
28381 tejbeer 1136
		model.addAttribute("partnerPincodeList", partnerPincodeList);
28825 tejbeer 1137
 
28381 tejbeer 1138
		return "pincode-partner-index";
28825 tejbeer 1139
 
28381 tejbeer 1140
	}
28825 tejbeer 1141
 
28381 tejbeer 1142
	@RequestMapping(value = "/getAllPartnerPincode", method = RequestMethod.GET)
28825 tejbeer 1143
	public String getAllPartnerPincode(HttpServletRequest request, Model model) throws Exception {
28381 tejbeer 1144
		return "add-partner-pincode";
1145
	}
28272 tejbeer 1146
}