Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
32075 tejbeer 1
package com.spice.profitmandi.web.controller;
2
 
32194 tejbeer 3
import com.spice.profitmandi.common.model.ItemDescriptionModel;
32075 tejbeer 4
import com.spice.profitmandi.dao.entity.auth.AuthUser;
5
import com.spice.profitmandi.dao.entity.catalog.Item;
6
import com.spice.profitmandi.dao.entity.inventory.Vendor;
7
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricing;
8
import com.spice.profitmandi.dao.entity.inventory.VendorCatalogPricingLog;
9
import com.spice.profitmandi.dao.entity.warehouse.Supplier;
10
import com.spice.profitmandi.dao.enumuration.inventory.VendorCatalogPricingStatus;
11
import com.spice.profitmandi.dao.model.VendorCatalogPricingModel;
32163 tejbeer 12
import com.spice.profitmandi.dao.model.VendorPriceCircularModel;
32075 tejbeer 13
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
14
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
15
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingLogRepository;
16
import com.spice.profitmandi.dao.repository.inventory.VendorCatalogPricingRepository;
17
import com.spice.profitmandi.dao.repository.inventory.VendorRepository;
18
import com.spice.profitmandi.dao.repository.warehouse.SupplierRepository;
19
import com.spice.profitmandi.service.inventory.VendorCatalogPricingService;
32194 tejbeer 20
import com.spice.profitmandi.service.warehouse.WarehouseService;
32075 tejbeer 21
import com.spice.profitmandi.web.model.LoginDetails;
22
import com.spice.profitmandi.web.util.CookiesProcessor;
23
import com.spice.profitmandi.web.util.MVCResponseSender;
32383 amit.gupta 24
import org.apache.logging.log4j.LogManager;
25
import org.apache.logging.log4j.Logger;
26
import org.springframework.beans.factory.annotation.Autowired;
27
import org.springframework.stereotype.Controller;
28
import org.springframework.transaction.annotation.Transactional;
29
import org.springframework.ui.Model;
30
import org.springframework.web.bind.annotation.RequestBody;
31
import org.springframework.web.bind.annotation.RequestMapping;
32
import org.springframework.web.bind.annotation.RequestMethod;
33
import org.springframework.web.bind.annotation.RequestParam;
32075 tejbeer 34
 
32383 amit.gupta 35
import javax.servlet.http.HttpServletRequest;
36
import java.time.LocalDate;
37
import java.time.LocalDateTime;
38
import java.util.*;
39
import java.util.stream.Collectors;
40
 
32075 tejbeer 41
@Controller
42
@Transactional(rollbackFor = Throwable.class)
43
public class VendorController {
44
 
45
 
46
    @Autowired
47
    VendorRepository vendorRepository;
48
 
49
    @Autowired
50
    private CookiesProcessor cookiesProcessor;
51
 
52
    @Autowired
53
    private AuthRepository authRepository;
54
 
55
    @Autowired
56
    private VendorCatalogPricingService vendorCatalogPricingService;
57
 
58
    @Autowired
59
    private VendorCatalogPricingLogRepository vendorCatalogPricingLogRepository;
60
 
61
    @Autowired
62
    private VendorCatalogPricingRepository vendorCatalogPricingRepository;
63
 
64
 
65
    @Autowired
66
    private MVCResponseSender mvcResponseSender;
67
 
68
    @Autowired
69
    private ItemRepository itemRepository;
70
 
71
    @Autowired
72
    private SupplierRepository supplierRepository;
73
 
32194 tejbeer 74
    @Autowired
75
    private WarehouseService warehouseService;
76
 
32075 tejbeer 77
    private static final Logger LOGGER = LogManager.getLogger(VendorController.class);
78
 
79
 
80
    @RequestMapping(value = "/vendorCatalogPricing", method = RequestMethod.GET)
81
    public String vendorCatalogPricing(HttpServletRequest request, Model model) throws Exception {
82
 
83
        return "vendor-catalog-pricing";
84
    }
85
 
86
 
87
    @RequestMapping(value = "/getVendorCatalogPricingByModel", method = RequestMethod.GET)
88
    public String getVendorCatalogPricingByModel(HttpServletRequest request, @RequestParam int catalogId, Model model) throws Exception {
89
 
90
        List<Integer> vendorIds = new ArrayList<>();
91
        Map<Integer, VendorCatalogPricing> vendorCatalogPricingMap = new HashMap<>();
92
        Map<Integer, VendorCatalogPricingLog> vendorCatalogPricingLogMap = new HashMap<>();
93
        List<VendorCatalogPricing> vendorCatalogPricing = vendorCatalogPricingRepository.selectByCatalogId(catalogId);
94
        if (!vendorCatalogPricing.isEmpty()) {
95
            vendorIds.addAll(vendorCatalogPricing.stream().distinct().map(x -> x.getVendorId()).collect(Collectors.toList()));
96
            vendorCatalogPricingMap = vendorCatalogPricing.stream().collect(Collectors.toMap(x -> x.getVendorId(), x -> x));
97
        }
98
 
99
        List<VendorCatalogPricingLog> vendorCatalogPricingLog = vendorCatalogPricingLogRepository.selectByCatalogId(catalogId, VendorCatalogPricingStatus.PENDING);
100
        if (!vendorCatalogPricingLog.isEmpty()) {
101
            vendorIds.addAll(vendorCatalogPricingLog.stream().distinct().map(x -> x.getVendorId()).collect(Collectors.toList()));
102
            vendorCatalogPricingLogMap = vendorCatalogPricingLog.stream().filter(x -> x.getStatus().equals(VendorCatalogPricingStatus.PENDING)).collect(Collectors.toMap(x -> x.getVendorId(), x -> x));
103
        }
104
        LOGGER.info("VendorIds {}", vendorIds);
105
        List<Supplier> suppliers = new ArrayList<Supplier>();
106
        if (!vendorIds.isEmpty()) {
107
            suppliers.addAll(supplierRepository.selectBySupplierIds(vendorIds));
108
        }
109
        LOGGER.info("suppliers {}", suppliers);
110
 
111
        model.addAttribute("suppliers", suppliers);
112
        model.addAttribute("vendorCatalogPricingMap", vendorCatalogPricingMap);
113
        model.addAttribute("vendorCatalogPricingLogMap", vendorCatalogPricingLogMap);
114
 
115
        model.addAttribute("catalogId", catalogId);
116
 
117
 
118
        return "vendor-catalog-pricing-view";
119
    }
120
 
121
 
122
    @RequestMapping(value = "/vendors", method = RequestMethod.GET)
123
    public String getVendor(HttpServletRequest request, Model model, @RequestParam String query) throws Throwable {
32398 amit.gupta 124
        List<Supplier> vendors = supplierRepository.selectAll().stream().filter(x -> x.getName().toLowerCase().matches(".*?" + query.toLowerCase() + ".*?"))
125
                .filter(x -> x.isStatus()).collect(Collectors.toList());
32075 tejbeer 126
        model.addAttribute("response1", mvcResponseSender.createResponseString(vendors));
127
        return "response";
128
    }
129
 
130
 
131
    @RequestMapping(value = "/createVendorCatalogPricing", method = RequestMethod.POST)
132
    public String createVendorCatalogPricing(HttpServletRequest request, @RequestBody VendorCatalogPricingModel vendorCatalogPricingModel, Model model) throws Exception {
133
 
134
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
135
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
136
        vendorCatalogPricingModel.setAuthId(authUser.getId());
137
 
138
        LOGGER.info("vendorCatalogPricingModel {}", vendorCatalogPricingModel);
139
 
140
        vendorCatalogPricingService.createVendorCatalogPricingLog(vendorCatalogPricingModel);
141
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
142
        return "response";
143
 
144
    }
145
 
146
 
147
    @RequestMapping(value = "/vendorCatalogPricingRequests", method = RequestMethod.GET)
148
    public String vendorCatalogPricingRequests(HttpServletRequest request, Model model) throws Exception {
149
        List<VendorCatalogPricingLog> vendorCatalogPricingRequests = vendorCatalogPricingLogRepository.selectByStatus(VendorCatalogPricingStatus.PENDING);
150
        Map<Integer, AuthUser> authUserMap = authRepository.selectAllActiveUser().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
151
        model.addAttribute("vendorCatalogPricingRequests", vendorCatalogPricingRequests);
152
        if (!vendorCatalogPricingRequests.isEmpty()) {
153
            Set<Integer> catalogIds = vendorCatalogPricingRequests.stream().map(x -> x.getCatalogId()).collect(Collectors.toSet());
154
            List<Integer> vendorIds = vendorCatalogPricingRequests.stream().map(x -> x.getVendorId()).collect(Collectors.toList());
155
 
156
 
157
            Map<Integer, List<Item>> itemMap = itemRepository.selectAllByCatalogIds(catalogIds).stream().collect(Collectors.groupingBy(x -> x.getCatalogItemId()));
158
            model.addAttribute("itemMap", itemMap);
159
        }
160
        Map<Integer, Vendor> vendorMap = vendorRepository.selectAll().stream().collect(Collectors.toMap(x -> x.getId(), x -> x));
161
        model.addAttribute("authMap", authUserMap);
162
        model.addAttribute("vendorMap", vendorMap);
163
        model.addAttribute("vendorPricingStatus", VendorCatalogPricingStatus.values());
164
 
165
        return "vendor-catalog-pricing-request";
166
    }
167
 
168
    @RequestMapping(value = "/verifyVendorCatalogPricingRequest", method = RequestMethod.POST)
169
    public String verifyVendorCatalogPricingRequest(HttpServletRequest request, @RequestParam int id, @RequestParam VendorCatalogPricingStatus status, Model model) throws Exception {
32086 tejbeer 170
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
171
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
32075 tejbeer 172
 
173
        VendorCatalogPricingLog vendorCatalogPricingLog = vendorCatalogPricingLogRepository.selectById(id);
32298 tejbeer 174
 
175
        if (status.equals(VendorCatalogPricingStatus.APPROVED)) {
32785 amit.gupta 176
            List<VendorCatalogPricingLog> vendorCatalogPricingLogsOnEffectedDate = vendorCatalogPricingLogRepository.selectByEffectedDateAndCatalogId(vendorCatalogPricingLog.getVendorId(), vendorCatalogPricingLog.getCatalogId(), vendorCatalogPricingLog.getEffectedOn());
32791 amit.gupta 177
            Optional<VendorCatalogPricingLog> optionalVendorCatalogPricingLog = vendorCatalogPricingLogsOnEffectedDate.stream().filter(x -> x.getStatus().equals(VendorCatalogPricingStatus.APPROVED)).findAny();
178
            if (optionalVendorCatalogPricingLog.isPresent()) {
179
                VendorCatalogPricingLog approvedPricingLog = optionalVendorCatalogPricingLog.get();
32786 amit.gupta 180
                approvedPricingLog.setStatus(VendorCatalogPricingStatus.REJECTED);
181
                approvedPricingLog.setUpdatedTimestamp(LocalDateTime.now());
32298 tejbeer 182
            }
32785 amit.gupta 183
 
32298 tejbeer 184
        }
32075 tejbeer 185
        vendorCatalogPricingLog.setStatus(status);
32086 tejbeer 186
        vendorCatalogPricingLog.setUpdatedTimestamp(LocalDateTime.now());
32075 tejbeer 187
        if (vendorCatalogPricingLog.getStatus().equals(VendorCatalogPricingStatus.APPROVED)) {
32086 tejbeer 188
            vendorCatalogPricingLog.setApprovedBy(authUser.getId());
189
            vendorCatalogPricingLog.setApprovedTimestamp(LocalDateTime.now());
32075 tejbeer 190
            vendorCatalogPricingService.createVendorCatalogPricing(vendorCatalogPricingLog);
191
        }
192
 
193
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
194
        return "response";
195
    }
196
 
197
 
198
    @RequestMapping(value = "/vendorPriceCircular", method = RequestMethod.GET)
199
    public String vendorPriceCircular(HttpServletRequest request, Model model) throws Exception {
200
 
201
 
202
        return "vendor-price-circular";
203
 
204
    }
205
 
206
 
207
    @RequestMapping(value = "/getVendorPriceCircular", method = RequestMethod.GET)
208
    public String getVendorPriceCircular(HttpServletRequest request, @RequestParam int vendorId, @RequestParam LocalDate effectedDate, Model model) throws Exception {
209
 
32485 amit.gupta 210
        List<VendorPriceCircularModel> vendorCatalogPricings = vendorCatalogPricingLogRepository.getVendorPricesOnDate(vendorId, effectedDate);
32075 tejbeer 211
 
212
        if (!vendorCatalogPricings.isEmpty()) {
213
            Set<Integer> catalogIds = vendorCatalogPricings.stream().map(x -> x.getCatalogId()).collect(Collectors.toSet());
214
            Map<Integer, List<Item>> itemMap = itemRepository.selectAllByCatalogIds(catalogIds).stream().collect(Collectors.groupingBy(x -> x.getCatalogItemId()));
215
            model.addAttribute("itemMap", itemMap);
216
        }
217
 
218
        model.addAttribute("vendorCatalogPricings", vendorCatalogPricings);
219
        return "vendor-price-circular-view";
220
 
221
    }
32145 tejbeer 222
 
223
    @RequestMapping(value = "/getPricing", method = RequestMethod.GET)
32488 amit.gupta 224
    public String getPricing(HttpServletRequest request, @RequestParam int vendorId, @RequestParam int itemId, @RequestParam LocalDate onDate, Model model) throws Exception {
32145 tejbeer 225
 
226
        Item item = itemRepository.selectById(itemId);
32899 amit.gupta 227
        if (vendorId==406 || vendorId == 419) {
228
            vendorId = 325;
229
        }
32488 amit.gupta 230
        VendorPriceCircularModel vendorPriceCircularModel = vendorCatalogPricingLogRepository.getVendorPriceOnDate(vendorId, item.getCatalogItemId(), onDate);
32145 tejbeer 231
 
32488 amit.gupta 232
        LOGGER.info("vendorCatalogPricing {}", vendorPriceCircularModel);
32145 tejbeer 233
 
234
 
32488 amit.gupta 235
        model.addAttribute("response1", mvcResponseSender.createResponseString(vendorPriceCircularModel));
32145 tejbeer 236
 
237
        return "response";
238
 
239
    }
32194 tejbeer 240
 
241
    @RequestMapping(value = "/vendorItem", method = RequestMethod.GET)
32298 tejbeer 242
    public String getItemPricing(HttpServletRequest request, Model model, @RequestParam int vendorId, @RequestParam String query) throws Throwable {
32194 tejbeer 243
        String query1 = query.toLowerCase();
32898 amit.gupta 244
        //UK or rudrapur
245
        if (vendorId==406 || vendorId == 419) {
246
            vendorId = 325;
247
        }
32194 tejbeer 248
        List<ItemDescriptionModel> partnersItemDescription = warehouseService.getAllPartnerItemStringDescription(vendorId).parallelStream().filter(x -> x.getItemDescription().toLowerCase().matches(".*?" + query1 + ".*?")).collect(Collectors.toList());
249
        LOGGER.info("partnersItemDescription" + partnersItemDescription);
250
 
251
        model.addAttribute("response1", mvcResponseSender.createResponseString(partnersItemDescription));
252
        return "response";
253
    }
32075 tejbeer 254
}