Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
34443 vikas.jang 1
package com.spice.profitmandi.dao.service;
2
 
3
import com.spice.profitmandi.common.model.BulkOrderModel;
4
import com.spice.profitmandi.common.model.ProfitMandiConstants;
34545 vikas.jang 5
import com.spice.profitmandi.common.util.StringUtils;
34443 vikas.jang 6
import com.spice.profitmandi.dao.entity.catalog.Bid;
7
import com.spice.profitmandi.dao.entity.catalog.Item;
8
import com.spice.profitmandi.dao.entity.catalog.Liquidation;
34545 vikas.jang 9
import com.spice.profitmandi.dao.entity.catalog.TagListing;
34443 vikas.jang 10
import com.spice.profitmandi.dao.entity.inventory.SaholicCISTable;
11
import com.spice.profitmandi.dao.repository.catalog.BidRepository;
12
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
13
import com.spice.profitmandi.dao.repository.catalog.LiquidationRepository;
34545 vikas.jang 14
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
34443 vikas.jang 15
import com.spice.profitmandi.dao.repository.inventory.SaholicCISTableRepository;
34545 vikas.jang 16
import com.spice.profitmandi.service.NotificationService;
34443 vikas.jang 17
import com.spice.profitmandi.service.order.BulkOrderService;
34545 vikas.jang 18
import com.spice.profitmandi.service.whatsapp.WhatsappMessageType;
34443 vikas.jang 19
import org.apache.logging.log4j.LogManager;
20
import org.apache.logging.log4j.Logger;
21
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.stereotype.Component;
23
 
24
import java.time.LocalDateTime;
34545 vikas.jang 25
import java.util.*;
34443 vikas.jang 26
 
27
@Component
28
public class LiquidationService {
29
    private static final Logger LOGGER = LogManager.getLogger(LiquidationService.class);
30
 
31
    @Autowired
32
    BidRepository bidRepository;
33
 
34
    @Autowired
35
    LiquidationRepository liquidationRepository;
36
 
37
    @Autowired
38
    private ItemRepository itemRepository;
39
 
40
    @Autowired
34468 vikas.jang 41
    private BidService bidService;
34443 vikas.jang 42
 
43
    @Autowired
44
    SaholicCISTableRepository saholicCISTableRepository;
45
 
46
    @Autowired
47
    private BulkOrderService bulkOrderService;
48
 
34545 vikas.jang 49
    @Autowired
50
    private TagListingRepository tagListingRepository;
51
 
52
    @Autowired
53
    private NotificationService notificationService;
54
 
34443 vikas.jang 55
    public void processBids(ProfitMandiConstants.BID_CRON_ENUM type) throws Exception {
56
        List<Liquidation> liquidations;
57
        if (type.equals(ProfitMandiConstants.BID_CRON_ENUM.YESTERDAY)){
58
            liquidations = liquidationRepository.selectAllByEndDate(LocalDateTime.now().minusDays(1));
59
        } else {
60
            liquidations = liquidationRepository.selectAllByEndDate(LocalDateTime.now());
61
        }
62
        LOGGER.info("liquidations: {}",liquidations);
63
 
64
        if (liquidations.size() > 0) {
65
            for (Liquidation liquidation : liquidations) {
34576 vikas.jang 66
                try {
67
                    List<Item> items = itemRepository.selectAllByCatalogItemId(liquidation.getCatalogId());
68
                    if (items.size() > 0) {
69
                        long remainingQty = 0;
70
                        for (Item item : items) {
71
                            List<SaholicCISTable> saholicCISTable = saholicCISTableRepository.selectAllByItemId(item.getId());
72
                            remainingQty += saholicCISTable.stream().mapToInt(SaholicCISTable::getAvailability).sum();
73
                        }
74
                        List<Bid> bids = bidRepository.selectAllBidByLiquidationIdAndStatus(liquidation.getId(), Arrays.asList(ProfitMandiConstants.BID_ENUM.PENDING, ProfitMandiConstants.BID_ENUM.PROCESSING));
34443 vikas.jang 75
 
34576 vikas.jang 76
                        for (Bid bid : bids) {
77
                            LOGGER.info("remainingQty: {}",remainingQty);
78
                            if (remainingQty >= bid.getQuantity()) {
79
                                try {
80
                                    List<BulkOrderModel> bulkOrderModels = new ArrayList<>();
81
                                    BulkOrderModel bulkOrderModel = new BulkOrderModel();
82
                                    bulkOrderModel.setRowIndex(bid.getId());
83
                                    bulkOrderModel.setFofoId(bid.getFofoId());
84
                                    bulkOrderModel.setItemId(items.get(0).getId());
85
                                    bulkOrderModel.setQuantity(bid.getQuantity());
86
                                    bulkOrderModel.setDescription(items.get(0).getItemDescription());
87
                                    bulkOrderModel.setItemPrice(bid.getBiddingAmount());
34443 vikas.jang 88
 
34576 vikas.jang 89
                                    bulkOrderModels.add(bulkOrderModel);
34443 vikas.jang 90
 
34576 vikas.jang 91
                                    bulkOrderService.generatePurchaseOrder(bulkOrderModels, bid.getFofoId(), ProfitMandiConstants.PO_TYPE.AUTO, type);
92
                                    remainingQty -= bid.getQuantity();
93
                                } catch (Exception exception){
94
                                    LOGGER.info("generatePurchaseOrder if exception: ",exception);
95
                                }
96
                            } else {
97
                                try {
98
                                    bidService.cancelYesterdayProcessBid(bid);
99
                                } catch (Exception exception){
100
                                    LOGGER.info("generatePurchaseOrder else exception: ",exception);
101
                                }
102
                            }
34443 vikas.jang 103
                        }
34576 vikas.jang 104
                        if (remainingQty <= 0) {
105
                            bidService.sendSummaryMailToUserAndManagers(liquidation.getCreatedBy(), bids, liquidation);
106
                            LOGGER.info("generatePurchaseOrder qty exhausted: {}",remainingQty);
107
                        }
108
                        liquidation.setQuantity((int) remainingQty);
109
                        liquidation.setStatus(ProfitMandiConstants.LIQUIDATION_ENUM.CLOSED);
34443 vikas.jang 110
                    }
34576 vikas.jang 111
                } catch (Exception exception){
112
                    LOGGER.info("generatePurchaseOrder loop: {}",liquidation);
34443 vikas.jang 113
                }
114
            }
115
        }
116
    }
34545 vikas.jang 117
 
118
    public void consolidatedBiddingMessage() throws Exception {
119
        List<Liquidation> liquidations = liquidationRepository.selectAllByStatus(ProfitMandiConstants.LIQUIDATION_ENUM.PUBLISHED);
120
        LOGGER.info("consolidatedBiddingMessage liquidations: {}",liquidations);
121
 
122
        if (liquidations.size() > 0) {
34568 vikas.jang 123
            StringBuilder message = new StringBuilder("*Bidding Update!*\n" +
124
                    "Place your best bids and unlock unbeatable price on smartphones!\n");
34545 vikas.jang 125
            //StringBuilder templateMessage = new StringBuilder("bidd_live");
126
            for (Liquidation liquidation : liquidations) {
127
                List<Item> items = itemRepository.selectAllByCatalogItemId(liquidation.getCatalogId());
34568 vikas.jang 128
                List<Bid> bids = bidRepository.selectBidByLiquidationId(liquidation.getId());
34545 vikas.jang 129
                if (items.size() > 0) {
130
                    long remainingQty = 0;
131
                    for (Item item : items) {
132
                        List<SaholicCISTable> saholicCISTable = saholicCISTableRepository.selectAllByItemId(item.getId());
133
                        remainingQty += saholicCISTable.stream().mapToInt(SaholicCISTable::getAvailability).sum();
134
                    }
135
                    TagListing tagListing = tagListingRepository.selectByItemId(items.get(0).getId());
136
                    liquidation.setQuantity((int) remainingQty);
137
                    if (liquidation.getQuantity() > 0){
138
                        double mrp = tagListing.getMrp();
139
                        double discountPercentage = ((mrp - liquidation.getPrice()) / mrp) * 100;
140
                        message.append("\n")
141
                            .append("*").append(items.get(0).getItemDescription())
142
                            .append(" at ").append(Math.round(discountPercentage)).append("% Off*\n")
34568 vikas.jang 143
                            .append("Starting price: *").append(liquidation.getPrice()).append("*\n");
144
                        if (bids.size() > 0) {
145
                            message.append("Top Bid: *").append(bids.get(0).getBiddingAmount()).append("*\n");
146
                        }
147
                        message.append("Ending on: *").append(StringUtils.toLocalDateTime(liquidation.getEndDate().toString())).append("*\n");
34545 vikas.jang 148
                        //templateMessage.append("|").append(items.get(0).getItemDescription()).append("|").append(liquidation.getPrice()).append("|").append(StringUtils.toLocalDateTime(liquidation.getEndDate().toString()));
149
                    }
150
                }
151
            }
152
 
153
            message.append("\nDon't miss out. Submit your bid now and grab the deal before it's gone!");
154
 
155
            LOGGER.info("templateMessage : {}",message.toString());
156
 
157
            bidService.biddingLiveNotification(message.toString(), "https://images.smartdukaan.com/uploads/whatsapp.jpeg");
158
            //notificationService.sendWhatsappMessage(message, "Bidding Live Now!", "8529003611");
159
            //notificationService.sendWhatsappMediaMessage(message.toString(), "8529003611", "https://images.smartdukaan.com/uploads/whatsapp.jpeg","whatsapp.jpeg", WhatsappMessageType.IMAGE);
160
        }
161
    }
34443 vikas.jang 162
}