Subversion Repositories SmartDukaan

Rev

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

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