Subversion Repositories SmartDukaan

Rev

Rev 25368 | Rev 25505 | 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;
6
import java.time.LocalDateTime;
23556 amit.gupta 7
import java.util.Arrays;
23914 govind 8
import java.util.HashMap;
23556 amit.gupta 9
import java.util.HashSet;
22860 ashik.ali 10
import java.util.List;
23020 ashik.ali 11
import java.util.Map;
25368 amit.gupta 12
import java.util.Set;
22860 ashik.ali 13
 
14
import javax.servlet.http.HttpServletRequest;
25368 amit.gupta 15
import javax.transaction.Transactional;
22860 ashik.ali 16
 
23784 ashik.ali 17
import org.apache.logging.log4j.LogManager;
23568 govind 18
import org.apache.logging.log4j.Logger;
22860 ashik.ali 19
import org.springframework.beans.factory.annotation.Autowired;
23784 ashik.ali 20
import org.springframework.beans.factory.annotation.Qualifier;
23020 ashik.ali 21
import org.springframework.core.io.InputStreamResource;
22
import org.springframework.http.HttpHeaders;
23
import org.springframework.http.HttpStatus;
24
import org.springframework.http.ResponseEntity;
22860 ashik.ali 25
import org.springframework.stereotype.Controller;
26
import org.springframework.ui.Model;
27
import org.springframework.web.bind.annotation.RequestBody;
28
import org.springframework.web.bind.annotation.RequestMapping;
29
import org.springframework.web.bind.annotation.RequestMethod;
30
import org.springframework.web.bind.annotation.RequestParam;
31
 
23020 ashik.ali 32
import com.spice.profitmandi.common.enumuration.DateTimePattern;
22860 ashik.ali 33
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
34
import com.spice.profitmandi.common.model.CreateSchemeRequest;
23914 govind 35
import com.spice.profitmandi.common.model.MapWrapper;
22860 ashik.ali 36
import com.spice.profitmandi.common.model.ProfitMandiConstants;
23557 amit.gupta 37
import com.spice.profitmandi.common.model.SchemeItems;
23020 ashik.ali 38
import com.spice.profitmandi.common.model.SchemeModel;
39
import com.spice.profitmandi.common.util.ExcelUtils;
40
import com.spice.profitmandi.common.util.StringUtils;
23784 ashik.ali 41
import com.spice.profitmandi.common.web.util.ResponseSender;
22860 ashik.ali 42
import com.spice.profitmandi.dao.entity.catalog.Scheme;
23556 amit.gupta 43
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
22860 ashik.ali 44
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
23556 amit.gupta 45
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
23784 ashik.ali 46
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
23506 amit.gupta 47
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
23556 amit.gupta 48
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
23798 amit.gupta 49
import com.spice.profitmandi.service.authentication.RoleManager;
23020 ashik.ali 50
import com.spice.profitmandi.service.inventory.InventoryService;
22860 ashik.ali 51
import com.spice.profitmandi.service.scheme.SchemeService;
52
import com.spice.profitmandi.web.model.LoginDetails;
53
import com.spice.profitmandi.web.util.CookiesProcessor;
23570 amit.gupta 54
import com.spice.profitmandi.web.util.MVCResponseSender;
22860 ashik.ali 55
 
56
@Controller
25369 amit.gupta 57
@Transactional(rollbackOn = Throwable.class)
22860 ashik.ali 58
public class SchemeController {
59
 
23568 govind 60
	private static final Logger LOGGER = LogManager.getLogger(SchemeController.class);
22860 ashik.ali 61
 
62
	@Autowired
22927 ashik.ali 63
	private SchemeService schemeService;
23786 amit.gupta 64
 
22860 ashik.ali 65
	@Autowired
22927 ashik.ali 66
	private SchemeRepository schemeRepository;
22860 ashik.ali 67
 
68
	@Autowired
23556 amit.gupta 69
	private SchemeItemRepository schemeItemRepository;
23786 amit.gupta 70
 
23556 amit.gupta 71
	@Autowired
23570 amit.gupta 72
	private MVCResponseSender mvcResponseSender;
23786 amit.gupta 73
 
23570 amit.gupta 74
	@Autowired
22927 ashik.ali 75
	private CookiesProcessor cookiesProcessor;
23786 amit.gupta 76
 
23020 ashik.ali 77
	@Autowired
23784 ashik.ali 78
	@Qualifier("fofoInventoryService")
23020 ashik.ali 79
	private InventoryService inventoryService;
23556 amit.gupta 80
 
81
	@Autowired
82
	private TagListingRepository tagListingRepository;
23914 govind 83
 
23798 amit.gupta 84
	@Autowired
85
	private RoleManager roleManager;
23786 amit.gupta 86
 
23506 amit.gupta 87
	@Autowired
88
	PurchaseRepository purchaseRepository;
23786 amit.gupta 89
 
23784 ashik.ali 90
	@Autowired
91
	private RoleRepository roleRepository;
23786 amit.gupta 92
 
23784 ashik.ali 93
	@Autowired
94
	private ResponseSender<?> responseSender;
22860 ashik.ali 95
 
96
	@RequestMapping(value = "/createScheme", method = RequestMethod.GET)
23786 amit.gupta 97
	public String createScheme(HttpServletRequest request, Model model) {
98
		// Map<Integer, String> itemIdItemDescriptionMap =
99
		// inventoryService.getAllItemIdItemDescriptionMap();
100
		// model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
25368 amit.gupta 101
		Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
102
		brands.addAll(inventoryService.getAllTagListingBrands(14206));
103
		model.addAttribute("brands", brands);
22860 ashik.ali 104
		return "create-scheme";
105
	}
23786 amit.gupta 106
 
23914 govind 107
	@RequestMapping(value = "/getTagListingItemsByBrand", method = RequestMethod.POST)
108
	public String getTagListingItemsByBrand(HttpServletRequest request, @RequestBody List<String> brands, Model model) {
109
		Map<Integer, String> itemIdItemDescriptionMap = new HashMap<>();
110
		LOGGER.info("brands" + brands);
111
 
112
		List<MapWrapper<Integer, String>> itemIdItemDescriptionMaplist = inventoryService
113
				.getAllTagListingItemIdItemDescriptionMap(new HashSet<>(brands));
114
		for (MapWrapper<Integer, String> mapWrapper : itemIdItemDescriptionMaplist) {
115
			itemIdItemDescriptionMap.put(mapWrapper.getKey(), mapWrapper.getValue());
116
		}
23020 ashik.ali 117
		model.addAttribute("itemIdItemDescriptionMap", itemIdItemDescriptionMap);
23786 amit.gupta 118
		// model.addAttribute("brands", inventoryService.getAllBrands());
23914 govind 119
 
23419 ashik.ali 120
		return "tag-listing-items-description";
23020 ashik.ali 121
	}
23556 amit.gupta 122
 
123
	@RequestMapping(value = "/schemes/update-schemes-page", method = RequestMethod.GET)
124
	public String updateShcemes(HttpServletRequest request) throws ProfitMandiBusinessException {
125
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23799 amit.gupta 126
		if (!roleManager.isAdmin(loginDetails.getRoleIds())) {
23556 amit.gupta 127
			throw new ProfitMandiBusinessException("User", loginDetails.getEmailId(), "Unauthorised access");
128
		}
129
		return "update-schemes-page";
130
	}
25256 amit.gupta 131
 
23556 amit.gupta 132
	@RequestMapping(value = "/schemes/update", method = RequestMethod.POST)
23786 amit.gupta 133
	public String updateShcemes(HttpServletRequest request, @RequestBody SchemeItems schemeItems, Model model)
134
			throws Exception {
135
		for (int schemeId : schemeItems.getSchemeIds()) {
23928 govind 136
			if (schemeRepository.selectById(schemeId) != null)
137
				for (int itemId : schemeItems.getItemIds()) {
138
					if (tagListingRepository.selectByItemIdsAndTagIds(new HashSet<>(Arrays.asList(itemId)),
139
							new HashSet<>(Arrays.asList(4, 7))).size() > 0) {
140
						SchemeItem si = new SchemeItem();
141
						si.setItemId(itemId);
142
						si.setSchemeId(schemeId);
143
						try {
144
							schemeItemRepository.persist(si);
145
						} catch (Exception e) {
146
							LOGGER.info("Scheme aleady exist");
147
						}
148
						model.addAttribute("response", mvcResponseSender.createResponseString(true));
149
					} else {
150
						model.addAttribute("response", mvcResponseSender.createResponseString(false));
151
						throw new ProfitMandiBusinessException("ItemId", itemId, "Invalid Item Id");
152
					}
153
				}
154
		}
155
		return "response";
156
	}
25256 amit.gupta 157
 
23928 govind 158
	@RequestMapping(value = "/addItemToScheme", method = RequestMethod.POST)
159
	public String updateScheme(HttpServletRequest request, @RequestBody SchemeItems schemeItems, Model model)
160
			throws Exception {
161
		for (int schemeId : schemeItems.getSchemeIds()) {
23914 govind 162
			List<Integer> itemIds = schemeItemRepository.selectItemIdsBySchemeId(schemeId);
23786 amit.gupta 163
			if (schemeRepository.selectById(schemeId) != null)
164
				for (int itemId : schemeItems.getItemIds()) {
165
					if (tagListingRepository.selectByItemIdsAndTagIds(new HashSet<>(Arrays.asList(itemId)),
23914 govind 166
							new HashSet<>(Arrays.asList(4, 7))).size() > 0 && (!(itemIds.contains(itemId)))) {
23786 amit.gupta 167
						SchemeItem si = new SchemeItem();
168
						si.setItemId(itemId);
169
						si.setSchemeId(schemeId);
170
						try {
171
							schemeItemRepository.persist(si);
172
						} catch (Exception e) {
23914 govind 173
							LOGGER.info("Scheme already exist");
23786 amit.gupta 174
						}
175
						model.addAttribute("response", mvcResponseSender.createResponseString(true));
176
					} else {
177
						model.addAttribute("response", mvcResponseSender.createResponseString(false));
23556 amit.gupta 178
					}
179
				}
180
		}
181
		return "response";
182
	}
23914 govind 183
 
184
	@RequestMapping(value = "/schemes/delete", method = RequestMethod.DELETE)
185
	public String deleteShcemes(HttpServletRequest request,
186
			@RequestParam(name = "schemeId", required = false, defaultValue = "0") int schemeId,
187
			@RequestParam(name = "itemId", required = false, defaultValue = "0") int itemId, Model model)
23819 govind 188
			throws Exception {
23914 govind 189
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
190
		if (!(schemeId == 0 && itemId == 0) || (!(schemeId == 0 || itemId == 0))) {
191
			schemeItemRepository.deletebyItemIdsandSchemeIds(itemId, schemeId);
192
 
193
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
194
 
195
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
196
 
197
		}
198
		return "response";
199
	}
200
 
201
	@RequestMapping(value = "/extendAllSchemes", method = RequestMethod.POST)
202
	public String extendAllScheme(HttpServletRequest request, @RequestBody LocalDateTime extendDatetime, Model model)
203
			throws Exception {
204
 
205
		List<Scheme> schemes = schemeRepository.selectActiveAll();
206
		if (schemes.size() > 0) {
207
			for (Scheme scheme : schemes) {
25261 amit.gupta 208
				if (scheme.getExpireTimestamp() == null) {
23914 govind 209
					scheme.setEndDateTime(extendDatetime);
210
					schemeRepository.persist(scheme);
23819 govind 211
				}
212
			}
23914 govind 213
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
214
			return "response";
23819 govind 215
		}
23914 govind 216
		model.addAttribute("response", mvcResponseSender.createResponseString(false));
23819 govind 217
		return "response";
218
	}
23786 amit.gupta 219
 
23914 govind 220
	@RequestMapping(value = "/extendSchemeById", method = RequestMethod.POST)
221
	public String extendSchemeById(HttpServletRequest request,
23819 govind 222
 
23914 govind 223
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
224
			@RequestBody LocalDateTime extendDatetime, Model model) throws Exception {
225
 
226
		LOGGER.info("ExtendDatetime" + extendDatetime);
227
		LOGGER.info("schemeId" + schemeId);
228
		Scheme scheme = schemeRepository.selectById(schemeId);
229
		if ((!(scheme.getActiveTimestamp() == null)) && scheme.getExpireTimestamp() == null) {
230
			scheme.setEndDateTime(extendDatetime);
231
			schemeRepository.persist(scheme);
232
			model.addAttribute("response", mvcResponseSender.createResponseString(true));
233
			return "response";
234
		}
235
		model.addAttribute("response", mvcResponseSender.createResponseString(false));
236
		return "response";
237
	}
238
 
22860 ashik.ali 239
	@RequestMapping(value = "/createScheme", method = RequestMethod.POST)
23715 govind 240
	public String createScheme(HttpServletRequest request, @RequestBody CreateSchemeRequest createSchemeRequest,
241
			@RequestParam(name = "offset", defaultValue = "0") int offset,
23752 govind 242
			@RequestParam(name = "limit", defaultValue = "10") int limit,
243
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
244
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
23715 govind 245
			throws ProfitMandiBusinessException {
22927 ashik.ali 246
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
22860 ashik.ali 247
		LOGGER.info("CreateSchemeRequest {}", createSchemeRequest);
22927 ashik.ali 248
		schemeService.saveScheme(loginDetails.getFofoId(), createSchemeRequest);
249
		LOGGER.info("Scheme saved successfully");
23271 ashik.ali 250
		long size = schemeRepository.selectAllCount();
22927 ashik.ali 251
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
252
		model.addAttribute("schemes", schemes);
253
		model.addAttribute("start", offset + 1);
23271 ashik.ali 254
		model.addAttribute("size", size);
23752 govind 255
		model.addAttribute("searchItem", searchItem);
256
		model.addAttribute("searchTerm", searchTerm);
23914 govind 257
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23715 govind 258
		if (schemes.size() < limit) {
22927 ashik.ali 259
			model.addAttribute("end", offset + schemes.size());
23786 amit.gupta 260
		} else {
22927 ashik.ali 261
			model.addAttribute("end", offset + limit);
262
		}
263
		return "schemes";
23786 amit.gupta 264
 
22860 ashik.ali 265
	}
23786 amit.gupta 266
 
22860 ashik.ali 267
	@RequestMapping(value = "/getSchemes", method = RequestMethod.GET)
23715 govind 268
	public String getSchemes(HttpServletRequest request, @RequestParam(name = "offset", defaultValue = "0") int offset,
23752 govind 269
			@RequestParam(name = "limit", defaultValue = "10") int limit,
270
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem,
271
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm, Model model)
23715 govind 272
			throws ProfitMandiBusinessException {
23343 ashik.ali 273
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
274
		List<Scheme> schemes = null;
275
		long size = 0;
23798 amit.gupta 276
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
23343 ashik.ali 277
			schemes = schemeRepository.selectAll(offset, limit);
278
			size = schemeRepository.selectAllCount();
23786 amit.gupta 279
		} else {
23343 ashik.ali 280
			schemes = schemeRepository.selectActiveAll(offset, limit);
281
			size = schemeRepository.selectAllActiveCount();
282
		}
22860 ashik.ali 283
		model.addAttribute("schemes", schemes);
284
		model.addAttribute("start", offset + 1);
23271 ashik.ali 285
		model.addAttribute("size", size);
23752 govind 286
		model.addAttribute("searchItem", searchItem);
287
		model.addAttribute("searchTerm", searchTerm);
23914 govind 288
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23715 govind 289
		if (schemes.size() < limit) {
22860 ashik.ali 290
			model.addAttribute("end", offset + schemes.size());
23786 amit.gupta 291
		} else {
22860 ashik.ali 292
			model.addAttribute("end", offset + limit);
293
		}
23786 amit.gupta 294
		// model.addAttribute("roleTypes", loginDetails.getRoleTypes());
22860 ashik.ali 295
		return "schemes";
296
	}
23786 amit.gupta 297
 
22860 ashik.ali 298
	@RequestMapping(value = "/getPaginatedSchemes", method = RequestMethod.GET)
23786 amit.gupta 299
	public String getPaginatedSchemes(HttpServletRequest request,
300
			@RequestParam(name = "offset", defaultValue = "0") int offset,
301
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
302
			throws ProfitMandiBusinessException {
23343 ashik.ali 303
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23271 ashik.ali 304
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
23343 ashik.ali 305
		List<Scheme> schemes = null;
23798 amit.gupta 306
		if (roleManager.isAdmin(loginDetails.getRoleIds())) {
23343 ashik.ali 307
			schemes = schemeRepository.selectAll(offset, limit);
23786 amit.gupta 308
		} else {
23343 ashik.ali 309
			schemes = schemeRepository.selectActiveAll(offset, limit);
310
		}
22860 ashik.ali 311
		model.addAttribute("schemes", schemes);
23914 govind 312
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
22860 ashik.ali 313
		return "schemes-paginated";
314
	}
23786 amit.gupta 315
 
23020 ashik.ali 316
	@RequestMapping(value = "/schemes/downloadPage", method = RequestMethod.GET)
23786 amit.gupta 317
	public String downloadPage(HttpServletRequest request, Model model) {
23020 ashik.ali 318
		return "schemes-download";
319
	}
23786 amit.gupta 320
 
23020 ashik.ali 321
	@RequestMapping(value = "/schemes/download", method = RequestMethod.GET)
23786 amit.gupta 322
	public ResponseEntity<?> downloadInventoryItemAgingByInterval(HttpServletRequest request,
23914 govind 323
			@RequestParam(name = ProfitMandiConstants.START_DATE_TIME) String startDateTimeString,
324
			@RequestParam(name = ProfitMandiConstants.END_DATE_TIME) String endDateTimeString, Model model)
23786 amit.gupta 325
			throws ProfitMandiBusinessException {
23914 govind 326
		LocalDateTime startDateTime = StringUtils.toDateTime(startDateTimeString,
24406 amit.gupta 327
				DateTimePattern.DD_MM_yyyy_T_HH_MM_SS);
328
		LocalDateTime endDateTime = StringUtils.toDateTime(endDateTimeString, DateTimePattern.DD_MM_yyyy_T_HH_MM_SS);
23914 govind 329
 
23020 ashik.ali 330
		List<SchemeModel> schemeModels = schemeService.getAllSchemeModels(startDateTime, endDateTime);
23786 amit.gupta 331
 
23020 ashik.ali 332
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
333
		ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
23786 amit.gupta 334
 
335
		final HttpHeaders headers = new HttpHeaders();
336
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
23020 ashik.ali 337
		headers.set("Content-disposition", "inline; filename=SchemesReport.xlsx");
23786 amit.gupta 338
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
339
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
340
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
341
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
342
 
343
		// return responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
23020 ashik.ali 344
	}
23786 amit.gupta 345
 
22860 ashik.ali 346
	@RequestMapping(value = "/getSchemeById", method = RequestMethod.GET)
23786 amit.gupta 347
	public String getSchemeById(HttpServletRequest request,
348
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId, Model model)
349
			throws ProfitMandiBusinessException {
23343 ashik.ali 350
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
22860 ashik.ali 351
		Scheme scheme = schemeService.getSchemeById(schemeId);
352
		model.addAttribute("scheme", scheme);
24445 amit.gupta 353
		model.addAttribute("isAdmin", roleManager.isAdmin(loginDetails.getRoleIds()));
22860 ashik.ali 354
		return "scheme-details";
23914 govind 355
 
22860 ashik.ali 356
	}
23786 amit.gupta 357
 
22860 ashik.ali 358
	@RequestMapping(value = "/activeSchemeById", method = RequestMethod.PUT)
23786 amit.gupta 359
	public String activeSchemeById(HttpServletRequest request,
360
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
361
			@RequestParam(name = "offset", defaultValue = "0") int offset,
362
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
363
			throws ProfitMandiBusinessException {
22860 ashik.ali 364
		schemeService.activeSchemeById(schemeId);
365
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
366
		model.addAttribute("schemes", schemes);
367
		return "schemes-paginated";
368
	}
23786 amit.gupta 369
 
22860 ashik.ali 370
	@RequestMapping(value = "/expireSchemeById", method = RequestMethod.PUT)
23786 amit.gupta 371
	public String expireSchemeById(HttpServletRequest request,
372
			@RequestParam(name = ProfitMandiConstants.SCHEME_ID) int schemeId,
25069 amit.gupta 373
			@RequestParam(name = ProfitMandiConstants.EXPIRE_TIMESTAMP) LocalDateTime expiryTimestamp,
23786 amit.gupta 374
			@RequestParam(name = "offset", defaultValue = "0") int offset,
375
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
376
			throws ProfitMandiBusinessException {
25069 amit.gupta 377
		schemeService.expireSchemeById(schemeId, expiryTimestamp);
22860 ashik.ali 378
		List<Scheme> schemes = schemeRepository.selectAll(offset, limit);
379
		model.addAttribute("schemes", schemes);
380
		return "schemes-paginated";
381
	}
23786 amit.gupta 382
 
23784 ashik.ali 383
	@RequestMapping(value = "/getSchemesJson", method = RequestMethod.GET)
23786 amit.gupta 384
	public ResponseEntity<?> getSchemesJson(HttpServletRequest request,
385
			@RequestParam(name = "offset", defaultValue = "0") int offset,
386
			@RequestParam(name = "limit", defaultValue = "10") int limit, Model model)
387
			throws ProfitMandiBusinessException {
23784 ashik.ali 388
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
389
		return responseSender.ok(schemeService.getSchemes(loginDetails.getRoleIds(), offset, limit));
390
	}
23506 amit.gupta 391
 
23752 govind 392
	@RequestMapping(value = "/searchScheme")
393
	public String getSchemeBySchemeId(HttpServletRequest request,
394
			@RequestParam(name = "offset", defaultValue = "0") int offset,
395
			@RequestParam(name = "limit", defaultValue = "10") int limit,
396
			@RequestParam(name = "searchTerm", required = false, defaultValue = "") String searchTerm,
397
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem, Model model)
398
			throws ProfitMandiBusinessException {
399
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
400
		List<Scheme> schemes = null;
401
		long size = 0;
402
		if (!(searchTerm.equals("")) && searchItem.equals("")) {
403
			schemes = schemeRepository.selectBySearchTerm(searchTerm, offset, limit);
23786 amit.gupta 404
			if (!(schemes.size() == 0)) {
405
				size = schemeRepository.selectAllCount();
406
				LOGGER.info("schemes" + schemes);
407
				model.addAttribute("schemes", schemes);
408
				model.addAttribute("start", offset + 1);
409
				model.addAttribute("size", size);
410
				model.addAttribute("searchTerm", searchTerm);
411
				model.addAttribute("searchItem", searchItem);
23914 govind 412
				model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23786 amit.gupta 413
				if (schemes.size() < limit) {
414
					model.addAttribute("end", offset + schemes.size());
415
				} else {
416
					model.addAttribute("end", offset + limit);
417
				}
23752 govind 418
			} else {
23786 amit.gupta 419
				throw new ProfitMandiBusinessException("SchemeId", searchTerm, "SchemeId Not Found");
23752 govind 420
			}
421
		} else if (!(searchItem.equals("")) && searchTerm.equals("")) {
422
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(Integer.parseInt(searchItem));
23786 amit.gupta 423
			if (!(schemeIds.size() == 0)) {
23752 govind 424
				LOGGER.info("schemeIds in searchItemScheme" + schemeIds);
425
				schemes = schemeRepository.selectBySchemeIds(schemeIds, offset, limit);
426
				size = schemeIds.size();
427
				LOGGER.info("Size" + size);
428
				model.addAttribute("schemes", schemes);
429
				model.addAttribute("start", offset + 1);
430
				model.addAttribute("size", size);
431
				model.addAttribute("searchItem", searchItem);
432
				model.addAttribute("searchTerm", searchTerm);
23914 govind 433
				model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 434
				if (schemes.size() < limit) {
435
					model.addAttribute("end", offset + schemes.size());
436
				} else {
437
					model.addAttribute("end", offset + limit);
438
				}
439
 
440
			} else {
441
				throw new ProfitMandiBusinessException("SchemeIds", searchItem, "SchemeId Not Found");
442
			}
443
		} else {
23798 amit.gupta 444
			if (roleManager.isAdmin(loginDetails.getRoleIds())) {
23752 govind 445
				schemes = schemeRepository.selectAll(offset, limit);
446
				size = schemeRepository.selectAllCount();
447
			} else {
448
				schemes = schemeRepository.selectActiveAll(offset, limit);
449
				size = schemeRepository.selectAllActiveCount();
450
			}
451
			model.addAttribute("schemes", schemes);
452
			model.addAttribute("start", offset + 1);
453
			model.addAttribute("size", size);
454
			model.addAttribute("searchItem", searchItem);
455
			model.addAttribute("searchTerm", searchTerm);
23914 govind 456
			model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 457
			if (schemes.size() < limit) {
458
				model.addAttribute("end", offset + schemes.size());
459
			} else {
460
				model.addAttribute("end", offset + limit);
461
			}
462
		}
463
		return "schemes";
464
	}
465
 
466
	@RequestMapping(value = "/searchItemSchemePanigated")
467
	public String getSchemeByItemPanigated(HttpServletRequest request,
468
			@RequestParam(name = "offset", defaultValue = "0") int offset,
469
			@RequestParam(name = "limit", defaultValue = "10") int limit,
470
			@RequestParam(name = "searchItem", required = false, defaultValue = "") String searchItem, Model model)
471
			throws ProfitMandiBusinessException {
23914 govind 472
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
23752 govind 473
		LOGGER.info("In search Item....");
474
		List<Scheme> schemes = null;
475
		if (!searchItem.equals("")) {
476
			List<Integer> schemeIds = schemeItemRepository.selectSchemeIdByItemId(Integer.parseInt(searchItem));
477
			if (schemeIds != null) {
478
				LOGGER.info(schemeIds);
479
				schemes = schemeRepository.selectBySchemeIds(schemeIds, offset, limit);
480
 
481
			}
482
		}
483
		model.addAttribute("schemes", schemes);
484
		model.addAttribute("searchItem", searchItem);
23914 govind 485
		model.addAttribute("roleType", roleManager.isAdmin(loginDetails.getRoleIds()));
23752 govind 486
		return "schemes-paginated";
487
 
488
	}
489
 
22860 ashik.ali 490
}