Subversion Repositories SmartDukaan

Rev

Rev 24440 | Rev 24880 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 24440 Rev 24844
Line 3... Line 3...
3
import java.io.ByteArrayInputStream;
3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
5
import java.io.InputStream;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
7
import java.time.temporal.ChronoUnit;
7
import java.time.temporal.ChronoUnit;
-
 
8
import java.util.ArrayList;
8
import java.util.Arrays;
9
import java.util.Arrays;
9
import java.util.HashMap;
10
import java.util.HashMap;
10
import java.util.HashSet;
11
import java.util.HashSet;
11
import java.util.List;
12
import java.util.List;
12
import java.util.Map;
13
import java.util.Map;
Line 105... Line 106...
105
	@Autowired
106
	@Autowired
106
	private FofoOrderItemRepository fofoOrderItemRepository;
107
	private FofoOrderItemRepository fofoOrderItemRepository;
107
 
108
 
108
	@Autowired
109
	@Autowired
109
	private PaymentOptionRepository paymentOptionRepository;
110
	private PaymentOptionRepository paymentOptionRepository;
110
	
111
 
111
	@Autowired
112
	@Autowired
112
	private StateRepository stateRepository;
113
	private StateRepository stateRepository;
113
 
114
 
114
	@Autowired
115
	@Autowired
115
	private ItemRepository itemRepository;
116
	private ItemRepository itemRepository;
116
 
117
 
117
	@Autowired
118
	@Autowired
118
	private MVCResponseSender mvcResponseSender;
119
	private MVCResponseSender mvcResponseSender;
119
	
120
 
120
	@Autowired
121
	@Autowired
121
	private ZestService zestService;
122
	private ZestService zestService;
122
 
123
 
123
	@Autowired
124
	@Autowired
124
	private FofoOrderRepository fofoOrderRepository;
125
	private FofoOrderRepository fofoOrderRepository;
Line 174... Line 175...
174
				loginDetails.getFofoId());
175
				loginDetails.getFofoId());
175
		List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
176
		List<Integer> paymentOptionIds = fofoPartnerPaymentOptionRepository
176
				.selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
177
				.selectPaymentOptionIdsByFofoId(loginDetails.getFofoId());
177
		List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds));
178
		List<PaymentOption> paymentOptions = paymentOptionRepository.selectByIds(new HashSet<>(paymentOptionIds));
178
		LOGGER.info("mopPriceMap {}", mopPriceMap);
179
		LOGGER.info("mopPriceMap {}", mopPriceMap);
-
 
180
		model.addAttribute("stateNames",
179
		model.addAttribute("stateNames", stateRepository.selectAll().stream().map(x->x.getName()).collect(Collectors.toList()));
181
				stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
180
		model.addAttribute("retailerStateName", address.getState());
182
		model.addAttribute("retailerStateName", address.getState());
181
		model.addAttribute("cartItems", cartItems);
183
		model.addAttribute("cartItems", cartItems);
182
		model.addAttribute("mopPriceMap", mopPriceMap);
184
		model.addAttribute("mopPriceMap", mopPriceMap);
183
		model.addAttribute("paymentOptions", paymentOptions);
185
		model.addAttribute("paymentOptions", paymentOptions);
184
		model.addAttribute("accessoriesDeals", accessoriesDeals);
186
		model.addAttribute("accessoriesDeals", accessoriesDeals);
185
		return "order-index";
187
		return "order-index";
186
	}
188
	}
187
 
189
 
188
	@RequestMapping(value = "/checkplans", method = RequestMethod.GET)
190
	@RequestMapping(value = "/checkplans", method = RequestMethod.GET)
189
	public String getInsurancePrices(HttpServletRequest request,
191
	public String getInsurancePrices(HttpServletRequest request, @RequestParam float price, Model model)
190
			@RequestParam float price, Model model) throws ProfitMandiBusinessException {
192
			throws ProfitMandiBusinessException {
191
		LOGGER.info("Request received at url : {}", request.getRequestURI());
193
		LOGGER.info("Request received at url : {}", request.getRequestURI());
192
		
194
 
193
		try {
195
		try {
194
			String response = mvcResponseSender.createResponseString(this.getPlans(price));
196
			String response = mvcResponseSender.createResponseString(this.getPlans(price));
195
			model.addAttribute("response", response);
197
			model.addAttribute("response", response);
196
		} catch (Exception e) {
198
		} catch (Exception e) {
197
			// TODO Auto-generated catch block
199
			// TODO Auto-generated catch block
198
			e.printStackTrace();
200
			e.printStackTrace();
199
			throw new ProfitMandiBusinessException("Plans", "Plans API", "Error formatting insurance plans");
201
			throw new ProfitMandiBusinessException("Plans", "Plans API", "Error formatting insurance plans");
200
		}
202
		}
201
		
203
 
202
		return "response";
204
		return "response";
203
	}
205
	}
204
 
206
 
205
	@RequestMapping(value = "/get-order", method = RequestMethod.GET)
207
	@RequestMapping(value = "/get-order", method = RequestMethod.GET)
206
	public String getOrder(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId,
208
	public String getOrder(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId,
Line 373... Line 375...
373
		List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
375
		List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
374
		Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
376
		Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
375
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
377
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
376
		List<Integer> fofoPartnerPaymentOptions = fofoPartnerPaymentOptionRepository
378
		List<Integer> fofoPartnerPaymentOptions = fofoPartnerPaymentOptionRepository
377
				.selectPaymentOptionIdsByFofoId(fofoOrder.getFofoId());
379
				.selectPaymentOptionIdsByFofoId(fofoOrder.getFofoId());
378
		
380
 
379
		Map<Integer, Item> itemsMap = fofoOrderItems.stream().collect(Collectors.toMap(x -> x.getItemId(), x -> {
381
		Map<Integer, Item> itemsMap = fofoOrderItems.stream().collect(Collectors.toMap(x -> x.getItemId(), x -> {
380
			try {
382
			try {
381
				return itemRepository.selectById(x.getItemId());
383
				return itemRepository.selectById(x.getItemId());
382
			} catch (ProfitMandiBusinessException e) {
384
			} catch (ProfitMandiBusinessException e) {
383
				// TODO Auto-generated catch block
385
				// TODO Auto-generated catch block
Line 395... Line 397...
395
		LOGGER.info("paymentOptionIdPaymentOptionTransactionMap" + paymentOptionIdPaymentOptionTransactionMap.keySet());
397
		LOGGER.info("paymentOptionIdPaymentOptionTransactionMap" + paymentOptionIdPaymentOptionTransactionMap.keySet());
396
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository
398
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository
397
				.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
399
				.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
398
		this.addInsuranceProvider(insurancePolicies);
400
		this.addInsuranceProvider(insurancePolicies);
399
		model.addAttribute("fofoOrder", fofoOrder);
401
		model.addAttribute("fofoOrder", fofoOrder);
400
		for(FofoOrderItem fofoOrderItem : fofoOrderItems) {
402
		for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
401
			fofoOrderItem.setDoa(true);
403
			fofoOrderItem.setDoa(true);
402
		}
404
		}
403
		
405
 
404
		Map<Integer, Set<FofoLineItem>> fofoOrderItemIdLineItemMap = fofoOrderItems.stream()
406
		Map<Integer, Set<FofoLineItem>> fofoOrderItemIdLineItemMap = fofoOrderItems.stream()
405
				.collect(Collectors.toMap(FofoOrderItem::getId, FofoOrderItem::getFofoLineItems));
407
				.collect(Collectors.toMap(FofoOrderItem::getId, FofoOrderItem::getFofoLineItems));
406
 
408
 
407
		Map<Integer, List<CustomerReturnItem>> foiIdCustomerReturnInventoryItemsMap = fofoOrderItems.stream()
409
		Map<Integer, List<CustomerReturnItem>> foiIdCustomerReturnInventoryItemsMap = fofoOrderItems.stream()
408
				.collect(Collectors.toMap(foi -> foi.getId(),
410
				.collect(Collectors.toMap(foi -> foi.getId(),
Line 434... Line 436...
434
		model.addAttribute("paymentOptionIdPaymentOptionMap", paymentOptionIdPaymentOptionMap);
436
		model.addAttribute("paymentOptionIdPaymentOptionMap", paymentOptionIdPaymentOptionMap);
435
		model.addAttribute("paymentOptionIdPaymentOptionTransactionMap", paymentOptionIdPaymentOptionTransactionMap);
437
		model.addAttribute("paymentOptionIdPaymentOptionTransactionMap", paymentOptionIdPaymentOptionTransactionMap);
436
		model.addAttribute("insurancePolicies", insurancePolicies);
438
		model.addAttribute("insurancePolicies", insurancePolicies);
437
		model.addAttribute("fofoPartnerPaymentOptions", fofoPartnerPaymentOptions);
439
		model.addAttribute("fofoPartnerPaymentOptions", fofoPartnerPaymentOptions);
438
		model.addAttribute("totalNumberOfPaymentOptionId", fofoPartnerPaymentOptions.size());
440
		model.addAttribute("totalNumberOfPaymentOptionId", fofoPartnerPaymentOptions.size());
-
 
441
		model.addAttribute("stateNames",
439
		model.addAttribute("stateNames",  stateRepository.selectAll().stream().map(x->x.getName()).collect(Collectors.toList()));
442
				stateRepository.selectAll().stream().map(x -> x.getName()).collect(Collectors.toList()));
440
		return "search-order-details";
443
		return "search-order-details";
441
	}
444
	}
442
 
445
 
443
	private Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap(
446
	private Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap(
444
			List<PaymentOptionTransaction> paymentOptionTransactions) {
447
			List<PaymentOptionTransaction> paymentOptionTransactions) {
Line 473... Line 476...
473
					paymentOptionTransaction);
476
					paymentOptionTransaction);
474
		}
477
		}
475
		return paymentOptionIdPaymentOptionTransactionMap;
478
		return paymentOptionIdPaymentOptionTransactionMap;
476
	}
479
	}
477
 
480
 
478
	
-
 
479
 
-
 
480
	@RequestMapping(value = "/create-order", method = RequestMethod.POST)
481
	@RequestMapping(value = "/create-order", method = RequestMethod.POST)
481
	public String createOrder(HttpServletRequest request, @RequestBody CreateOrderRequest createOrderRequest,
482
	public String createOrder(HttpServletRequest request, @RequestBody CreateOrderRequest createOrderRequest,
482
			Model model) throws ProfitMandiBusinessException {
483
			Model model) throws ProfitMandiBusinessException {
483
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), createOrderRequest);
484
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), createOrderRequest);
484
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
485
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
Line 492... Line 493...
492
	public ResponseEntity<?> badReturn(HttpServletRequest request, @RequestBody FoiBadReturnRequest foiBadReturnRequest,
493
	public ResponseEntity<?> badReturn(HttpServletRequest request, @RequestBody FoiBadReturnRequest foiBadReturnRequest,
493
			Model model) throws ProfitMandiBusinessException {
494
			Model model) throws ProfitMandiBusinessException {
494
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), foiBadReturnRequest);
495
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), foiBadReturnRequest);
495
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
496
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
496
		CustomerCreditNote custmoerCreditNote;
497
		CustomerCreditNote custmoerCreditNote;
497
		if(roleManager.isAdmin(fofoDetails.getRoleIds())) {
498
		if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
498
			FofoOrderItem foi = fofoOrderItemRepository.selectById(foiBadReturnRequest.getFofoOrderItemId());
499
			FofoOrderItem foi = fofoOrderItemRepository.selectById(foiBadReturnRequest.getFofoOrderItemId());
499
			FofoOrder fo = fofoOrderRepository.selectByOrderId(foi.getOrderId());
500
			FofoOrder fo = fofoOrderRepository.selectByOrderId(foi.getOrderId());
500
			custmoerCreditNote = orderService.badReturn(fo.getFofoId(), foiBadReturnRequest);
501
			custmoerCreditNote = orderService.badReturn(fo.getFofoId(), foiBadReturnRequest);
501
		} else {
502
		} else {
502
			custmoerCreditNote = orderService.badReturn(fofoDetails.getFofoId(), foiBadReturnRequest);
503
			custmoerCreditNote = orderService.badReturn(fofoDetails.getFofoId(), foiBadReturnRequest);
Line 515... Line 516...
515
			pdfModel = orderService.getInvoicePdfModel(orderId);
516
			pdfModel = orderService.getInvoicePdfModel(orderId);
516
		} else {
517
		} else {
517
			pdfModel = orderService.getInvoicePdfModel(fofoDetails.getFofoId(), orderId);
518
			pdfModel = orderService.getInvoicePdfModel(fofoDetails.getFofoId(), orderId);
518
		}
519
		}
519
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
520
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
520
		PdfUtils.generateAndWrite(pdfModel, byteArrayOutputStream);
521
		PdfUtils.generateAndWrite(Arrays.asList(pdfModel), byteArrayOutputStream);
521
		LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
522
		LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
522
		final HttpHeaders headers = new HttpHeaders();
523
		final HttpHeaders headers = new HttpHeaders();
523
		headers.setContentType(MediaType.APPLICATION_PDF);
524
		headers.setContentType(MediaType.APPLICATION_PDF);
524
		headers.set("Content-disposition", "inline; filename=invoice-" + pdfModel.getInvoiceNumber() + ".pdf");
525
		headers.set("Content-disposition", "inline; filename=invoice-" + pdfModel.getInvoiceNumber() + ".pdf");
525
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
526
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
526
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
527
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
527
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
528
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
528
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
529
		return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
529
	}
530
	}
530
 
531
 
-
 
532
	@RequestMapping(value = "/generateInvoices")
-
 
533
	public ResponseEntity<?> generateInvoice(HttpServletRequest request, HttpServletResponse response,
-
 
534
			@RequestParam LocalDateTime startDate, @RequestParam LocalDateTime endDate, @RequestParam int partnerId)
-
 
535
			throws ProfitMandiBusinessException {
-
 
536
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
-
 
537
		List<PdfModel> pdfModels = new ArrayList<>();
-
 
538
		if (roleManager.isAdmin(fofoDetails.getRoleIds())) {
-
 
539
			List<Integer> orderIds = fofoOrderRepository.selectByFofoId(partnerId, startDate, endDate, 0, 0).stream()
-
 
540
					.map(x -> x.getId()).collect(Collectors.toList());
-
 
541
			for (int orderId : orderIds) {
-
 
542
				pdfModels.add(orderService.getInvoicePdfModel(orderId));
-
 
543
			}
-
 
544
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-
 
545
			PdfUtils.generateAndWrite(pdfModels, byteArrayOutputStream);
-
 
546
			LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
-
 
547
			final HttpHeaders headers = new HttpHeaders();
-
 
548
			headers.setContentType(MediaType.APPLICATION_PDF);
-
 
549
			headers.set("Content-disposition", "inline; filename=invoice-" + partnerId + ".pdf");
-
 
550
			headers.setContentLength(byteArrayOutputStream.toByteArray().length);
-
 
551
			final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-
 
552
			final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
-
 
553
			return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
-
 
554
		} else {
-
 
555
			throw new ProfitMandiBusinessException("Auth", fofoDetails.getEmailId(), "Unauthorised access");
-
 
556
		}
-
 
557
	}
-
 
558
 
531
	@RequestMapping(value = "/saleHistory")
559
	@RequestMapping(value = "/saleHistory")
532
	public String saleHistory(HttpServletRequest request,
560
	public String saleHistory(HttpServletRequest request,
533
			@RequestParam(name = "searchValue", defaultValue = "") String searchValue,
561
			@RequestParam(name = "searchValue", defaultValue = "") String searchValue,
534
			@RequestParam(name = "searchType", defaultValue = "") SearchType searchType,
562
			@RequestParam(name = "searchType", defaultValue = "") SearchType searchType,
535
			@RequestParam(required = false) LocalDateTime startTime,
563
			@RequestParam(required = false) LocalDateTime startTime,
Line 641... Line 669...
641
			throw new ProfitMandiBusinessException("Amount", amount, "Sum of amount is not equal to total amount");
669
			throw new ProfitMandiBusinessException("Amount", amount, "Sum of amount is not equal to total amount");
642
		}
670
		}
643
 
671
 
644
		return "response";
672
		return "response";
645
	}
673
	}
646
	
-
 
647
	
-
 
648
 
674
 
649
	private Map<String, List<MobileInsurancePlan>> getPlans(float sellingPrice) throws ProfitMandiBusinessException {
675
	private Map<String, List<MobileInsurancePlan>> getPlans(float sellingPrice) throws ProfitMandiBusinessException {
650
		Map<String, List<MobileInsurancePlan>> productDurationPlans = zestService.getAllPlansByProductAndDuration();
676
		Map<String, List<MobileInsurancePlan>> productDurationPlans = zestService.getAllPlansByProductAndDuration();
651
		Map<String, List<MobileInsurancePlan>> returnPlans = new HashMap<>();
677
		Map<String, List<MobileInsurancePlan>> returnPlans = new HashMap<>();
652
		productDurationPlans.entrySet().stream().forEach(m -> {
678
		productDurationPlans.entrySet().stream().forEach(m -> {