Subversion Repositories SmartDukaan

Rev

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

Rev 33088 Rev 33247
Line 142... Line 142...
142
        offerRepository.persist(offer);
142
        offerRepository.persist(offer);
143
        createOfferRequest.setId(offer.getId());
143
        createOfferRequest.setId(offer.getId());
144
    }
144
    }
145
 
145
 
146
    @Override
146
    @Override
147
    public List<CreateOfferRequest> getPublishedOffers(int fofoId, YearMonth yearMonth) {
147
    public List<CreateOfferRequest> getPublishedOffers(int fofoId, YearMonth yearMonth) throws ProfitMandiBusinessException {
148
        List<Offer> publishedOffers = offerRepository.selectAllPublishedMapByPartner(yearMonth).get(fofoId);
148
        List<Offer> publishedOffers = offerRepository.selectAllPublishedMapByPartner(yearMonth).get(fofoId);
149
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
149
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
150
        if (publishedOffers != null) {
150
        if (publishedOffers != null) {
151
            for (Offer offer : publishedOffers) {
151
            for (Offer offer : publishedOffers) {
152
                CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
152
                CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
Line 212... Line 212...
212
 
212
 
213
    }
213
    }
214
 
214
 
215
    @Override
215
    @Override
216
    @Cacheable(value = "allOffers", cacheManager = "oneDayCacheManager")
216
    @Cacheable(value = "allOffers", cacheManager = "oneDayCacheManager")
217
    public Map<Integer, CreateOfferRequest> getAllOffers(YearMonth yearMonth) {
217
    public Map<Integer, CreateOfferRequest> getAllOffers(YearMonth yearMonth) throws ProfitMandiBusinessException {
218
        List<Offer> allOffers = offerRepository.selectAll(yearMonth, false);
218
        List<Offer> allOffers = offerRepository.selectAll(yearMonth, false);
219
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
219
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
220
        for (Offer offer : allOffers) {
220
        for (Offer offer : allOffers) {
221
            CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
221
            CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
222
            createOfferRequests.add(createOfferRequest);
222
            createOfferRequests.add(createOfferRequest);
Line 224... Line 224...
224
        return createOfferRequests.stream().collect(Collectors.toMap(CreateOfferRequest::getId, x -> x));
224
        return createOfferRequests.stream().collect(Collectors.toMap(CreateOfferRequest::getId, x -> x));
225
    }
225
    }
226
 
226
 
227
    @Override
227
    @Override
228
    @Cacheable(value = "partnerOffers", cacheManager = "thirtyMinsTimeOutCacheManager")
228
    @Cacheable(value = "partnerOffers", cacheManager = "thirtyMinsTimeOutCacheManager")
229
    public CreateOfferRequest getOffer(int fofoId, int offerId) {
229
    public CreateOfferRequest getOffer(int fofoId, int offerId) throws ProfitMandiBusinessException {
230
        Offer offer = offerRepository.selectById(offerId);
230
        Offer offer = offerRepository.selectById(offerId);
231
        CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
231
        CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
232
        if (fofoId > 0) {
232
        if (fofoId > 0) {
233
            this.setCriteriaPayoutAchieved(fofoId, createOfferRequest);
233
            this.setCriteriaPayoutAchieved(fofoId, createOfferRequest);
234
        }
234
        }
235
 
235
 
236
        return createOfferRequest;
236
        return createOfferRequest;
237
    }
237
    }
238
 
238
 
239
    @Override
239
    @Override
240
    public CreateOfferRequest getCreateOfferRequest(Offer fromOffer) {
240
    public CreateOfferRequest getCreateOfferRequest(Offer fromOffer) throws ProfitMandiBusinessException {
241
        CreateOfferRequest createOfferRequest = new CreateOfferRequest();
241
        CreateOfferRequest createOfferRequest = new CreateOfferRequest();
242
        createOfferRequest.setName(fromOffer.getName());
242
        createOfferRequest.setName(fromOffer.getName());
243
        createOfferRequest.setDiscount(fromOffer.isDiscount());
243
        createOfferRequest.setDiscount(fromOffer.isDiscount());
244
        createOfferRequest.setTargetType(fromOffer.getTargetType());
244
        createOfferRequest.setTargetType(fromOffer.getTargetType());
245
        createOfferRequest.setPayoutType(fromOffer.getPayoutType());
245
        createOfferRequest.setPayoutType(fromOffer.getPayoutType());
Line 353... Line 353...
353
        }
353
        }
354
 
354
 
355
    }
355
    }
356
 
356
 
357
    @Override
357
    @Override
358
    public List<CreateOfferRequest> getPublishedOffers(LocalDate date, int fofoId, int catalogId) {
358
    public List<CreateOfferRequest> getPublishedOffers(LocalDate date, int fofoId, int catalogId) throws ProfitMandiBusinessException {
359
        List<Offer> publishedOffers = offerRepository.selectAllPublishedMapByPartner(YearMonth.from(date)).get(fofoId);
359
        List<Offer> publishedOffers = offerRepository.selectAllPublishedMapByPartner(YearMonth.from(date)).get(fofoId);
360
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
360
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
361
        if (publishedOffers != null) {
361
        if (publishedOffers != null) {
362
            for (Offer offer : publishedOffers) {
362
            for (Offer offer : publishedOffers) {
363
                boolean found = false;
363
                boolean found = false;
Line 521... Line 521...
521
        return null;
521
        return null;
522
    }
522
    }
523
 
523
 
524
    @Override
524
    @Override
525
    @Cacheable(value = "slabPayoutMap1", cacheManager = "oneDayCacheManager")
525
    @Cacheable(value = "slabPayoutMap1", cacheManager = "oneDayCacheManager")
526
    public Map<Integer, Map<Integer, Long>> getSlabPayoutMap(CreateOfferRequest createOfferRequest) {
526
    public Map<Integer, Map<Integer, Long>> getSlabPayoutMap(CreateOfferRequest createOfferRequest) throws ProfitMandiBusinessException {
527
        Map<Integer, Map<Integer, Long>> catalogSlabPayoutMap = new HashMap<>();
527
        Map<Integer, Map<Integer, Long>> catalogSlabPayoutMap = new HashMap<>();
528
        com.spice.profitmandi.dao.model.TargetSlab targetSlab = createOfferRequest.getTargetSlabs().get(0);
528
        com.spice.profitmandi.dao.model.TargetSlab targetSlab = createOfferRequest.getTargetSlabs().get(0);
529
        List<ItemCriteriaPayout> payouts = targetSlab.getItemCriteriaPayouts();
529
        List<ItemCriteriaPayout> payouts = targetSlab.getItemCriteriaPayouts();
530
 
530
 
531
        for (ItemCriteriaPayout itemCriteriaPayout : payouts) {
531
        for (ItemCriteriaPayout itemCriteriaPayout : payouts) {
Line 1027... Line 1027...
1027
            LOGGER.info("Amount to Rollback - {}", amountToRollback);
1027
            LOGGER.info("Amount to Rollback - {}", amountToRollback);
1028
            walletService.rollbackAmountFromWallet(fofoId, amountToRollback, offerId, WalletReferenceType.ADDITIONAL_SCHEME, "Stock Returned, total " + totalImeis + "pc(s)", LocalDateTime.now());
1028
            walletService.rollbackAmountFromWallet(fofoId, amountToRollback, offerId, WalletReferenceType.ADDITIONAL_SCHEME, "Stock Returned, total " + totalImeis + "pc(s)", LocalDateTime.now());
1029
        }
1029
        }
1030
    }
1030
    }
1031
 
1031
 
1032
    private Map<String, InventoryItem> getInventoryItemMap(int fofoId, Map<String, LineItem> serialNumberMap) {
1032
    private Map<String, InventoryItem> getInventoryItemMap(int fofoId, Map<String, LineItem> serialNumberMap) throws ProfitMandiBusinessException {
1033
        List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
1033
        List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
1034
        inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
1034
        inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
1035
        Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
1035
        Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
1036
        return inventoryItemMap;
1036
        return inventoryItemMap;
1037
    }
1037
    }
1038
 
1038
 
1039
 
1039
 
1040
    @Override
1040
    @Override
1041
    public String getPartnerCriteriaString(PartnerCriteria partnerCriteria) {
1041
    public String getPartnerCriteriaString(PartnerCriteria partnerCriteria) throws ProfitMandiBusinessException {
1042
        StringBuilder sb = new StringBuilder();
1042
        StringBuilder sb = new StringBuilder();
1043
        if (partnerCriteria.getFofoIds().size() > 0) {
1043
        if (partnerCriteria.getFofoIds().size() > 0) {
1044
            List<Integer> fofoIds = partnerCriteria.getFofoIds();
1044
            List<Integer> fofoIds = partnerCriteria.getFofoIds();
1045
            appendPartnerCodes(fofoIds, sb);
1045
            appendPartnerCodes(fofoIds, sb);
1046
 
1046
 
Line 1060... Line 1060...
1060
            }
1060
            }
1061
        }
1061
        }
1062
        return sb.toString();
1062
        return sb.toString();
1063
    }
1063
    }
1064
 
1064
 
1065
    private void appendPartnerCodes(List<Integer> fofoIds, StringBuilder sb) {
1065
    private void appendPartnerCodes(List<Integer> fofoIds, StringBuilder sb) throws ProfitMandiBusinessException {
1066
        Map<Integer, CustomRetailer> customRetailersMap = retailerService.getAllFofoRetailers();
1066
        Map<Integer, CustomRetailer> customRetailersMap = retailerService.getAllFofoRetailers();
1067
        List<String> businessNames = fofoIds.stream().map(x -> customRetailersMap.get(x)).filter(x -> x != null).map(x -> x.getBusinessName()).collect(Collectors.toList());
1067
        List<String> businessNames = fofoIds.stream().map(x -> customRetailersMap.get(x)).filter(x -> x != null).map(x -> x.getBusinessName()).collect(Collectors.toList());
1068
        sb.append(String.join(", ", businessNames));
1068
        sb.append(String.join(", ", businessNames));
1069
    }
1069
    }
1070
}
1070
}