| 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 |
}
|