Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
21561 ashik.ali 1
package com.spice.profitmandi.web.controller;
21555 kshitij.so 2
 
21583 ashik.ali 3
import java.util.ArrayList;
21615 kshitij.so 4
import java.util.Arrays;
21583 ashik.ali 5
import java.util.HashSet;
6
import java.util.List;
7
import java.util.Set;
8
 
21574 ashik.ali 9
import javax.servlet.http.HttpServletRequest;
10
 
11
import org.slf4j.Logger;
12
import org.slf4j.LoggerFactory;
21636 ashik.ali 13
 
21574 ashik.ali 14
import org.springframework.beans.factory.annotation.Autowired;
21555 kshitij.so 15
import org.springframework.stereotype.Controller;
21636 ashik.ali 16
import org.springframework.transaction.annotation.Transactional;
21574 ashik.ali 17
import org.springframework.ui.Model;
21555 kshitij.so 18
import org.springframework.web.bind.annotation.RequestMapping;
19
import org.springframework.web.bind.annotation.RequestMethod;
21583 ashik.ali 20
import org.springframework.web.bind.annotation.RequestParam;
21555 kshitij.so 21
 
21640 kshitij.so 22
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
21583 ashik.ali 23
import com.spice.profitmandi.common.model.CustomItem;
24
import com.spice.profitmandi.common.model.CustomLineItem;
25
import com.spice.profitmandi.common.model.ProfitMandiConstants;
21728 ashik.ali 26
import com.spice.profitmandi.dao.entity.fofo.Purchase;
21636 ashik.ali 27
import com.spice.profitmandi.dao.model.ItemIdSum;
21728 ashik.ali 28
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
29
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
30
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
21574 ashik.ali 31
import com.spice.profitmandi.web.model.FofoDetails;
21582 kshitij.so 32
import com.spice.profitmandi.web.util.CookiesFetcher;
21574 ashik.ali 33
import com.spice.profitmandi.web.util.MVCResponseSender;
21555 kshitij.so 34
 
21583 ashik.ali 35
import in.shop2020.model.v1.catalog.ItemType;
36
 
21555 kshitij.so 37
@Controller
21636 ashik.ali 38
@Transactional
21582 kshitij.so 39
public class PurchaseController {
21555 kshitij.so 40
 
21582 kshitij.so 41
	private static final Logger LOGGER = LoggerFactory.getLogger(PurchaseController.class);
21640 kshitij.so 42
 
21574 ashik.ali 43
	@Autowired
44
	OrderRepository orderRepository;
21640 kshitij.so 45
 
21574 ashik.ali 46
	@Autowired
21583 ashik.ali 47
	InventoryItemRepository inventoryItemRepository;
21640 kshitij.so 48
 
21582 kshitij.so 49
	@Autowired
21640 kshitij.so 50
	PurchaseRepository purchaseRepository;
51
 
52
	@Autowired
21574 ashik.ali 53
	MVCResponseSender mvcResponseSender;
21640 kshitij.so 54
 
21583 ashik.ali 55
	@Autowired
56
	CookiesFetcher cookiesFetcher;
21640 kshitij.so 57
 
21591 kshitij.so 58
	@RequestMapping(value = "/purchase", method = RequestMethod.POST)
21587 kshitij.so 59
	public String orderByAirwayBillOrInvoiceNumber(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.AIRWAY_BILL_OR_INVOICE_NUMBER) String airwayBillOrInvoiceNumber, Model model)  throws Throwable{
21640 kshitij.so 60
 
21582 kshitij.so 61
		FofoDetails fofoDetails = cookiesFetcher.getCookiesObject(request);
21583 ashik.ali 62
		List<Object[]> rows = orderRepository.selectByAirwayBillOrInvoiceNumber(airwayBillOrInvoiceNumber, fofoDetails.getFofoId());
63
		Set<Integer> itemIds = new HashSet<>();
64
		String invoiceNumber = null;
65
		for(Object[] row : rows){
21640 kshitij.so 66
			LOGGER.info("row {}", Arrays.toString(row));
21583 ashik.ali 67
			itemIds.add((int)row[0]);
68
			invoiceNumber = (String)row[9];
69
		}
21640 kshitij.so 70
		List<ItemIdSum> itemIdSums = new ArrayList<ItemIdSum>();
71
		try{
72
			Purchase purchase = purchaseRepository.selectByPurchaseReference(invoiceNumber);
73
			if (purchase.getFofoId() == fofoDetails.getFofoId()){
74
				itemIdSums = inventoryItemRepository.selectScannedCount(itemIds, fofoDetails.getFofoId(), purchase.getId());
75
			}
76
		}
77
		catch(ProfitMandiBusinessException e){
78
			//Not to worry.No purchase exists
79
		}
21636 ashik.ali 80
		LOGGER.info("itemIdSums : {}", itemIdSums);
21583 ashik.ali 81
		List<CustomItem> customItems = new ArrayList<>();
21615 kshitij.so 82
		for(Object[] row : rows){
83
			CustomItem customItem = this.createCustomLineItem(row);
21636 ashik.ali 84
			for(ItemIdSum itemIdSum : itemIdSums){
85
				//LOGGER.info("itemIdCount{}",Arrays.toString(itemIdCount));
86
				if(itemIdSum.getItemId() == (int)row[0]){
87
					customItem.setScanned((float)row[5] == itemIdSum.getSumOfQuantity() ? true : false);
21583 ashik.ali 88
				}
89
			}
21615 kshitij.so 90
			customItems.add(customItem);
21583 ashik.ali 91
		}
92
		model.addAttribute("customItems", customItems);
21615 kshitij.so 93
		model.addAttribute("invoiceNumber",invoiceNumber);
94
		model.addAttribute("airwayBillOrInvoiceNumber",airwayBillOrInvoiceNumber);
21587 kshitij.so 95
		return "purchase";
21555 kshitij.so 96
	}
21640 kshitij.so 97
 
21587 kshitij.so 98
	@RequestMapping(value = "/purchase", method = RequestMethod.GET)
99
	public String orderByAirwayBillOrInvoiceNumber(HttpServletRequest request)  throws Exception{
100
		return "purchase";
101
	}
21615 kshitij.so 102
 
21640 kshitij.so 103
	private String getVaildName(String name){
104
		return name!=null?name:"";
105
	}
106
 
21615 kshitij.so 107
	private CustomItem createCustomLineItem(Object[] row){
108
		LOGGER.info("row {}", Arrays.toString(row));
21583 ashik.ali 109
		CustomItem customItem = new CustomItem();
110
		customItem.setItemId((int)row[0]);
111
		CustomLineItem customLineItem = new CustomLineItem();
112
		customLineItem.setBrand((String)row[1]);
113
		customLineItem.setModelName((String)row[2]);
114
		customLineItem.setModelNumber((String)row[3]);
21636 ashik.ali 115
		customLineItem.setUnitPrice((float)row[6]);
21583 ashik.ali 116
		customLineItem.setColor((String)row[4]);
117
		customLineItem.setQuantity((float)row[5]);
21615 kshitij.so 118
		customLineItem.setDisplayName((getVaildName((String)row[1])+" "+getVaildName((String)row[2])+" "+getVaildName((String)row[3])+" "+getVaildName((String)row[4])).replaceAll("\\s+", " "));
21583 ashik.ali 119
		customItem.setItemDetail(customLineItem);
21615 kshitij.so 120
		customItem.setInvoiceNumber((String)row[9]);
121
		customItem.setType(((ItemType)row[7]).toString());
21583 ashik.ali 122
		return customItem;
21582 kshitij.so 123
	}
21636 ashik.ali 124
}