Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
22860 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23020 ashik.ali 3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
26674 tejbeer 6
import java.time.LocalDate;
23020 ashik.ali 7
import java.time.LocalDateTime;
26674 tejbeer 8
import java.util.ArrayList;
23556 amit.gupta 9
import java.util.Arrays;
23914 govind 10
import java.util.HashMap;
23556 amit.gupta 11
import java.util.HashSet;
22860 ashik.ali 12
import java.util.List;
23020 ashik.ali 13
import java.util.Map;
25368 amit.gupta 14
import java.util.Set;
26588 tejbeer 15
import java.util.stream.Collectors;
22860 ashik.ali 16
 
17
import javax.servlet.http.HttpServletRequest;
25368 amit.gupta 18
import javax.transaction.Transactional;
22860 ashik.ali 19
 
23784 ashik.ali 20
import org.apache.logging.log4j.LogManager;
23568 govind 21
import org.apache.logging.log4j.Logger;
22860 ashik.ali 22
import org.springframework.beans.factory.annotation.Autowired;
23784 ashik.ali 23
import org.springframework.beans.factory.annotation.Qualifier;
23020 ashik.ali 24
import org.springframework.core.io.InputStreamResource;
25
import org.springframework.http.HttpHeaders;
26
import org.springframework.http.HttpStatus;
27
import org.springframework.http.ResponseEntity;
22860 ashik.ali 28
import org.springframework.stereotype.Controller;
29
import org.springframework.ui.Model;
30
import org.springframework.web.bind.annotation.RequestBody;
31
import org.springframework.web.bind.annotation.RequestMapping;
32
import org.springframework.web.bind.annotation.RequestMethod;
33
import org.springframework.web.bind.annotation.RequestParam;
34
 
26588 tejbeer 35
import com.google.gson.Gson;
23020 ashik.ali 36
import com.spice.profitmandi.common.enumuration.DateTimePattern;
22860 ashik.ali 37
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
26588 tejbeer 38
import com.spice.profitmandi.common.model.CustomRetailer;
23914 govind 39
import com.spice.profitmandi.common.model.MapWrapper;
22860 ashik.ali 40
import com.spice.profitmandi.common.model.ProfitMandiConstants;
23557 amit.gupta 41
import com.spice.profitmandi.common.model.SchemeItems;
23020 ashik.ali 42
import com.spice.profitmandi.common.model.SchemeModel;
43
import com.spice.profitmandi.common.util.ExcelUtils;
44
import com.spice.profitmandi.common.util.StringUtils;
23784 ashik.ali 45
import com.spice.profitmandi.common.web.util.ResponseSender;
26588 tejbeer 46
import com.spice.profitmandi.dao.entity.catalog.Offer;
47
import com.spice.profitmandi.dao.entity.catalog.OfferPartner;
48
import com.spice.profitmandi.dao.entity.catalog.Offermargin;
22860 ashik.ali 49
import com.spice.profitmandi.dao.entity.catalog.Scheme;
25505 amit.gupta 50
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
23556 amit.gupta 51
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
26588 tejbeer 52
import com.spice.profitmandi.dao.enumuration.catalog.ItemCriteriaType;
53
import com.spice.profitmandi.dao.model.AmountMarginModel;
54
import com.spice.profitmandi.dao.model.CreateOfferRequest;
25505 amit.gupta 55
import com.spice.profitmandi.dao.model.CreateSchemeRequest;
26588 tejbeer 56
import com.spice.profitmandi.dao.model.ItemTypeParams;
57
import com.spice.profitmandi.dao.model.SimpleItemType;
26674 tejbeer 58
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
26588 tejbeer 59
import com.spice.profitmandi.dao.repository.catalog.OfferMarginRepository;
60
import com.spice.profitmandi.dao.repository.catalog.OfferPartnerRepository;
61
import com.spice.profitmandi.dao.repository.catalog.OfferRepository;
22860 ashik.ali 62
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
23556 amit.gupta 63
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
26588 tejbeer 64
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
65
import com.spice.profitmandi.dao.repository.dtr.Mongo;
23784 ashik.ali 66
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
26674 tejbeer 67
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
23506 amit.gupta 68
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
23556 amit.gupta 69
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
23798 amit.gupta 70
import com.spice.profitmandi.service.authentication.RoleManager;
23020 ashik.ali 71
import com.spice.profitmandi.service.inventory.InventoryService;
22860 ashik.ali 72
import com.spice.profitmandi.service.scheme.SchemeService;
26588 tejbeer 73
import com.spice.profitmandi.service.user.RetailerService;
22860 ashik.ali 74
import com.spice.profitmandi.web.model.LoginDetails;
75
import com.spice.profitmandi.web.util.CookiesProcessor;
23570 amit.gupta 76
import com.spice.profitmandi.web.util.MVCResponseSender;
22860 ashik.ali 77
 
78
@Controller
25369 amit.gupta 79
@Transactional(rollbackOn = Throwable.class)
22860 ashik.ali 80
public class SchemeController {
81
 
23568 govind 82
	private static final Logger LOGGER = LogManager.getLogger(SchemeController.class);
22860 ashik.ali 83
 
84
	@Autowired
22927 ashik.ali 85
	private SchemeService schemeService;
23786 amit.gupta 86
 
22860 ashik.ali 87
	@Autowired
22927 ashik.ali 88
	private SchemeRepository schemeRepository;
22860 ashik.ali 89
 
90
	@Autowired
23556 amit.gupta 91
	private SchemeItemRepository schemeItemRepository;
23786 amit.gupta 92
 
23556 amit.gupta 93
	@Autowired
23570 amit.gupta 94
	private MVCResponseSender mvcResponseSender;
23786 amit.gupta 95
 
23570 amit.gupta 96
	@Autowired
22927 ashik.ali 97
	private CookiesProcessor cookiesProcessor;
23786 amit.gupta 98
 
23020 ashik.ali 99
	@Autowired
23784 ashik.ali 100
	@Qualifier("fofoInventoryService")
23020 ashik.ali 101
	private InventoryService inventoryService;
23556 amit.gupta 102
 
103
	@Autowired
104
	private TagListingRepository tagListingRepository;
23914 govind 105
 
23798 amit.gupta 106
	@Autowired
107
	private RoleManager roleManager;
23786 amit.gupta 108
 
23506 amit.gupta 109
	@Autowired
26588 tejbeer 110
	private PurchaseRepository purchaseRepository;
23786 amit.gupta 111
 
23784 ashik.ali 112
	@Autowired
113
	private RoleRepository roleRepository;
23786 amit.gupta 114
 
23784 ashik.ali 115
	@Autowired
116
	private ResponseSender<?> responseSender;
22860 ashik.ali 117
 
26588 tejbeer 118
	@Autowired
119
	private OfferRepository offerRepository;
120
 
121
	@Autowired
122
	private OfferMarginRepository offerMarginRepository;
123
 
124
	@Autowired
125
	private FofoStoreRepository fofoStoreRepository;
126
 
127
	@Autowired
128
	private OfferPartnerRepository offerPartnerRepository;
129
 
130
	@Autowired
26674 tejbeer 131
	private ItemRepository itemRepository;
132
 
133
	@Autowired
26588 tejbeer 134
	private Gson gson;
135
 
136
	@Autowired
137
	private RetailerService retailerService;
138
 
139
	@Autowired
140
	private Mongo mongoClient;
141
 
26674 tejbeer 142
	@Autowired
143
	private PartnerTypeChangeService partnerTypeChangeService;
144
 
22860 ashik.ali 145
	@RequestMapping(value = "/createScheme", method = RequestMethod.GET)
23786 amit.gupta 146
	public String createScheme(HttpServletRequest request, Model model) {
147
		// Map<Integer, String> itemIdItemDescriptionMap =
148
		// inventoryService.getAllItemIdItemDescriptionMap();
149
		// model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
25368 amit.gupta 150
		Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
151
		brands.addAll(inventoryService.getAllTagListingBrands(14206));
152
		model.addAttribute("brands", brands);
25505 amit.gupta 153
		model.addAttribute("retailerTypes", PartnerType.values());
22860 ashik.ali 154
		return "create-scheme";
155
	}
23786 amit.gupta 156
 
23914 govind 157
	@RequestMapping(value = "/getTagListingItemsByBrand", method = RequestMethod.POST)
158
	public String getTagListingItemsByBrand(HttpServletRequest request, @RequestBody List<String> brands, Model model) {
159
		Map<Integer, String> itemIdItemDescriptionMap = new HashMap<>();
160
		LOGGER.info("brands" + brands);
161
 
162
		List<MapWrapper<Integer, String>> itemIdItemDescriptionMaplist = inventoryService
163
				.getAllTagListingItemIdItemDescriptionMap(new HashSet<>(brands));
164
		for (MapWrapper<Integer, String> mapWrapper : itemIdItemDescriptionMaplist) {
165
			itemIdItemDescriptionMap.put(mapWrapper.getKey(), mapWrapper.getValue());
166
		}
23020 ashik.ali 167
		model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
23786 amit.gupta 168
		// model.addAttribute("brands", inventoryService.getAllBrands());
23914 govind 169
 
23419 ashik.ali 170
		return "tag-listing-items-description";
23020 ashik.ali 171
	}
23556 amit.gupta 172
 
173
	@RequestMapping(value = "/schemes/update-schemes-page", method = RequestMethod.GET)
174
	public String updateShcemes(HttpServletRequest request) throws ProfitMandiBusinessException {
175
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23799 amit.gupta 176
		if (!roleManager.isAdmin(loginDetails.getRoleIds())) {
23556 amit.gupta 177
			throw new ProfitMandiBusinessException("User", loginDetails.getEmailId(), "Unauthorised access");
178
		}
179
		return "update-schemes-page";
180
	}
25256 amit.gupta 181
 
23556 amit.gupta 182
	@RequestMapping(value = "/schemes/update", method = RequestMethod.POST)
23786 amit.gupta 183
	public String updateShcemes(HttpServletRequest request, @RequestBody SchemeItems schemeItems, Model model)
184
			throws Exception {
185
		for (int schemeId : schemeItems.getSchemeIds()) {
23928 govind 186
			if (schemeRepository.selectById(schemeId) != null)
187
				for (int itemId : schemeItems.getItemIds()) {
188
					if (tagListingRepository.selectByItemIdsAndTagIds(new HashSet<>(Arrays.asList(itemId)),
189
							new HashSet<>(Arrays.asList(4, 7))).size() > 0) {
190
						SchemeItem si = new SchemeItem();
191
						si.setItemId(itemId);
192
						si.setSchemeId(schemeId);
193
						try {
194
							schemeItemRepository.persist(si);
195
						} catch (Exception e) {
196
							LOGGER.info("Scheme aleady exist");
197
						}
198
						model.addAttribute("response", mvcResponseSender.createResponseString(true));
199
					} else {
200
						model.addAttribute("response", mvcResponseSender.createResponseString(false));
201
						throw new ProfitMandiBusinessException("ItemId", itemId, "Invalid Item Id");
202
					}
203
				}
204
		}
205
		return "response";
206
	}
25256 amit.gupta 207
 
23928 govind 208
	@RequestMapping(value = "/addItemToScheme", method = RequestMethod.POST)
209
	public String updateScheme(HttpServletRequest request, @RequestBody SchemeItems schemeItems, Model model)
210
			throws Exception {
211
		for (int schemeId : schemeItems.getSchemeIds()) {
23914 govind 212
			List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(schemeId);
23786 amit.gupta 213
			if (schemeRepository.selectById(schemeId) != null)
214
				for (int itemId : schemeItems.getItemIds()) {
215
					if (tagListingRepository.selectByItemIdsAndTagIds(new HashSet<>(Arrays.asList(itemId)),
23914 govind 216
							new HashSet<>(Arrays.asList(4, 7))).size() > 0 && (!(itemIds.contains(itemId)))) {
23786 amit.gupta 217
						SchemeItem si = new SchemeItem();
218
						si.setItemId(itemId);
219
						si.setSchemeId(schemeId);
220
						try {
221
							schemeItemRepository.persist(si);
222
						} catch (Exception e) {
23914 govind 223
							LOGGER.info("Scheme already exist");
23786 amit.gupta 224
						}
225
						model.addAttribute("response", mvcResponseSender.createResponseString(true));
226
					} else {
227
						model.addAttribute("response", mvcResponseSender.createResponseString(false));
23556 amit.gupta 228
					}
229
				}
230
		}
231
		return "response";
232
	}
23914 govind 233
 
234
	@RequestMapping(value = "/schemes/delete", method = RequestMethod.DELETE)
235
	public String deleteShcemes(HttpServletRequest request,
236
			@RequestParam(name = "schemeId", required = false, defaultValue = "0") int schemeId,
237
			@RequestParam(name = "itemId", required = false, defaultValue = "0") int itemId, Model model)
23819 govind 238
			throws Exception {
23914 govind 239
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
240
		if (!(schemeId == 0 && itemId == 0) || (!(schemeId == 0 || itemId == 0))) {
241
			schemeItemRepository.deletebyItemIdsandSchemeIds(itemId, schemeId);
242
 
243
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
244
 
245
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
246
 
247
		}
248
		return "response";
249
	}
250
 
251
	@RequestMapping(value = "/extendAllSchemes", method = RequestMethod.POST)
252
	public String extendAllScheme(HttpServletRequest request, @RequestBody LocalDateTime extendDatetime, Model model)
253
			throws Exception {
254
 
255
		List<Scheme> schemes = schemeRepository.selectActiveAll();
256
		if (schemes.size() > 0) {
257
			for (Scheme scheme : schemes) {
25261 amit.gupta 258
				if (scheme.getExpireTimestamp() == null) {
23914 govind 259
					scheme.setEndDateTime(extendDatetime);
260
					schemeRepository.persist(scheme);
23819 govind 261
				}
262
			}
23914 govind 263
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
264
			return "response";
23819 govind 265
		}
23914 govind 266
		model.addAttribute("response", mvcResponseSender.createResponseString(false));
23819 govind 267
		return "response";
268
	}
23786 amit.gupta 269
 
23914 govind 270
	@RequestMapping(value = "/extendSchemeById", method = RequestMethod.POST)
271
	public String extendSchemeById(HttpServletRequest request,
23819 govind 272
 
23914 govind 273
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
274
			@RequestBody LocalDateTime extendDatetime, Model model) throws Exception {
275
 
276
		LOGGER.info("ExtendDatetime" + extendDatetime);
277
		LOGGER.info("schemeId" + schemeId);
278
		Scheme scheme = schemeRepository.selectById(schemeId);
279
		if ((!(scheme.getActiveTimestamp() == null)) && scheme.getExpireTimestamp() == null) {
280
			scheme.setEndDateTime(extendDatetime);
281
			schemeRepository.persist(scheme);
282
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
283
			return "response";
284
		}
285
		model.addAttribute("response", mvcResponseSender.createResponseString(false));
286
		return "response";
287
	}
288
 
22860 ashik.ali 289
	@RequestMapping(value = "/createScheme", method = RequestMethod.POST)
23715 govind 290
	public String createScheme(HttpServletRequest request, @RequestBody CreateSchemeRequest createSchemeRequest,
291
			@RequestParam(name = "offset", defaultValue = "0") int offset,
23752 govind 292
			@RequestParam(name = "limit", defaultValue = "10") int limit,
293
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
294
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
23715 govind 295
			throws ProfitMandiBusinessException {
22927 ashik.ali 296
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
22860 ashik.ali 297
		LOGGER.info("CreateSchemeRequest {}", createSchemeRequest);
22927 ashik.ali 298
		schemeService.saveScheme(loginDetails.getFofoId(), createSchemeRequest);
299
		LOGGER.info("Scheme saved successfully");
23271 ashik.ali 300
		long size = schemeRepository.selectAllCount();
22927 ashik.ali 301
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
302
		model.addAttribute("schemes", schemes);
303
		model.addAttribute("start", offset + 1);
23271 ashik.ali 304
		model.addAttribute("size", size);
23752 govind 305
		model.addAttribute("searchItem", searchItem);
306
		model.addAttribute("searchTerm", searchTerm);
23914 govind 307
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23715 govind 308
		if (schemes.size() < limit) {
22927 ashik.ali 309
			model.addAttribute("end", offset + schemes.size());
23786 amit.gupta 310
		} else {
22927 ashik.ali 311
			model.addAttribute("end", offset + limit);
312
		}
313
		return "schemes";
23786 amit.gupta 314
 
22860 ashik.ali 315
	}
23786 amit.gupta 316
 
22860 ashik.ali 317
	@RequestMapping(value = "/getSchemes", method = RequestMethod.GET)
23715 govind 318
	public String getSchemes(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
23752 govind 319
			@RequestParam(name = "limit", defaultValue = "10") int limit,
320
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
26802 tejbeer 321
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
322
			@RequestParam(name = "partnerType", required = false, defaultValue = "") PartnerType partnerType,
323
			Model model) throws ProfitMandiBusinessException {
23343 ashik.ali 324
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
26802 tejbeer 325
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
326
 
327
		LOGGER.info("isAdmin" + isAdmin);
23343 ashik.ali 328
		List<Scheme> schemes = null;
329
		long size = 0;
26802 tejbeer 330
		LOGGER.info("partnerType" + partnerType);
331
		if (partnerType == null) {
332
			partnerType = partnerTypeChangeService.getTypeOnDate(loginDetails.getFofoId(), LocalDate.now());
23343 ashik.ali 333
		}
26802 tejbeer 334
		if (!(searchTerm.equals("")) && searchItem.equals("")) {
335
			schemes = schemeRepository.selectBySearchTerm(searchTerm, offset, limit);
336
			if (!(schemes.size() == 0)) {
337
				size = schemeRepository.selectAllCount();
338
				LOGGER.info("schemes" + schemes);
339
				model.addAttribute("schemes", schemes);
340
				model.addAttribute("start", offset + 1);
341
				model.addAttribute("size", size);
342
				model.addAttribute("searchTerm", searchTerm);
343
				model.addAttribute("searchItem", searchItem);
26912 tejbeer 344
				model.addAttribute("partnerType", partnerType);
26802 tejbeer 345
				model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
346
				if (schemes.size() < limit) {
347
					model.addAttribute("end", offset + schemes.size());
348
				} else {
349
					model.addAttribute("end", offset + limit);
350
				}
351
			} else {
352
				throw new ProfitMandiBusinessException("SchemeId", searchTerm, "SchemeId Not Found");
353
			}
23786 amit.gupta 354
		} else {
26802 tejbeer 355
			int itemId = 0;
356
			if (!(searchItem.equals("")) && searchTerm.equals("")) {
357
				itemId = Integer.parseInt(searchItem);
358
			}
359
 
360
			schemes = schemeService.selectSchemeByPartnerType(partnerType, itemId, isAdmin, offset, limit);
361
			size = schemeService.selectSchemeCount(partnerType, itemId, isAdmin);
362
			model.addAttribute("schemes", schemes);
363
			model.addAttribute("start", offset + 1);
364
			model.addAttribute("size", size);
365
			model.addAttribute("searchItem", searchItem);
366
			model.addAttribute("searchTerm", searchTerm);
26912 tejbeer 367
			model.addAttribute("partnerType", partnerType);
26802 tejbeer 368
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
369
			if (schemes.size() < limit) {
370
				model.addAttribute("end", offset + schemes.size());
371
			} else {
372
				model.addAttribute("end", offset + limit);
373
			}
22860 ashik.ali 374
		}
23786 amit.gupta 375
		// model.addAttribute("roleTypes", loginDetails.getRoleTypes());
22860 ashik.ali 376
		return "schemes";
377
	}
23786 amit.gupta 378
 
22860 ashik.ali 379
	@RequestMapping(value = "/getPaginatedSchemes", method = RequestMethod.GET)
23786 amit.gupta 380
	public String getPaginatedSchemes(HttpServletRequest request,
381
			@RequestParam(name = "offset", defaultValue = "0") int offset,
26802 tejbeer 382
			@RequestParam(name = "limit", defaultValue = "10") int limit,
383
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
384
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
385
			@RequestParam(name = "partnerType", required = false, defaultValue = "") PartnerType partnerType,
386
			Model model) throws ProfitMandiBusinessException {
387
 
23343 ashik.ali 388
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
26802 tejbeer 389
		boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
390
 
23271 ashik.ali 391
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
23343 ashik.ali 392
		List<Scheme> schemes = null;
26802 tejbeer 393
		/*
394
		 * if (roleManager.isAdmin(loginDetails.getRoleIds())) { schemes =
395
		 * schemeRepository.selectAll(offset, limit); } else { schemes =
396
		 * schemeRepository.selectActiveAll(offset, limit); }
397
		 */
398
		if (partnerType == null) {
399
			partnerType = partnerTypeChangeService.getTypeOnDate(loginDetails.getFofoId(), LocalDate.now());
23343 ashik.ali 400
		}
26802 tejbeer 401
		LOGGER.info("partnerType" + partnerType);
402
		int itemId = 0;
403
		if (!(searchItem.equals("")) && searchTerm.equals("")) {
404
			itemId = Integer.parseInt(searchItem);
405
		}
406
		schemes = schemeService.selectSchemeByPartnerType(partnerType, itemId, isAdmin, offset, limit);
407
 
22860 ashik.ali 408
		model.addAttribute("schemes", schemes);
26912 tejbeer 409
		model.addAttribute("partnerType", partnerType);
23914 govind 410
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
22860 ashik.ali 411
		return "schemes-paginated";
412
	}
23786 amit.gupta 413
 
23020 ashik.ali 414
	@RequestMapping(value = "/schemes/downloadPage", method = RequestMethod.GET)
23786 amit.gupta 415
	public String downloadPage(HttpServletRequest request, Model model) {
23020 ashik.ali 416
		return "schemes-download";
417
	}
23786 amit.gupta 418
 
23020 ashik.ali 419
	@RequestMapping(value = "/schemes/download", method = RequestMethod.GET)
23786 amit.gupta 420
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request,
23914 govind 421
			@RequestParam(name = ProfitMandiConstants.START_DATE_TIME) String startDateTimeString,
422
			@RequestParam(name = ProfitMandiConstants.END_DATE_TIME) String endDateTimeString, Model model)
23786 amit.gupta 423
			throws ProfitMandiBusinessException {
23914 govind 424
		LocalDateTime startDateTime = StringUtils.toDateTime(startDateTimeString,
24406 amit.gupta 425
				DateTimePattern.DD_MM_yyyy_T_HH_MM_SS);
426
		LocalDateTime endDateTime = StringUtils.toDateTime(endDateTimeString, DateTimePattern.DD_MM_yyyy_T_HH_MM_SS);
23914 govind 427
 
23020 ashik.ali 428
		List<SchemeModel> schemeModels = schemeService.getAllSchemeModels(startDateTime, endDateTime);
23786 amit.gupta 429
 
23020 ashik.ali 430
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
431
		ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
23786 amit.gupta 432
 
433
		final HttpHeaders headers = new HttpHeaders();
434
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
23020 ashik.ali 435
		headers.set("Content-disposition", "inline; filename=SchemesReport.xlsx");
23786 amit.gupta 436
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
437
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
438
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
439
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
440
 
441
		// return responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
23020 ashik.ali 442
	}
23786 amit.gupta 443
 
22860 ashik.ali 444
	@RequestMapping(value = "/getSchemeById", method = RequestMethod.GET)
23786 amit.gupta 445
	public String getSchemeById(HttpServletRequest request,
446
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId, Model model)
447
			throws ProfitMandiBusinessException {
23343 ashik.ali 448
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
22860 ashik.ali 449
		Scheme scheme = schemeService.getSchemeById(schemeId);
450
		model.addAttribute("scheme", scheme);
24445 amit.gupta 451
		model.addAttribute("isAdmin", roleManager.isAdmin(loginDetails.getRoleIds()));
22860 ashik.ali 452
		return "scheme-details";
23914 govind 453
 
22860 ashik.ali 454
	}
23786 amit.gupta 455
 
22860 ashik.ali 456
	@RequestMapping(value = "/activeSchemeById", method = RequestMethod.PUT)
23786 amit.gupta 457
	public String activeSchemeById(HttpServletRequest request,
458
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
459
			@RequestParam(name = "offset", defaultValue = "0") int offset,
460
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
461
			throws ProfitMandiBusinessException {
22860 ashik.ali 462
		schemeService.activeSchemeById(schemeId);
463
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
464
		model.addAttribute("schemes", schemes);
465
		return "schemes-paginated";
466
	}
23786 amit.gupta 467
 
22860 ashik.ali 468
	@RequestMapping(value = "/expireSchemeById", method = RequestMethod.PUT)
23786 amit.gupta 469
	public String expireSchemeById(HttpServletRequest request,
470
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
25069 amit.gupta 471
			@RequestParam(name = ProfitMandiConstants.EXPIRE_TIMESTAMP) LocalDateTime expiryTimestamp,
23786 amit.gupta 472
			@RequestParam(name = "offset", defaultValue = "0") int offset,
473
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
474
			throws ProfitMandiBusinessException {
25069 amit.gupta 475
		schemeService.expireSchemeById(schemeId, expiryTimestamp);
22860 ashik.ali 476
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
477
		model.addAttribute("schemes", schemes);
478
		return "schemes-paginated";
479
	}
23786 amit.gupta 480
 
23784 ashik.ali 481
	@RequestMapping(value = "/getSchemesJson", method = RequestMethod.GET)
23786 amit.gupta 482
	public ResponseEntity<?> getSchemesJson(HttpServletRequest request,
483
			@RequestParam(name = "offset", defaultValue = "0") int offset,
484
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
485
			throws ProfitMandiBusinessException {
23784 ashik.ali 486
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
487
		return responseSender.ok(schemeService.getSchemes(loginDetails.getRoleIds(), offset, limit));
488
	}
26802 tejbeer 489
 
26763 tejbeer 490
	@RequestMapping(value = "/searchSchemeByCategory")
491
	public String getSchemeByCategory(HttpServletRequest request,
492
			@RequestParam(name = "offset", defaultValue = "0") int offset,
493
			@RequestParam(name = "limit", defaultValue = "10") int limit,
494
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
495
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
496
			@RequestParam(name = "category", required = true, defaultValue = "") PartnerType category, Model model)
497
			throws ProfitMandiBusinessException {
498
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
499
		List<Scheme> schemes = null;
500
		long size = 0;
26802 tejbeer 501
 
502
		schemes = schemeRepository.selectByPartnerType(category, offset, limit);
503
 
504
		if (!(schemes.size() == 0)) {
505
			size = schemeRepository.selectAllCount();
506
			LOGGER.info("schemes" + schemes);
507
			model.addAttribute("schemes", schemes);
508
			model.addAttribute("start", offset + 1);
509
			model.addAttribute("size", size);
510
			model.addAttribute("searchTerm", searchTerm);
511
			model.addAttribute("searchItem", searchItem);
512
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
513
			if (schemes.size() < limit) {
514
				model.addAttribute("end", offset + schemes.size());
515
			} else {
516
				model.addAttribute("end", offset + limit);
26763 tejbeer 517
			}
26802 tejbeer 518
		}
519
 
26763 tejbeer 520
		return "schemes";
521
	}
26802 tejbeer 522
 
26763 tejbeer 523
	@RequestMapping(value = "/getSchemeByCategoryPaginated")
524
	public String getSchemeByCategoryPaginated(HttpServletRequest request,
525
			@RequestParam(name = "offset", defaultValue = "0") int offset,
526
			@RequestParam(name = "limit", defaultValue = "10") int limit,
527
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
528
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
529
			@RequestParam(name = "category", required = true, defaultValue = "") PartnerType category, Model model)
530
			throws ProfitMandiBusinessException {
531
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
532
		LOGGER.info("In search Item....");
533
		List<Scheme> schemes = null;
26802 tejbeer 534
 
26763 tejbeer 535
		schemes = schemeRepository.selectByPartnerType(category, offset, limit);
23506 amit.gupta 536
 
26763 tejbeer 537
		model.addAttribute("schemes", schemes);
538
		model.addAttribute("searchItem", searchItem);
539
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
540
		return "schemes-paginated";
541
	}
542
 
23752 govind 543
	@RequestMapping(value = "/searchScheme")
544
	public String getSchemeBySchemeId(HttpServletRequest request,
545
			@RequestParam(name = "offset", defaultValue = "0") int offset,
546
			@RequestParam(name = "limit", defaultValue = "10") int limit,
547
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
548
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem, Model model)
549
			throws ProfitMandiBusinessException {
550
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
551
		List<Scheme> schemes = null;
552
		long size = 0;
553
		if (!(searchTerm.equals("")) && searchItem.equals("")) {
554
			schemes = schemeRepository.selectBySearchTerm(searchTerm, offset, limit);
23786 amit.gupta 555
			if (!(schemes.size() == 0)) {
556
				size = schemeRepository.selectAllCount();
557
				LOGGER.info("schemes" + schemes);
558
				model.addAttribute("schemes", schemes);
559
				model.addAttribute("start", offset + 1);
560
				model.addAttribute("size", size);
561
				model.addAttribute("searchTerm", searchTerm);
562
				model.addAttribute("searchItem", searchItem);
23914 govind 563
				model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23786 amit.gupta 564
				if (schemes.size() < limit) {
565
					model.addAttribute("end", offset + schemes.size());
566
				} else {
567
					model.addAttribute("end", offset + limit);
568
				}
23752 govind 569
			} else {
23786 amit.gupta 570
				throw new ProfitMandiBusinessException("SchemeId", searchTerm, "SchemeId Not Found");
23752 govind 571
			}
572
		} else if (!(searchItem.equals("")) && searchTerm.equals("")) {
573
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(Integer.parseInt(searchItem));
23786 amit.gupta 574
			if (!(schemeIds.size() == 0)) {
23752 govind 575
				LOGGER.info("schemeIds in searchItemScheme" + schemeIds);
576
				schemes = schemeRepository.selectBySchemeIds(schemeIds, offset, limit);
577
				size = schemeIds.size();
578
				LOGGER.info("Size" + size);
579
				model.addAttribute("schemes", schemes);
580
				model.addAttribute("start", offset + 1);
581
				model.addAttribute("size", size);
582
				model.addAttribute("searchItem", searchItem);
583
				model.addAttribute("searchTerm", searchTerm);
23914 govind 584
				model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 585
				if (schemes.size() < limit) {
586
					model.addAttribute("end", offset + schemes.size());
587
				} else {
588
					model.addAttribute("end", offset + limit);
589
				}
590
 
591
			} else {
592
				throw new ProfitMandiBusinessException("SchemeIds", searchItem, "SchemeId Not Found");
593
			}
594
		} else {
23798 amit.gupta 595
			if (roleManager.isAdmin(loginDetails.getRoleIds())) {
23752 govind 596
				schemes = schemeRepository.selectAll(offset, limit);
597
				size = schemeRepository.selectAllCount();
598
			} else {
599
				schemes = schemeRepository.selectActiveAll(offset, limit);
600
				size = schemeRepository.selectAllActiveCount();
601
			}
602
			model.addAttribute("schemes", schemes);
603
			model.addAttribute("start", offset + 1);
604
			model.addAttribute("size", size);
605
			model.addAttribute("searchItem", searchItem);
606
			model.addAttribute("searchTerm", searchTerm);
23914 govind 607
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 608
			if (schemes.size() < limit) {
609
				model.addAttribute("end", offset + schemes.size());
610
			} else {
611
				model.addAttribute("end", offset + limit);
612
			}
613
		}
614
		return "schemes";
615
	}
616
 
617
	@RequestMapping(value = "/searchItemSchemePanigated")
618
	public String getSchemeByItemPanigated(HttpServletRequest request,
619
			@RequestParam(name = "offset", defaultValue = "0") int offset,
620
			@RequestParam(name = "limit", defaultValue = "10") int limit,
621
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem, Model model)
622
			throws ProfitMandiBusinessException {
23914 govind 623
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23752 govind 624
		LOGGER.info("In search Item....");
625
		List<Scheme> schemes = null;
626
		if (!searchItem.equals("")) {
627
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(Integer.parseInt(searchItem));
628
			if (schemeIds != null) {
629
				LOGGER.info(schemeIds);
630
				schemes = schemeRepository.selectBySchemeIds(schemeIds, offset, limit);
631
 
632
			}
633
		}
634
		model.addAttribute("schemes", schemes);
635
		model.addAttribute("searchItem", searchItem);
23914 govind 636
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 637
		return "schemes-paginated";
638
 
639
	}
640
 
26588 tejbeer 641
	@RequestMapping(value = "/getCreateOffer", method = RequestMethod.GET)
642
	public String getCreateOffer(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
643
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
644
		List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
645
				.collect(Collectors.toList());
646
 
647
		List<String> brands = mongoClient.getMongoBrands(loginDetails.getFofoId(), null, 3).stream()
648
				.map(x -> (String) x.get("name")).collect(Collectors.toList());
649
 
650
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
651
 
652
		model.addAttribute("customRetailersMap", customRetailersMap);
653
		model.addAttribute("itemCriteriaType", ItemCriteriaType.values());
654
		model.addAttribute("brands", brands);
27171 tejbeer 655
		model.addAttribute("partnerCategories", PartnerType.values());
27377 amit.gupta 656
		model.addAttribute("warehouseRegion", ProfitMandiConstants.WAREHOUSE_MAP);
657
		// model.addAttribute("brands", "");
26588 tejbeer 658
		return "scheme_offer";
659
 
660
	}
661
 
662
	@RequestMapping(value = "/createOffer", method = RequestMethod.POST)
663
	public String createOffer(HttpServletRequest request, @RequestBody CreateOfferRequest createOfferRequest,
664
			Model model) throws Exception {
665
		LOGGER.info("createOfferRequest" + createOfferRequest.getAmountOffer());
666
 
667
		Offer offer = new Offer();
668
		offer.setName(createOfferRequest.getName());
669
		offer.setDescription(createOfferRequest.getDescription());
670
		offer.setTargetType(createOfferRequest.getTargetType());
671
		offer.setAmountType(createOfferRequest.getAmountType());
27377 amit.gupta 672
		offer.setStartDate(createOfferRequest.getStartDate());
673
		offer.setEndDate(createOfferRequest.getEndDate());
26588 tejbeer 674
		offer.setCreatedTimestamp(LocalDateTime.now());
26694 tejbeer 675
		offer.setSchemeType(createOfferRequest.getSchemeType());
27377 amit.gupta 676
		// offer.setItemCreteria(createOfferRequest.getItemCriteria());
677
		// offer.setCriteria(createOfferRequest.getCriteria());
678
		// offer.setPartnerType(createOfferRequest.getPartnerType());
26588 tejbeer 679
 
680
		if (createOfferRequest.getItemCriteria().equals(ItemCriteriaType.Item_Model)) {
681
			ItemTypeParams itemTypeParams = new ItemTypeParams();
682
			itemTypeParams.setCatalogId(createOfferRequest.getCatalogIds());
683
			SimpleItemType sit = new SimpleItemType(itemTypeParams);
684
			sit.setItemTypeParams(itemTypeParams);
27377 amit.gupta 685
			// offer.setItemParam(gson.toJson(itemTypeParams));
26588 tejbeer 686
		} else if (createOfferRequest.getItemCriteria().equals(ItemCriteriaType.Multiple_Brand)) {
687
			ItemTypeParams itemTypeParams = new ItemTypeParams();
688
			itemTypeParams.setBrands(createOfferRequest.getBrands());
689
			SimpleItemType sit = new SimpleItemType(itemTypeParams);
690
			sit.setItemTypeParams(itemTypeParams);
27377 amit.gupta 691
			// offer.setItemParam(gson.toJson(itemTypeParams));
26588 tejbeer 692
		}
693
 
694
		offerRepository.persist(offer);
26674 tejbeer 695
		if (createOfferRequest.getFofoIds().isEmpty()) {
696
			List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
697
					.collect(Collectors.toList());
698
			for (Integer fofoId : fofoIds) {
699
				PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fofoId,
27377 amit.gupta 700
						offer.getStartDate().toLocalDate());
701
				/*
702
				 * if (offer.getPartner().equals(partnerType)) { LOGGER.info("partnerType" +
703
				 * partnerType); LOGGER.info("fofoId" + fofoId);
704
				 * 
705
				 * OfferPartner op = new OfferPartner(); op.setFofoId(fofoId);
706
				 * op.setOfferId(offer.getId()); offerPartnerRepository.persist(op); }
707
				 */
26674 tejbeer 708
 
709
			}
26588 tejbeer 710
		}
26674 tejbeer 711
 
712
		else {
713
 
714
			for (Integer fofoId : createOfferRequest.getFofoIds()) {
715
				OfferPartner op = new OfferPartner();
716
				op.setFofoId(fofoId);
717
				op.setOfferId(offer.getId());
718
				offerPartnerRepository.persist(op);
719
			}
720
		}
26588 tejbeer 721
		for (AmountMarginModel amm : createOfferRequest.getAmountOffer()) {
722
			Offermargin om = new Offermargin();
723
			om.setValue(amm.getValue());
724
			om.setMargin(amm.getMargin());
725
			om.setOfferId(offer.getId());
726
			offerMarginRepository.persist(om);
727
		}
728
 
729
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
730
		return "response";
731
 
732
	}
733
 
26674 tejbeer 734
	@RequestMapping(value = "/getOffers", method = RequestMethod.GET)
735
	public String createOffer(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
26719 tejbeer 736
			@RequestParam(name = "limit", defaultValue = "10") int limit,
737
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
738
			throws Exception {
26674 tejbeer 739
 
26719 tejbeer 740
		List<Offer> offers = null;
741
		long size = 0;
26674 tejbeer 742
 
26719 tejbeer 743
		offers = offerRepository.selectAll(offset, limit);
744
		size = offerRepository.selectAllCount();
745
 
26694 tejbeer 746
		model.addAttribute("offers", offers);
26719 tejbeer 747
		model.addAttribute("start", offset + 1);
748
		model.addAttribute("size", size);
749
		model.addAttribute("searchTerm", searchTerm);
26674 tejbeer 750
 
26719 tejbeer 751
		if (offers.size() < limit) {
752
			model.addAttribute("end", offset + offers.size());
753
		} else {
754
			model.addAttribute("end", offset + limit);
755
		}
756
 
26674 tejbeer 757
		return "offer_history";
758
 
759
	}
760
 
26719 tejbeer 761
	@RequestMapping(value = "/getPaginatedOffers", method = RequestMethod.GET)
762
	public String getPaginatedOffers(HttpServletRequest request,
763
			@RequestParam(name = "offset", defaultValue = "0") int offset,
764
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
765
			throws ProfitMandiBusinessException {
766
 
767
		List<Offer> offers = null;
768
		offers = offerRepository.selectAll(offset, limit);
769
		model.addAttribute("offers", offers);
770
 
771
		return "offer_history_paginated";
772
	}
773
 
774
	@RequestMapping(value = "/searchOffer")
775
	public String getOfferById(HttpServletRequest request,
776
			@RequestParam(name = "offset", defaultValue = "0") int offset,
777
			@RequestParam(name = "limit", defaultValue = "10") int limit,
778
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
779
			throws ProfitMandiBusinessException {
780
		List<Offer> offers = null;
781
		long size = 0;
782
		if (!(searchTerm.equals(""))) {
783
			offers = offerRepository.selectBySearchTerm(searchTerm, offset, limit);
784
			if (!(offers.size() == 0)) {
785
				size = offerRepository.selectAllCount();
786
				LOGGER.info("offers" + offers);
787
				model.addAttribute("offers", offers);
788
				model.addAttribute("start", offset + 1);
789
				model.addAttribute("size", size);
790
				model.addAttribute("searchTerm", searchTerm);
791
				if (offers.size() < limit) {
792
					model.addAttribute("end", offset + offers.size());
793
				} else {
794
					model.addAttribute("end", offset + limit);
795
				}
796
			} else {
797
				throw new ProfitMandiBusinessException("OfferId", searchTerm, "offerId Not Found");
798
			}
799
		} else {
800
 
801
			offers = offerRepository.selectAll(offset, limit);
802
			size = schemeRepository.selectAllCount();
803
 
804
			model.addAttribute("offers", offers);
805
			model.addAttribute("start", offset + 1);
806
			model.addAttribute("size", size);
807
			model.addAttribute("searchTerm", searchTerm);
808
 
809
			if (offers.size() < limit) {
810
				model.addAttribute("end", offset + offers.size());
811
			} else {
812
				model.addAttribute("end", offset + limit);
813
			}
814
		}
815
		return "offer_history";
816
	}
817
 
26694 tejbeer 818
	@RequestMapping(value = "/updateOfferStatus", method = RequestMethod.POST)
819
	public String updateOfferStatus(HttpServletRequest request, @RequestParam int id, Model model) throws Exception {
26674 tejbeer 820
 
26694 tejbeer 821
		Offer offer = offerRepository.selectById(id);
822
		LOGGER.info("status" + offer.getStatus());
823
 
824
		if (offer.getStatus() == false) {
825
			offer.setStatus(true);
826
		} else {
827
			offer.setStatus(false);
26674 tejbeer 828
		}
27361 amit.gupta 829
		offer.setCreatedTimestamp(LocalDateTime.now());
26694 tejbeer 830
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
831
		return "response";
26674 tejbeer 832
 
833
	}
834
 
835
	@RequestMapping(value = "/getOfferMargin", method = RequestMethod.GET)
836
	public String getOfferMargin(HttpServletRequest request,
837
			@RequestParam(name = "offerId", defaultValue = "0") int offerId, Model model) throws Exception {
838
		Offer offer = offerRepository.selectById(offerId);
839
		List<Integer> fofoIds = fofoStoreRepository.selectActiveStores().stream().map(x -> x.getId())
840
				.collect(Collectors.toList());
841
		Map<Integer, CustomRetailer> customRetailersMap = retailerService.getFofoRetailers(fofoIds);
842
		List<OfferPartner> offerPartners = offerPartnerRepository.selectByOfferId(offerId);
843
 
844
		LOGGER.info("offerId" + offer.getId());
26675 tejbeer 845
 
27377 amit.gupta 846
		Map<Integer, Double> value = offerRepository.selectSumOfferByRetailer(offer.getStartDate(), offer.getEndDate(),
847
				0, offer, true);
26674 tejbeer 848
 
849
		LOGGER.info("value" + value);
850
		List<Offermargin> offerMargin = offerMarginRepository.selectByOfferId(offerId);
851
		Map<Integer, Double> partnerValueMap = new HashMap<>();
26675 tejbeer 852
		Map<Integer, List<Double>> partnerMarginMap = new HashMap<Integer, List<Double>>();
26674 tejbeer 853
		Map<Integer, Integer> shortageAmount = new HashMap<>();
854
 
855
		for (OfferPartner op : offerPartners) {
856
 
857
			LOGGER.info("offerPartneer" + op.getFofoId());
858
			if (value.containsKey(op.getFofoId())) {
859
				partnerValueMap.put(op.getFofoId(), value.get(op.getFofoId()));
860
 
861
			} else {
862
				value.put(op.getFofoId(), 0d);
863
 
864
				partnerValueMap.put(op.getFofoId(), 0d);
865
 
866
			}
26675 tejbeer 867
			List<Double> valSetOne = new ArrayList<Double>();
26674 tejbeer 868
 
869
			for (Offermargin om : offerMargin) {
870
 
871
				if (value.get(op.getFofoId()) <= om.getValue()) {
872
					LOGGER.info("om1" + om.getMargin());
873
					shortageAmount.put(op.getFofoId(), om.getValue() - value.get(op.getFofoId()).intValue());
874
					valSetOne.add(om.getMargin());
875
					partnerMarginMap.put(op.getFofoId(), valSetOne);
876
 
877
					break;
878
				} else {
879
					LOGGER.info("om2" + om.getMargin());
880
					valSetOne.add(om.getMargin());
881
 
882
					int shortage = om.getValue() - value.get(op.getFofoId()).intValue();
883
 
884
					if (shortage < 0) {
885
						shortageAmount.put(op.getFofoId(), 0);
886
					}
887
 
888
					partnerMarginMap.put(op.getFofoId(), valSetOne);
889
 
890
				}
891
			}
892
 
893
		}
894
 
895
		LOGGER.info("partnerMarginMap" + partnerMarginMap);
896
		LOGGER.info("partnerValueMap" + partnerValueMap);
897
		LOGGER.info("shortageAmount" + shortageAmount);
898
 
27377 amit.gupta 899
		/*
900
		 * ItemTypeParams scp = gson.fromJson(offer.getItemParam(),
901
		 * ItemTypeParams.class); if
902
		 * (offer.getItemCriteria().equals(ItemCriteriaType.Multiple_Brand)) {
903
		 * List<String> brands = scp.getBrands(); model.addAttribute("brands", brands);
904
		 * } if (offer.getItemCriteria().equals(ItemCriteriaType.Item_Model)) {
905
		 * List<Integer> catalogIds = scp.getCatalogId(); List<Item> newList = new
906
		 * ArrayList<>(); Set<Integer> catalogId = new HashSet<>(); List<Item> items =
907
		 * itemRepository.selectAllByCatalogIds(catalogIds.stream().collect(Collectors.
908
		 * toSet())); for (Item item : items) { if
909
		 * (catalogId.add(item.getCatalogItemId())) { newList.add(item); } }
910
		 * model.addAttribute("items", newList); }
911
		 */
26674 tejbeer 912
		model.addAttribute("partnerMarginMap", partnerMarginMap);
913
		model.addAttribute("partnerValueMap", partnerValueMap);
914
		model.addAttribute("customRetailersMap", customRetailersMap);
915
		model.addAttribute("offerMargin", offerMargin);
916
		model.addAttribute("offer", offer);
917
		model.addAttribute("shortageAmount", shortageAmount);
918
 
919
		return "offer_margin_detail";
920
 
921
	}
922
 
26719 tejbeer 923
	@RequestMapping(value = "/offerById", method = RequestMethod.GET)
924
	public String offerById(HttpServletRequest request, int offerId, Model model) throws ProfitMandiBusinessException {
925
		Offer offer = offerRepository.selectById(offerId);
926
 
927
		model.addAttribute("offer", offer);
928
 
929
		return "offer-edit";
930
 
931
	}
932
 
933
	@RequestMapping(value = "/extendByOfferId", method = RequestMethod.POST)
934
	public String extendByOfferId(HttpServletRequest request,
935
 
936
			int offerId, @RequestBody LocalDateTime extendDatetime, Model model) throws Exception {
937
 
938
		LOGGER.info("ExtendDatetime" + extendDatetime);
939
		LOGGER.info("schemeId" + offerId);
940
		Offer offer = offerRepository.selectById(offerId);
941
 
27377 amit.gupta 942
		offer.setEndDate(extendDatetime);
26719 tejbeer 943
		offerRepository.persist(offer);
944
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
945
		return "response";
946
	}
947
 
22860 ashik.ali 948
}