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