Subversion Repositories SmartDukaan

Rev

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