Subversion Repositories SmartDukaan

Rev

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

Rev 23638 Rev 23781
Line 7... Line 7...
7
import java.util.List;
7
import java.util.List;
8
import java.util.Map;
8
import java.util.Map;
9
import java.util.Set;
9
import java.util.Set;
10
import java.util.stream.Collectors;
10
import java.util.stream.Collectors;
11
 
11
 
12
import org.apache.logging.log4j.Logger;
-
 
13
import org.apache.logging.log4j.LogManager;
12
import org.apache.logging.log4j.LogManager;
-
 
13
import org.apache.logging.log4j.Logger;
14
import org.springframework.beans.factory.annotation.Autowired;
14
import org.springframework.beans.factory.annotation.Autowired;
-
 
15
import org.springframework.beans.factory.annotation.Qualifier;
15
import org.springframework.stereotype.Component;
16
import org.springframework.stereotype.Component;
16
 
17
 
17
import com.spice.profitmandi.common.enumuration.DateTimePattern;
18
import com.spice.profitmandi.common.enumuration.DateTimePattern;
18
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
19
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
19
import com.spice.profitmandi.common.model.CreateSchemeRequest;
20
import com.spice.profitmandi.common.model.CreateSchemeRequest;
Line 21... Line 22...
21
import com.spice.profitmandi.common.model.SchemeModel;
22
import com.spice.profitmandi.common.model.SchemeModel;
22
import com.spice.profitmandi.common.util.StringUtils;
23
import com.spice.profitmandi.common.util.StringUtils;
23
import com.spice.profitmandi.dao.entity.catalog.Item;
24
import com.spice.profitmandi.dao.entity.catalog.Item;
24
import com.spice.profitmandi.dao.entity.catalog.RetailerScheme;
25
import com.spice.profitmandi.dao.entity.catalog.RetailerScheme;
25
import com.spice.profitmandi.dao.entity.catalog.Scheme;
26
import com.spice.profitmandi.dao.entity.catalog.Scheme;
-
 
27
import com.spice.profitmandi.dao.entity.dtr.Role;
26
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
28
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
27
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
29
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
28
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
30
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
29
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
31
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
30
import com.spice.profitmandi.dao.entity.fofo.Purchase;
32
import com.spice.profitmandi.dao.entity.fofo.Purchase;
31
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
33
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
32
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
34
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
33
import com.spice.profitmandi.dao.entity.transaction.Order;
35
import com.spice.profitmandi.dao.entity.transaction.Order;
34
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
36
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
35
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
37
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
-
 
38
import com.spice.profitmandi.dao.enumuration.dtr.RoleType;
36
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
39
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
37
import com.spice.profitmandi.dao.repository.catalog.RetailerSchemeRepository;
40
import com.spice.profitmandi.dao.repository.catalog.RetailerSchemeRepository;
38
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
41
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
39
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
42
import com.spice.profitmandi.dao.repository.dtr.RetailerRepository;
-
 
43
import com.spice.profitmandi.dao.repository.dtr.RoleRepository;
40
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
44
import com.spice.profitmandi.dao.repository.fofo.FofoLineItemRepository;
41
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
45
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
42
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
46
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
43
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
47
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
44
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
48
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
Line 55... Line 59...
55
public class SchemeServiceImpl implements SchemeService {
59
public class SchemeServiceImpl implements SchemeService {
56
 
60
 
57
	private static final Logger LOGGER = LogManager.getLogger(SchemeServiceImpl.class);
61
	private static final Logger LOGGER = LogManager.getLogger(SchemeServiceImpl.class);
58
 
62
 
59
	@Autowired
63
	@Autowired
-
 
64
	@Qualifier("fofoInventoryItemRepository")
60
	private InventoryItemRepository inventoryItemRepository;
65
	private InventoryItemRepository inventoryItemRepository;
61
 
66
 
62
	@Autowired
67
	@Autowired
63
	private OrderService orderService;
68
	private OrderService orderService;
64
 
69
 
Line 73... Line 78...
73
 
78
 
74
	@Autowired
79
	@Autowired
75
	private SchemeInOutRepository schemeInOutRepository;
80
	private SchemeInOutRepository schemeInOutRepository;
76
 
81
 
77
	@Autowired
82
	@Autowired
-
 
83
	@Qualifier("catalogItemRepository")
78
	private ItemRepository itemRepository;
84
	private ItemRepository itemRepository;
79
 
85
 
80
	@Autowired
86
	@Autowired
81
	private SchemeItemRepository schemeItemRepository;
87
	private SchemeItemRepository schemeItemRepository;
82
 
88
 
Line 95... Line 101...
95
	@Autowired
101
	@Autowired
96
	private OrderRepository orderRepository;
102
	private OrderRepository orderRepository;
97
 
103
 
98
	@Autowired
104
	@Autowired
99
	private FofoOrderRepository fofoOrderRepository;
105
	private FofoOrderRepository fofoOrderRepository;
-
 
106
	
-
 
107
	@Autowired
-
 
108
	private RoleRepository roleRepository;
100
 
109
 
101
	@Override
110
	@Override
102
	public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
111
	public void saveScheme(int creatorId, CreateSchemeRequest createSchemeRequest) throws ProfitMandiBusinessException {
103
 
112
 
104
		this.validateCreateSchemeRequest(createSchemeRequest);
113
		this.validateCreateSchemeRequest(createSchemeRequest);
Line 796... Line 805...
796
			fofoOrder.setCashback(totalCashback);
805
			fofoOrder.setCashback(totalCashback);
797
			fofoOrderRepository.persist(fofoOrder);
806
			fofoOrderRepository.persist(fofoOrder);
798
		}
807
		}
799
	}
808
	}
800
 
809
 
801
	/*@Override
-
 
802
	public void rollbackSchemeForInventoryItemId(int inventoryItemId) {
-
 
803
		Set<Integer> inventoryItemIds = new HashSet<>();
-
 
804
		inventoryItemIds.add(inventoryItemId);
-
 
805
		float amountToRollback = 0;
-
 
806
		List<SchemeInOut> schemes = schemeInOutRepository.selectByInventoryItemIds(inventoryItemIds);
-
 
807
		for(SchemeInOut schemeInOut: schemes) {
-
 
808
			schemeInOut.setRolled_back_timestamp(LocalDateTime.now());
-
 
809
			schemeInOutRepository.persist(schemeInOut);
-
 
810
			amountToRollback += schemeInOut.getAmount();
-
 
811
		}
-
 
812
		//TODO: Unused
-
 
813
	}*/
-
 
814
 
-
 
815
	@Override
810
	@Override
816
	public void rollbackSchemes(List<Integer> inventoryItemIds, int rollbackReference, String rollbackReason) throws Exception{
811
	public void rollbackSchemes(List<Integer> inventoryItemIds, int rollbackReference, String rollbackReason) throws Exception{
817
		Set<Integer> inventoryItemIdSet = new HashSet<>(inventoryItemIds);
812
		Set<Integer> inventoryItemIdSet = new HashSet<>(inventoryItemIds);
818
		float amountToRollback = 0;
813
		float amountToRollback = 0;
819
		List<SchemeInOut> schemes = schemeInOutRepository.selectByInventoryItemIds(inventoryItemIdSet);
814
		List<SchemeInOut> schemes = schemeInOutRepository.selectByInventoryItemIds(inventoryItemIdSet);
Line 826... Line 821...
826
			int inventoryItemId = inventoryItemIds.get(0);
821
			int inventoryItemId = inventoryItemIds.get(0);
827
			Integer fofoId = inventoryItemRepository.selectById(inventoryItemId).getFofoId();
822
			Integer fofoId = inventoryItemRepository.selectById(inventoryItemId).getFofoId();
828
			walletService.rollbackAmountFromWallet(fofoId, amountToRollback, rollbackReference, WalletReferenceType.SCHEME_IN, rollbackReason);
823
			walletService.rollbackAmountFromWallet(fofoId, amountToRollback, rollbackReference, WalletReferenceType.SCHEME_IN, rollbackReason);
829
		}
824
		}
830
	}
825
	}
-
 
826
	
-
 
827
	@Override
-
 
828
	public Map<String, Object> getSchemes(Set<Integer> roleIds, int offset, int limit) throws ProfitMandiBusinessException{
-
 
829
		Map<String, Object> map = new HashMap<>();
-
 
830
		List<Scheme> schemes = null;
-
 
831
		long size = 0;
-
 
832
		Role role = roleRepository.selectByName(RoleType.FOFO_ADMIN.toString());
-
 
833
		if(roleIds.contains(role.getId())){
-
 
834
			schemes = schemeRepository.selectAll(offset, limit);
-
 
835
			size = schemeRepository.selectAllCount();
-
 
836
		}else{
-
 
837
			schemes = schemeRepository.selectActiveAll(offset, limit);
-
 
838
			size = schemeRepository.selectAllActiveCount();
-
 
839
		}
-
 
840
		map.put("schemes", schemes);
-
 
841
		map.put("start", offset + 1);
-
 
842
		map.put("size", size);
-
 
843
		if (schemes.size() < limit){
-
 
844
			map.put("end", offset + schemes.size());
-
 
845
		}else{
-
 
846
			map.put("end", offset + limit);
-
 
847
		}
-
 
848
		return map;
-
 
849
	}
-
 
850
	
-
 
851
	@Override
-
 
852
	public List<Scheme> getPaginatedSchemes(Set<Integer> roleIds, int offset, int limit) throws ProfitMandiBusinessException{
-
 
853
		LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
-
 
854
		List<Scheme> schemes = null;
-
 
855
		Role role = roleRepository.selectByName(RoleType.FOFO_ADMIN.toString());
-
 
856
		if(roleIds.contains(role.getId())){
-
 
857
			schemes = schemeRepository.selectAll(offset, limit);
-
 
858
		}else{
-
 
859
			schemes = schemeRepository.selectActiveAll(offset, limit);
-
 
860
		}
-
 
861
		return schemes;
-
 
862
	}
831
 
863
 
832
}
864
}