Subversion Repositories SmartDukaan

Rev

Rev 37765 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
22981 ashik.ali 1
package com.spice.profitmandi.web.controller;
2
 
23494 ashik.ali 3
import com.spice.profitmandi.common.enumuration.ContentType;
23955 govind 4
import com.spice.profitmandi.common.enumuration.CounterSize;
28825 tejbeer 5
import com.spice.profitmandi.common.enumuration.FofoType;
22981 ashik.ali 6
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
30017 amit.gupta 7
import com.spice.profitmandi.common.model.*;
28024 tejbeer 8
import com.spice.profitmandi.common.util.Utils;
23330 ashik.ali 9
import com.spice.profitmandi.common.web.util.ResponseSender;
27231 tejbeer 10
import com.spice.profitmandi.dao.entity.auth.AuthUser;
30017 amit.gupta 11
import com.spice.profitmandi.dao.entity.dtr.*;
12
import com.spice.profitmandi.dao.entity.fofo.*;
34527 tejus.loha 13
import com.spice.profitmandi.dao.entity.onBoarding.LoiForm;
24159 tejbeer 14
import com.spice.profitmandi.dao.entity.user.Location;
15
import com.spice.profitmandi.dao.entity.user.Promoter;
24123 tejbeer 16
import com.spice.profitmandi.dao.entity.user.User;
27231 tejbeer 17
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
35648 ranu 18
import com.spice.profitmandi.dao.repository.catalog.BrandsRepository;
27231 tejbeer 19
import com.spice.profitmandi.dao.repository.cs.CsService;
37780 amit 20
import com.spice.profitmandi.dao.repository.cs.DemoPartnerAccessService;
28272 tejbeer 21
import com.spice.profitmandi.dao.repository.cs.RetailerBrandsLimitService;
30017 amit.gupta 22
import com.spice.profitmandi.dao.repository.dtr.*;
27797 tejbeer 23
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeRepository;
24
import com.spice.profitmandi.dao.repository.fofo.PartnerTypeChangeService;
28381 tejbeer 25
import com.spice.profitmandi.dao.repository.fofo.PincodePartnerRepository;
35289 amit 26
import com.spice.profitmandi.dao.repository.trialOnboarding.TrialFormRepository;
24123 tejbeer 27
import com.spice.profitmandi.dao.repository.user.LocationRepository;
34527 tejus.loha 28
import com.spice.profitmandi.dao.repository.user.LoiFormRepository;
24159 tejbeer 29
import com.spice.profitmandi.dao.repository.user.PromoterRepository;
24123 tejbeer 30
import com.spice.profitmandi.dao.repository.user.UserRepository;
33990 tejus.loha 31
import com.spice.profitmandi.dao.repository.warehouse.WarehouseSupplierInvoiceRepository;
24349 amit.gupta 32
import com.spice.profitmandi.service.PartnerInvestmentService;
33814 ranu 33
import com.spice.profitmandi.service.authentication.RoleManager;
32731 ranu 34
import com.spice.profitmandi.service.catalog.BrandsService;
24159 tejbeer 35
import com.spice.profitmandi.service.inventory.InventoryService;
37765 amit 36
import com.spice.profitmandi.dao.enumuration.fofo.StoreClosureReason;
22981 ashik.ali 37
import com.spice.profitmandi.service.user.RetailerService;
37765 amit 38
import com.spice.profitmandi.service.user.StoreAccess;
39
import com.spice.profitmandi.service.user.StoreClosureService;
28908 tejbeer 40
import com.spice.profitmandi.service.user.StoreTimelineTatService;
25276 amit.gupta 41
import com.spice.profitmandi.web.model.LoginDetails;
42
import com.spice.profitmandi.web.util.CookiesProcessor;
24123 tejbeer 43
import com.spice.profitmandi.web.util.MVCResponseSender;
30017 amit.gupta 44
import org.apache.logging.log4j.LogManager;
45
import org.apache.logging.log4j.Logger;
46
import org.json.JSONObject;
47
import org.springframework.beans.factory.annotation.Autowired;
48
import org.springframework.beans.factory.annotation.Qualifier;
49
import org.springframework.core.io.InputStreamResource;
50
import org.springframework.http.HttpHeaders;
51
import org.springframework.http.HttpStatus;
52
import org.springframework.http.ResponseEntity;
53
import org.springframework.stereotype.Controller;
35648 ranu 54
import org.springframework.transaction.annotation.Transactional;
30017 amit.gupta 55
import org.springframework.ui.Model;
56
import org.springframework.web.bind.annotation.*;
22981 ashik.ali 57
 
30017 amit.gupta 58
import javax.servlet.http.HttpServletRequest;
59
import java.io.File;
60
import java.io.FileInputStream;
61
import java.io.FileNotFoundException;
62
import java.time.LocalDate;
63
import java.time.LocalDateTime;
64
import java.util.*;
65
import java.util.stream.Collectors;
66
 
22981 ashik.ali 67
@Controller
35458 amit 68
@Transactional(rollbackFor = Throwable.class)
22981 ashik.ali 69
public class RetailerController {
70
 
33990 tejus.loha 71
    private static final Logger LOGGER = LogManager.getLogger(RetailerController.class);
37630 amit 72
    private static final List<String> CHANGE_PARTNER_CATEGORY_PERMISSIONS = Arrays.asList("tarun.verma@smartdukaan.com", "kamini.sharma@smartdukaan.com");
33990 tejus.loha 73
    @Autowired
74
    PartnerOnBoardingPanelRepository partnerOnBoardingPanelRepository;
75
    @Autowired
76
    BrandsService brandsService;
77
    @Autowired
78
    private RetailerService retailerService;
37765 amit 79
 
33990 tejus.loha 80
    @Autowired
37765 amit 81
    private StoreClosureService storeClosureService;
82
    @Autowired
33990 tejus.loha 83
    private RetailerRepository retailerRepository;
84
    @Autowired
85
    private PincodePartnerRepository pincodePartnerRepository;
86
    @Autowired
87
    private BrandLimitRepository brandLimitRepository;
88
    @Autowired
89
    private RetailerBrandsLimitService retailerBrandsLimitService;
90
    @Autowired
91
    private RetailerBrandsLimitRepository retailerBrandsLimitRepository;
92
    @Autowired
93
    private ShopRepository shopRepository;
94
    @Autowired
95
    private RetailerBlockBrandsRepository retailerBlockBrandsRepository;
96
    @Autowired
97
    private FofoStoreRepository fofoStoreRepository;
98
    @Autowired
99
    private DocumentRepository documentRepository;
100
    @Autowired
101
    private CookiesProcessor cookiesProcessor;
102
    @Autowired
103
    @Qualifier("userUserRepository")
104
    private UserRepository userRepository;
105
    @Autowired
106
    private AuthRepository authRepository;
107
    @Autowired
108
    private CsService csService;
37780 amit 109
 
33990 tejus.loha 110
    @Autowired
37780 amit 111
    private DemoPartnerAccessService demoPartnerAccessService;
112
    @Autowired
33990 tejus.loha 113
    private LocationRepository locationRepository;
114
    @Autowired
115
    private ResponseSender<?> responseSender;
116
    @Autowired
117
    private MVCResponseSender mvcResponseSender;
118
    @Autowired
119
    private InventoryService inventoryService;
120
    @Autowired
121
    private PromoterRepository promoterRepository;
122
    @Autowired
123
    private PartnerInvestmentService partnerInvestmentService;
124
    @Autowired
125
    private Mongo mongoClient;
126
    @Autowired
127
    private PartnerTypeChangeService partnerTypeChangeService;
128
    @Autowired
129
    private PartnerTypeChangeRepository partnerTypeChangeRepository;
130
    @Autowired
131
    private StoreTimelineTatService storeTimelineTatService;
132
    @Autowired
133
    private RoleManager roleManager;
134
    @Autowired
135
    private RetailerContactRepository retailerContactRepository;
136
    @Autowired
35648 ranu 137
    private BrandsRepository brandsRepository;
138
    @Autowired
33990 tejus.loha 139
    private WarehouseSupplierInvoiceRepository warehouseSupplierInvoiceRepository;
24124 govind 140
 
35289 amit 141
    @Autowired
142
    TrialFormRepository trialFormRepository;
143
 
33990 tejus.loha 144
    @RequestMapping(value = "/retailerDetails", method = RequestMethod.GET)
145
    public String retailerInfoByEmailIdOrMobileNumber(HttpServletRequest request,
146
                                                      @RequestParam(name = ProfitMandiConstants.EMAIL_ID_OR_MOBILE_NUMBER) String emailIdOrMobileNumber,
147
                                                      Model model) throws ProfitMandiBusinessException {
148
        LOGGER.info("Request Received at url {} with emailIdOrMobileNumber {}", request.getRequestURI(),
149
                emailIdOrMobileNumber);
24124 govind 150
 
33990 tejus.loha 151
        Map<String, Object> map = retailerService.getByEmailIdOrMobileNumber(emailIdOrMobileNumber);
35372 aman 152
        LOGGER.info("map - {}", map.get("trialForm"));
153
        LOGGER.info("map - {}", map);
33990 tejus.loha 154
        model.addAllAttributes(map);
28832 tejbeer 155
 
33990 tejus.loha 156
        model.addAttribute("counterSizes", CounterSize.values());
157
        Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
28832 tejbeer 158
 
35375 aman 159
        LOGGER.info("warehouseMap {}", warehouseMap);
33990 tejus.loha 160
        model.addAttribute("warehouses", warehouseMap);
161
        model.addAttribute("fofoTypes", FofoType.values());
162
        if (map.containsKey("retailer")) {
163
            Retailer retailer = (Retailer) map.get("retailer");
164
            User user = userRepository.selectById(retailer.getId());
165
            if (user.getLocation() != null) {
166
                Location location = locationRepository.selectById(user.getLocation());
167
                model.addAttribute("locationdetail", location);
168
                LOGGER.info("location" + location);
169
            }
170
        }
171
        return "retailer-details";
172
    }
28272 tejbeer 173
 
34527 tejus.loha 174
    @Autowired
175
    LoiFormRepository loiFormRepository;
176
 
33990 tejus.loha 177
    @RequestMapping(value = "/retailerDetails", method = RequestMethod.PUT)
178
    public String updateRetailerDetails(HttpServletRequest request,
179
                                        @RequestBody UpdateRetailerRequest updateRetailerRequest, Model model) throws ProfitMandiBusinessException {
180
        LOGGER.info("Request Received at url {} with body {}", request.getRequestURI(), updateRetailerRequest);
34639 tejus.loha 181
        String storeCode = updateRetailerRequest.getFofostorecode();
34640 tejus.loha 182
        boolean isStoreCodeNotCreated = (storeCode == null || storeCode.isEmpty());
183
        LOGGER.info("isStoreCodeNotCreated - "+isStoreCodeNotCreated);
184
        if (!updateRetailerRequest.getFofoType().equals(FofoType.INTERNAL) && isStoreCodeNotCreated) {
34631 tejus.loha 185
            checkLoiCompletion(updateRetailerRequest);
34527 tejus.loha 186
        }
33990 tejus.loha 187
        Map<String, Object> map = retailerService.updateRetailerDetails(updateRetailerRequest);
188
        //retailerService.up
28272 tejbeer 189
 
33990 tejus.loha 190
        model.addAllAttributes(map);
191
        model.addAttribute("counterSizes", CounterSize.values());
192
        Map<Integer, String> warehouseMap = ProfitMandiConstants.WAREHOUSE_MAP;
193
        LOGGER.info("warehouseMap", warehouseMap);
194
        model.addAttribute("warehouses", warehouseMap);
195
        model.addAttribute("fofoTypes", FofoType.values());
196
        return "retailer-details";
197
    }
28272 tejbeer 198
 
34631 tejus.loha 199
    private void checkLoiCompletion(UpdateRetailerRequest updateRetailerRequest) throws ProfitMandiBusinessException {
35305 amit 200
        TrialForm trialForm;
201
        try {
202
            trialForm = trialFormRepository.selectByEmailOrMobile(updateRetailerRequest.getUserMobileNumber());
203
            if (updateRetailerRequest.getFofoType().equals(FofoType.INTERNAL) || trialForm != null) {
204
                return; // Early return for internal type
205
            }
206
        } catch (Exception e) {
207
            trialForm = null;
208
        }
35289 amit 209
        if (updateRetailerRequest.getFofoType().equals(FofoType.INTERNAL) || trialForm != null) {
34631 tejus.loha 210
            return; // Early return for internal type
211
        }
212
        String userMobile = updateRetailerRequest.getUserMobileNumber();
213
        String gstNumber = updateRetailerRequest.getGstNumber();
214
        LoiForm loiForm = findLoiForm(userMobile, gstNumber);
215
        if (loiForm == null) {
34640 tejus.loha 216
            throw new ProfitMandiBusinessException("Loi Not Available", "Message - ", "Please fill the LOI_FORM and try again");
34631 tejus.loha 217
        }
218
        if (loiForm.getOnBoardingId() <= 0) {
219
            throw new ProfitMandiBusinessException("Loi not completed", "Message - ", "Please Complete LOI_FORM and try again");
220
        }
221
    }
34640 tejus.loha 222
 
34631 tejus.loha 223
    private LoiForm findLoiForm(String mobile, String gstNumber) throws ProfitMandiBusinessException {
224
        LoiForm form = loiFormRepository.selectByEmailOrMobile(mobile);
225
        if (form == null && gstNumber != null) {
226
            form = loiFormRepository.selectByEqualsKeyValue("gstNo", gstNumber);
227
        }
228
        return form;
229
    }
230
 
33990 tejus.loha 231
    @RequestMapping(value = "/retailer/update-email", method = RequestMethod.POST)
232
    public String updateRetailerEmail(@RequestParam("newEmail") String newEmail, @RequestParam("fofoID") int fofoID) throws ProfitMandiBusinessException {
233
        retailerService.updateRetailerEmail(fofoID, newEmail);
234
        return "retailer-details";
235
    }
24124 govind 236
 
33990 tejus.loha 237
    @RequestMapping(value = "/retailerInfo", method = RequestMethod.GET)
36369 vikas 238
    public String retailerInfo(HttpServletRequest request, Model model) throws Exception {
239
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
240
        model.addAttribute("loginDetails", loginDetails);
33990 tejus.loha 241
        return "retailer-info";
242
    }
28024 tejbeer 243
 
33990 tejus.loha 244
    @RequestMapping(value = "/district/all/stateName", method = RequestMethod.GET)
245
    public ResponseEntity<?> getAllDistrict(@RequestParam(name = "stateName") String stateName) {
246
        return responseSender.ok(retailerService.getAllDistrictMaster(stateName));
247
    }
24124 govind 248
 
33990 tejus.loha 249
    @RequestMapping(value = "/retailerDocument/documentId", method = RequestMethod.GET)
250
    public ResponseEntity<?> retailerDocumentById(HttpServletRequest request,
251
                                                  @RequestParam(name = ProfitMandiConstants.DOCUMENT_ID) int documentId,
252
                                                  @RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId) throws ProfitMandiBusinessException {
253
        Document document = documentRepository.selectById(documentId);
254
        Retailer retailer = retailerRepository.selectById(retailerId);
24124 govind 255
 
33990 tejus.loha 256
        if (retailer.getDocumentId() == null) {
257
            throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, retailer.getId(), "RTLR_1012");
258
        }
259
        if (retailer.getDocumentId() != documentId) {
260
            throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, documentId, "RTLR_1014");
261
        }
262
        return responseSender.ok(document);
263
    }
25276 amit.gupta 264
 
33990 tejus.loha 265
    @RequestMapping(value = "/retailerDocument/download", method = RequestMethod.GET)
266
    public ResponseEntity<?> downloadRetailerDocument(HttpServletRequest request,
267
                                                      @RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId, Model model)
268
            throws ProfitMandiBusinessException {
24124 govind 269
 
33990 tejus.loha 270
        Retailer retailer = retailerRepository.selectById(retailerId);
27231 tejbeer 271
 
33990 tejus.loha 272
        if (retailer.getDocumentId() == null) {
273
            throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, retailer.getId(), "RTLR_1012");
274
        }
27231 tejbeer 275
 
33990 tejus.loha 276
        Document document = documentRepository.selectById(retailer.getDocumentId());
24124 govind 277
 
33990 tejus.loha 278
        FileInputStream file = null;
279
        try {
280
            file = new FileInputStream(document.getPath() + File.separator + document.getName());
281
        } catch (FileNotFoundException e) {
282
            LOGGER.error("Retailer Document file not found : ", e);
283
            throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, document.getId(), "RTLR_1013");
284
        }
285
        // ByteArrayOutputStream byteArrayOutputStream = new
286
        // ByteArrayOutputStream();
287
        // ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
24124 govind 288
 
33990 tejus.loha 289
        final HttpHeaders headers = new HttpHeaders();
290
        String contentType = "";
291
        if (document.getContentType() == ContentType.JPEG) {
292
            contentType = "image/jpeg";
293
        } else if (document.getContentType() == ContentType.PNG) {
294
            contentType = "image/png";
295
        } else if (document.getContentType() == ContentType.PDF) {
296
            contentType = "application/pdf";
297
        }
298
        headers.set("Content-Type", contentType);
299
        headers.set("Content-disposition", "inline; filename=" + document.getName());
300
        headers.setContentLength(document.getSize());
301
        final InputStreamResource inputStreamResource = new InputStreamResource(file);
302
        return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
24124 govind 303
 
33990 tejus.loha 304
        // return
305
        // responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
306
    }
24159 tejbeer 307
 
33990 tejus.loha 308
    @RequestMapping(value = "/retailerShopDocument/shopId", method = RequestMethod.GET)
309
    public ResponseEntity<?> retailerShopDocumentById(HttpServletRequest request,
310
                                                      @RequestParam(name = ProfitMandiConstants.SHOP_ID) int shopId,
311
                                                      @RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId) throws ProfitMandiBusinessException {
312
        Shop shop = shopRepository.selectById(shopId);
24159 tejbeer 313
 
33990 tejus.loha 314
        if (shop.getRetailerId() != retailerId) {
315
            throw new ProfitMandiBusinessException(ProfitMandiConstants.SHOP_ID, shop.getId(), "SHP_1004");
316
        }
24349 amit.gupta 317
 
33990 tejus.loha 318
        if (shop.getDocumentId() == null) {
319
            throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, shop.getId(), "SHP_1005");
320
        }
24159 tejbeer 321
 
33990 tejus.loha 322
        Document document = documentRepository.selectById(shop.getDocumentId());
323
        return responseSender.ok(document);
324
    }
27797 tejbeer 325
 
33990 tejus.loha 326
    @RequestMapping(value = "/retailerShopDocument/download", method = RequestMethod.GET)
327
    public ResponseEntity<?> downloadRetailerShopDocument(HttpServletRequest request,
328
                                                          @RequestParam(name = ProfitMandiConstants.SHOP_ID) int shopId,
329
                                                          @RequestParam(name = ProfitMandiConstants.RETAILER_ID) int retailerId, Model model)
330
            throws ProfitMandiBusinessException {
27797 tejbeer 331
 
33990 tejus.loha 332
        Shop shop = shopRepository.selectById(shopId);
28908 tejbeer 333
 
33990 tejus.loha 334
        if (shop.getRetailerId() != retailerId) {
335
            throw new ProfitMandiBusinessException(ProfitMandiConstants.SHOP_ID, shop.getId(), "SHP_1004");
336
        }
28908 tejbeer 337
 
33990 tejus.loha 338
        if (shop.getDocumentId() == null) {
339
            throw new ProfitMandiBusinessException(ProfitMandiConstants.RETAILER_ID, shop.getId(), "SHP_1005");
340
        }
33814 ranu 341
 
33990 tejus.loha 342
        Document document = documentRepository.selectById(shop.getDocumentId());
33814 ranu 343
 
33990 tejus.loha 344
        FileInputStream file = null;
345
        try {
346
            file = new FileInputStream(document.getPath() + File.separator + document.getName());
347
        } catch (FileNotFoundException e) {
348
            LOGGER.error("Retailer Document file not found : ", e);
349
            throw new ProfitMandiBusinessException(ProfitMandiConstants.DOCUMENT_ID, document.getId(), "RTLR_1013");
350
        }
351
        // ByteArrayOutputStream byteArrayOutputStream = new
352
        // ByteArrayOutputStream();
353
        // ExcelUtils.writeSchemeModels(schemeModels, byteArrayOutputStream);
28071 tejbeer 354
 
33990 tejus.loha 355
        final HttpHeaders headers = new HttpHeaders();
356
        String contentType = "";
357
        if (document.getContentType() == ContentType.JPEG) {
358
            contentType = "image/jpeg";
359
        } else if (document.getContentType() == ContentType.PNG) {
360
            contentType = "image/png";
361
        } else if (document.getContentType() == ContentType.PDF) {
362
            contentType = "application/pdf";
363
        }
364
        headers.set("Content-Type", contentType);
365
        headers.set("Content-disposition", "inline; filename=" + document.getName());
366
        headers.setContentLength(document.getSize());
367
        final InputStreamResource inputStreamResource = new InputStreamResource(file);
368
        return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
28071 tejbeer 369
 
33990 tejus.loha 370
        // return
371
        // responseSender.ok(ResponseCodeHolder.getMessage("ITM_AGNG_OK_1000"));
372
    }
28071 tejbeer 373
 
33990 tejus.loha 374
    @GetMapping(value = "/getstore")
33247 ranu 375
    public String getstore(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
30017 amit.gupta 376
 
33990 tejus.loha 377
        List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
378
                .collect(Collectors.toList());
30426 tejbeer 379
 
33990 tejus.loha 380
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
30426 tejbeer 381
 
33990 tejus.loha 382
        Map<Integer, CustomRetailer> fofoIdsAndCustomRetailer = fofoIds.stream().map(x -> customRetailerMap.get(x))
383
                .filter(x -> x != null).collect(Collectors.toList()).stream()
384
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
30426 tejbeer 385
 
33990 tejus.loha 386
        //LOGGER.info("fofoIds" + fofoIds);
387
        model.addAttribute("fofoIdsAndCustomRetailer", fofoIdsAndCustomRetailer);
388
        //LOGGER.info("fofoIdsAndCustomRetailer" + fofoIdsAndCustomRetailer);
389
        model.addAttribute("fofoIds", fofoIds);
24124 govind 390
 
33990 tejus.loha 391
        return "store";
29267 manish 392
 
33990 tejus.loha 393
    }
30017 amit.gupta 394
 
33990 tejus.loha 395
    @RequestMapping(value = "/getPartnerinfo")
396
    public String getPartnerinfo(HttpServletRequest request, @RequestBody SelectStorePartnerInfo selectStorePartnerInfo,
397
                                 Model model) throws ProfitMandiBusinessException {
398
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
399
        //LOGGER.info("selectStorePartnerInfo" + selectStorePartnerInfo.getUserIds());
400
        List<FofoStore> fofoStores = fofoStoreRepository.selectByRetailerIds(selectStorePartnerInfo.getUserIds());
401
        //LOGGER.info("fofoStoresInfo" + fofoStores);
402
        Map<Integer, Boolean> investments = new HashMap<>();
32207 amit.gupta 403
 
33990 tejus.loha 404
        for (FofoStore fofoStore : fofoStores) {
405
            boolean isOk = false;
406
            if (fofoStore.getGraceDate() != null && fofoStore.getGraceDate().isAfter(LocalDate.now())) {
407
                isOk = true;
408
            } else {
409
                try {
410
                    isOk = partnerInvestmentService.isInvestmentOk(fofoStore.getId(), ProfitMandiConstants.MIN_INVESTMENT_PERCENTAGE,
411
                            ProfitMandiConstants.CUTOFF_INVESTMENT);
412
                    if (fofoStore.getGraceCount() > 0) {
413
                        fofoStore.setGraceDate(null);
414
                        fofoStore.setGraceCount(0);
415
                    }
416
                } catch (ProfitMandiBusinessException e) {
417
                }
418
            }
419
            investments.put(fofoStore.getId(), isOk);
420
        }
29267 manish 421
 
33990 tejus.loha 422
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(false);
423
        model.addAttribute("fofoStores", fofoStores);
424
        model.addAttribute("investments", investments);
425
        model.addAttribute("customRetailers", customRetailers);
426
        boolean canChangeCategory = CHANGE_PARTNER_CATEGORY_PERMISSIONS.contains(loginDetails.getEmailId());
427
        model.addAttribute("canChangeCategory", canChangeCategory);
29267 manish 428
 
33990 tejus.loha 429
        return "store-investment";
29267 manish 430
 
33990 tejus.loha 431
    }
29267 manish 432
 
33990 tejus.loha 433
    @GetMapping(value = "/getAllStores")
434
    public String getAllStores(HttpServletRequest request, Model model) throws Exception {
30017 amit.gupta 435
 
33990 tejus.loha 436
        List<FofoStore> fofoStores = fofoStoreRepository.selectAll().stream().filter(x -> x.isActive())
437
                .collect(Collectors.toList());
438
        Map<Integer, Boolean> investments = new HashMap<>();
24124 govind 439
 
33990 tejus.loha 440
        for (FofoStore fofoStore : fofoStores) {
441
            boolean isOk = false;
442
            if (fofoStore.getGraceDate() != null && fofoStore.getGraceDate().isAfter(LocalDate.now())) {
443
                isOk = true;
444
            } else {
445
                try {
446
                    isOk = partnerInvestmentService.isInvestmentOk(fofoStore.getId(), ProfitMandiConstants.MIN_INVESTMENT_PERCENTAGE,
447
                            ProfitMandiConstants.CUTOFF_INVESTMENT);
448
                    if (fofoStore.getGraceCount() > 0) {
449
                        fofoStore.setGraceDate(null);
450
                        fofoStore.setGraceCount(0);
451
                    }
452
                } catch (ProfitMandiBusinessException e) {
453
                }
454
            }
455
            investments.put(fofoStore.getId(), isOk);
456
        }
24124 govind 457
 
33990 tejus.loha 458
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(false);
459
        model.addAttribute("fofoStores", fofoStores);
460
        model.addAttribute("investments", investments);
461
        model.addAttribute("customRetailers", customRetailers);
24124 govind 462
 
33990 tejus.loha 463
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
464
        boolean canChangeCategory = CHANGE_PARTNER_CATEGORY_PERMISSIONS.contains(loginDetails.getEmailId());
465
        model.addAttribute("canChangeCategory", canChangeCategory);
24124 govind 466
 
33990 tejus.loha 467
        return "store-investment";
32207 amit.gupta 468
 
33990 tejus.loha 469
    }
24124 govind 470
 
33990 tejus.loha 471
    @GetMapping(value = "/getPartnerCategory")
33247 ranu 472
    public String getPartnerCategory(HttpServletRequest request, @RequestParam int fofoId, Model model) throws ProfitMandiBusinessException {
27797 tejbeer 473
 
33990 tejus.loha 474
        PartnerType partnerType = partnerTypeChangeService.getTypeOnDate(fofoId, LocalDate.now());
475
        List<PartnerType> partnerTypes = partnerType.nextPartnerTypes();
476
        LOGGER.info("partnerType" + partnerTypes);
477
        model.addAttribute("partnerTypes", partnerTypes);
478
        model.addAttribute("fofoId", fofoId);
479
        return "partner-category";
480
    }
27797 tejbeer 481
 
33990 tejus.loha 482
    @PostMapping(value = "/updatePartnerCategory")
483
    public String updatePartnerCategory(HttpServletRequest request, @RequestParam(name = "fofoId") int fofoId,
35674 amit 484
                                        @RequestParam(name = "partnerType") PartnerType partnerType,
485
                                        @RequestParam(name = "durationMonths", defaultValue = "1") int durationMonths,
486
                                        Model model) throws Exception {
27797 tejbeer 487
 
35509 amit 488
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
489
 
35674 amit 490
        if (durationMonths < 1 || durationMonths > 3) {
491
            durationMonths = 1;
492
        }
493
 
494
        LocalDate startOfMonth = LocalDate.now().withDayOfMonth(1);
495
        for (int i = 0; i < durationMonths; i++) {
496
            PartnerTypeChange ptc = new PartnerTypeChange();
497
            ptc.setFofoId(fofoId);
498
            ptc.setPartnerType(partnerType);
499
            ptc.setCreateTimestamp(startOfMonth.plusMonths(i).atStartOfDay());
500
            ptc.setSource(PartnerTypeSource.MANUAL);
501
            ptc.setUpgradedBy(loginDetails.getEmailId());
502
            partnerTypeChangeRepository.persist(ptc);
503
        }
33990 tejus.loha 504
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
27797 tejbeer 505
 
33990 tejus.loha 506
        return "response";
507
    }
27797 tejbeer 508
 
33990 tejus.loha 509
    @GetMapping(value = "/partners")
510
    public String getStoreName(HttpServletRequest request, Model model, @RequestParam String query) throws Exception {
511
        model.addAttribute("response1",
512
                mvcResponseSender.createResponseString(retailerService.getFofoRetailers(false).values().stream()
513
                        .filter(x -> x.getDisplayName().toLowerCase().matches(".*?" + query.toLowerCase() + ".*?"))
514
                        .collect(Collectors.toList())));
515
        return "response";
516
    }
24349 amit.gupta 517
 
33990 tejus.loha 518
    @PostMapping(value = "/deactivateStore")
519
    public String deActivateStore(HttpServletRequest request,
520
                                  @RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
521
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
522
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
37765 amit 523
        StoreAccess.check(StoreAccess.DEACTIVATE, loginDetails.getEmailId(), "deactivate retailer");
35962 amit 524
        if (fofoStore.isClosed()) {
525
            throw new ProfitMandiBusinessException("Store Closed", "Store Already Closed",
526
                    "This store is permanently closed and cannot be modified");
527
        }
33990 tejus.loha 528
        fofoStore.setActive(false);
529
        LOGGER.info("inserted into InActiveFofoStore successfully");
530
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
531
        return "response";
532
    }
28825 tejbeer 533
 
35962 amit 534
    @PostMapping(value = "/closeStore")
535
    public String closeStore(HttpServletRequest request,
536
                             @RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId,
37765 amit 537
                             @RequestParam(name = "storeCode") String storeCode,
538
                             @RequestParam(name = "reason", required = false) StoreClosureReason reason,
539
                             @RequestParam(name = "remark", required = false) String remark,
540
                             @RequestParam(name = "approvalDocumentId", defaultValue = "0") int approvalDocumentId,
541
                             Model model) throws Exception {
35962 amit 542
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
37765 amit 543
        storeClosureService.closeStore(fofoId, storeCode, reason, remark, approvalDocumentId, loginDetails.getEmailId());
35962 amit 544
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
545
        return "response";
546
    }
547
 
33990 tejus.loha 548
    @PostMapping(value = "/activateStoreForever")
549
    public String activateStoreForever(HttpServletRequest request,
550
                                       @RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
551
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
552
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
37765 amit 553
        StoreAccess.check(StoreAccess.ACTIVATE, loginDetails.getEmailId(), "activate retailer");
35962 amit 554
        if (fofoStore.isClosed()) {
555
            throw new ProfitMandiBusinessException("Store Closed", "Store Permanently Closed",
556
                    "This store is permanently closed and cannot be reactivated");
557
        }
33990 tejus.loha 558
        fofoStore.setActive(true);
559
        LOGGER.info("inserted into ActiveFofoStore successfully");
560
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
561
        return "response";
562
    }
28825 tejbeer 563
 
33990 tejus.loha 564
    @PostMapping(value = "/activateStoreTemporary")
565
    public String activateStoreTemporary(HttpServletRequest request,
566
                                         @RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId,
567
                                         @RequestParam(name = "days", required = true) int days, Model model) throws Exception {
28825 tejbeer 568
 
33990 tejus.loha 569
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
570
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
37765 amit 571
        StoreAccess.check(StoreAccess.ACTIVATE, loginDetails.getEmailId(), "activate retailer");
28825 tejbeer 572
 
35962 amit 573
        if (fofoStore.isClosed()) {
574
            throw new ProfitMandiBusinessException("Store Closed", "Store Permanently Closed",
575
                    "This store is permanently closed and cannot be reactivated");
576
        }
577
 
33990 tejus.loha 578
        LocalDateTime currentDate = LocalDate.now().atStartOfDay();
28825 tejbeer 579
 
33990 tejus.loha 580
        LocalDateTime EndDate = currentDate.plusDays(days);
581
        fofoStore.setActiveTimeStamp(EndDate);
28825 tejbeer 582
 
33990 tejus.loha 583
        LOGGER.info("EndDate" + EndDate);
584
        LOGGER.info("getActiveTimeStamp" + fofoStore.getActiveTimeStamp());
28825 tejbeer 585
 
33990 tejus.loha 586
        if (currentDate.isBefore(fofoStore.getActiveTimeStamp())) {
587
            fofoStore.setActive(true);
588
            LOGGER.info("inserted into InActiveFofoStore successfully");
589
        }
28825 tejbeer 590
 
33990 tejus.loha 591
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
592
        return "response";
593
    }
25276 amit.gupta 594
 
33990 tejus.loha 595
    @GetMapping(value = "/getAllInactiveStores")
33247 ranu 596
    public String getInactiveStores(HttpServletRequest request, Model model) throws ProfitMandiBusinessException {
33990 tejus.loha 597
        List<FofoStore> inActiveFofoStores = fofoStoreRepository.selectInActiveStore();
30426 tejbeer 598
 
33990 tejus.loha 599
        LOGGER.info("inActiveFofoStores {}", inActiveFofoStores);
600
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
30426 tejbeer 601
 
33990 tejus.loha 602
        List<Integer> fofoIds = inActiveFofoStores.stream().map(x -> x.getId()).collect(Collectors.toList());
30431 tejbeer 603
 
33990 tejus.loha 604
        Map<Integer, CustomRetailer> customRetailers = fofoIds.stream().map(x -> customRetailerMap.get(x))
605
                .filter(x -> x != null).collect(Collectors.toList()).stream()
606
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
607
        LOGGER.info("customRetailers {}", customRetailers);
30426 tejbeer 608
 
33990 tejus.loha 609
        model.addAttribute("inActiveFofoStores", inActiveFofoStores);
610
        model.addAttribute("customRetailers", customRetailers);
611
        return "inactive-stores";
612
    }
25276 amit.gupta 613
 
33990 tejus.loha 614
    // Extend billing for 2 days
615
    @PostMapping(value = "/extendBilling")
616
    public String extendBilling(HttpServletRequest request,
617
                                @RequestParam(name = ProfitMandiConstants.FOFO_ID) int fofoId, Model model) throws Exception {
618
        FofoStore fofoStore = fofoStoreRepository.selectByRetailerId(fofoId);
619
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
37765 amit 620
        StoreAccess.check(StoreAccess.EXTEND_BILLING, loginDetails.getEmailId(), "extend billing");
621
        fofoStore.setGraceDate(LocalDate.now().plusDays(2));
622
        fofoStore.setGraceCount(fofoStore.getGraceCount() + 1);
623
        model.addAttribute("response1", mvcResponseSender.createResponseString(fofoStore.getGraceCount()));
33990 tejus.loha 624
        return "response";
25276 amit.gupta 625
 
33990 tejus.loha 626
    }
24124 govind 627
 
33990 tejus.loha 628
    @RequestMapping(value = "/getPromoterInfo", method = RequestMethod.GET)
32887 shampa 629
 
33990 tejus.loha 630
    public String getShowPromoterInfo(HttpServletRequest request,
631
                                      @RequestParam(name = "offset", defaultValue = "0") int offset,
632
                                      @RequestParam(name = "limit", defaultValue = "10") int limit,
633
                                      @RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
634
            throws Exception {
635
        //LOGGER.info("requested url : " + request.getRequestURL().toString());
636
        List<Promoter> promoterInfo = null;
637
        long size = 0;
24159 tejbeer 638
 
33990 tejus.loha 639
        List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
640
                .collect(Collectors.toList());
32887 shampa 641
 
33990 tejus.loha 642
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
32887 shampa 643
 
33990 tejus.loha 644
        Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
645
                .filter(x -> x != null).collect(Collectors.toList()).stream()
646
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
647
        String customRetailers = JSONObject.valueToString(customRetailersMap.values());
648
        Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
649
        brands.add("Airtel");
650
        brands.add("Vodafone");
651
        brands.add("Idea");
652
        LOGGER.info("brands" + brands);
653
        model.addAttribute("customRetailers", customRetailers);
654
        model.addAttribute("brands", brands);
32887 shampa 655
 
33990 tejus.loha 656
        if (fofoId != 0) {
657
            promoterInfo = promoterRepository.selectAllPromoterByFofoIdStatus(fofoId, offset, limit, true);
32887 shampa 658
 
33990 tejus.loha 659
            //size = promoterRepository.selectPromoterCount(fofoId);
660
            size = promoterInfo.size();
661
        } else {
662
            //rkb
663
            promoterInfo = promoterRepository.selectAllPromoterStatus(offset, limit, true);
32887 shampa 664
 
33990 tejus.loha 665
            //size = promoterRepository.selectAllCount();
666
            size = promoterInfo.size();
667
        }
668
        if (!promoterInfo.isEmpty()) {
669
            Set<Integer> partnerIds = new HashSet<>();
32887 shampa 670
 
33990 tejus.loha 671
            for (Promoter promoterdetail : promoterInfo) {
672
                partnerIds.add(promoterdetail.getRetailerId());
673
            }
674
            Map<Integer, CustomRetailer> partnersMap = null;
675
            if (!partnerIds.equals(null)) {
676
                LOGGER.info("partnerIds" + partnerIds);
32887 shampa 677
 
33990 tejus.loha 678
                partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
679
                        .collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
32887 shampa 680
 
33990 tejus.loha 681
            }
32887 shampa 682
 
33990 tejus.loha 683
            LOGGER.info("partnerIds" + partnersMap);
684
            model.addAttribute("promoterInfo", promoterInfo);
685
            model.addAttribute("partnersMap", partnersMap);
686
            model.addAttribute("start", offset + 1);
687
            model.addAttribute("size", size);
688
            model.addAttribute("url", "/getPaginatedPromoterInfo");
32887 shampa 689
 
33990 tejus.loha 690
            if (promoterInfo.size() < limit) {
691
                model.addAttribute("end", offset + promoterInfo.size());
692
            } else {
693
                model.addAttribute("end", offset + limit);
694
            }
695
        } else {
696
            model.addAttribute("promoterInfo", promoterInfo);
697
            model.addAttribute("size", size);
698
        }
699
        return "promoter-info";
32887 shampa 700
 
33990 tejus.loha 701
    }
32887 shampa 702
 
33990 tejus.loha 703
    @RequestMapping(value = "/getPromoterInactive", method = RequestMethod.GET)
32887 shampa 704
 
33990 tejus.loha 705
    public String getShowPromoterInactiveInfo(HttpServletRequest request,
706
                                              @RequestParam(name = "offset", defaultValue = "0") int offset,
707
                                              @RequestParam(name = "limit", defaultValue = "10") int limit,
708
                                              @RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
709
            throws Exception {
710
        //LOGGER.info("requested url : " + request.getRequestURL().toString());
711
        List<Promoter> promoterInfo = null;
712
        long size = 0;
32887 shampa 713
 
33990 tejus.loha 714
        List<Integer> fofoIds = fofoStoreRepository.selectAll().stream().map(x -> x.getId())
715
                .collect(Collectors.toList());
32887 shampa 716
 
33990 tejus.loha 717
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
27489 tejbeer 718
 
33990 tejus.loha 719
        Map<Integer, CustomRetailer> customRetailersMap = fofoIds.stream().map(x -> customRetailerMap.get(x))
720
                .filter(x -> x != null).collect(Collectors.toList()).stream()
721
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
722
        String customRetailers = JSONObject.valueToString(customRetailersMap.values());
723
        Set<String> brands = inventoryService.getAllTagListingBrands(ProfitMandiConstants.MOBILE_CATEGORY_ID);
724
        brands.add("Airtel");
725
        brands.add("Vodafone");
726
        brands.add("Idea");
727
        LOGGER.info("brands" + brands);
728
        model.addAttribute("customRetailers", customRetailers);
729
        model.addAttribute("brands", brands);
30426 tejbeer 730
 
33990 tejus.loha 731
        if (fofoId != 0) {
732
            promoterInfo = promoterRepository.selectAllPromoterByFofoIdStatus(fofoId, offset, limit, false);
30426 tejbeer 733
 
33990 tejus.loha 734
            //size = promoterRepository.selectPromoterCount(fofoId);
735
            size = promoterInfo.size();
24159 tejbeer 736
 
33990 tejus.loha 737
        } else {
738
            //rkb
739
            promoterInfo = promoterRepository.selectAllPromoterStatus(offset, limit, false);
24159 tejbeer 740
 
33990 tejus.loha 741
            //size = promoterRepository.selectAllCount();
742
            size = promoterInfo.size();
27489 tejbeer 743
 
33990 tejus.loha 744
        }
745
        if (!promoterInfo.isEmpty()) {
746
            Set<Integer> partnerIds = new HashSet<>();
27489 tejbeer 747
 
33990 tejus.loha 748
            for (Promoter promoterdetail : promoterInfo) {
749
                partnerIds.add(promoterdetail.getRetailerId());
750
            }
751
            Map<Integer, CustomRetailer> partnersMap = null;
752
            if (!partnerIds.equals(null)) {
753
                LOGGER.info("partnerIds" + partnerIds);
27489 tejbeer 754
 
33990 tejus.loha 755
                partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
756
                        .collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
24159 tejbeer 757
 
33990 tejus.loha 758
            }
30426 tejbeer 759
 
33990 tejus.loha 760
            LOGGER.info("partnerIds" + partnersMap);
761
            model.addAttribute("promoterInfo", promoterInfo);
762
            model.addAttribute("partnersMap", partnersMap);
763
            model.addAttribute("start", offset + 1);
764
            model.addAttribute("size", size);
765
            model.addAttribute("url", "/getPaginatedPromoterInactiveInfo");
30426 tejbeer 766
 
33990 tejus.loha 767
            if (promoterInfo.size() < limit) {
768
                model.addAttribute("end", offset + promoterInfo.size());
769
            } else {
770
                model.addAttribute("end", offset + limit);
771
            }
772
        } else {
773
            model.addAttribute("promoterInfo", promoterInfo);
774
            model.addAttribute("size", size);
775
        }
776
        return "promoter-inactive";
24349 amit.gupta 777
 
33990 tejus.loha 778
    }
24159 tejbeer 779
 
33990 tejus.loha 780
    @RequestMapping(value = "/getPaginatedPromoterInfo", method = RequestMethod.GET)
781
    public String getPaginatedPromoterInfo(HttpServletRequest request,
782
                                           @RequestParam(name = "offset", defaultValue = "0") int offset,
783
                                           @RequestParam(name = "limit", defaultValue = "10") int limit,
784
                                           @RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
785
            throws ProfitMandiBusinessException {
786
        LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
787
        List<Promoter> promoterInfo = null;
788
        if (fofoId != 0) {
789
            promoterInfo = promoterRepository.selectAllPromoterByFofoIdStatus(fofoId, offset, limit, true);
790
        } else {
791
            promoterInfo = promoterRepository.selectAllPromoterStatus(offset, limit, true);
792
        }
793
        LOGGER.info("promoterInfo" + promoterInfo);
794
        if (!promoterInfo.isEmpty()) {
795
            Set<Integer> partnerIds = new HashSet<>();
24159 tejbeer 796
 
33990 tejus.loha 797
            for (Promoter promoterdetail : promoterInfo) {
798
                partnerIds.add(promoterdetail.getRetailerId());
799
            }
800
            Map<Integer, CustomRetailer> partnersMap = null;
801
            if (!partnerIds.equals(null)) {
802
                LOGGER.info("partnerIds" + partnerIds);
24349 amit.gupta 803
 
33990 tejus.loha 804
                Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
32887 shampa 805
 
33990 tejus.loha 806
                partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
807
                        .collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
24159 tejbeer 808
 
33990 tejus.loha 809
            }
30426 tejbeer 810
 
33990 tejus.loha 811
            LOGGER.info("partnerIds" + partnersMap);
812
            model.addAttribute("promoterInfo", promoterInfo);
813
            model.addAttribute("partnersMap", partnersMap);
814
            model.addAttribute("url", "/getPaginatedPromoterInfo");
815
        } else {
816
            model.addAttribute("promoterInfo", promoterInfo);
30426 tejbeer 817
 
33990 tejus.loha 818
        }
30426 tejbeer 819
 
33990 tejus.loha 820
        return "promoter-info-paginated";
821
    }
24349 amit.gupta 822
 
33990 tejus.loha 823
    @RequestMapping(value = "/getPaginatedPromoterInactiveInfo", method = RequestMethod.GET)
824
    public String getPaginatedPromoterInactiveInfo(HttpServletRequest request,
825
                                                   @RequestParam(name = "offset", defaultValue = "0") int offset,
826
                                                   @RequestParam(name = "limit", defaultValue = "10") int limit,
827
                                                   @RequestParam(name = "fofoId", required = false, defaultValue = "0") int fofoId, Model model)
828
            throws ProfitMandiBusinessException {
829
        LOGGER.info("requested offset=[{}], limit = [{}]", offset, limit);
830
        List<Promoter> promoterInfo = null;
831
        if (fofoId != 0) {
832
            promoterInfo = promoterRepository.selectAllPromoterByFofoIdStatus(fofoId, offset, limit, false);
833
        } else {
834
            promoterInfo = promoterRepository.selectAllPromoterStatus(offset, limit, false);
835
        }
836
        LOGGER.info("promoterInfo" + promoterInfo);
837
        if (!promoterInfo.isEmpty()) {
838
            Set<Integer> partnerIds = new HashSet<>();
24159 tejbeer 839
 
33990 tejus.loha 840
            for (Promoter promoterdetail : promoterInfo) {
841
                partnerIds.add(promoterdetail.getRetailerId());
842
            }
843
            Map<Integer, CustomRetailer> partnersMap = null;
844
            if (!partnerIds.equals(null)) {
845
                LOGGER.info("partnerIds" + partnerIds);
24159 tejbeer 846
 
33990 tejus.loha 847
                Map<Integer, CustomRetailer> customRetailerMap = retailerService.getAllFofoRetailers();
24159 tejbeer 848
 
33990 tejus.loha 849
                partnersMap = partnerIds.stream().map(x -> customRetailerMap.get(x)).filter(x -> x != null)
850
                        .collect(Collectors.toList()).stream().collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
32887 shampa 851
 
33990 tejus.loha 852
            }
32887 shampa 853
 
33990 tejus.loha 854
            LOGGER.info("partnerIds" + partnersMap);
855
            model.addAttribute("promoterInfo", promoterInfo);
856
            model.addAttribute("partnersMap", partnersMap);
857
            model.addAttribute("url", "/getPaginatedPromoterInactiveInfo");
858
        } else {
859
            model.addAttribute("promoterInfo", promoterInfo);
32887 shampa 860
 
33990 tejus.loha 861
        }
32887 shampa 862
 
33990 tejus.loha 863
        return "promoter-inactive-info-paginated";
864
    }
32887 shampa 865
 
33990 tejus.loha 866
    @RequestMapping(value = "/createPromoter", method = RequestMethod.POST)
867
    public String createPromoter(HttpServletRequest request, @RequestBody PromoterDetailModel promoterdetailModel,
868
                                 Model model) throws Exception {
869
        LOGGER.info("requested url : " + request.getRequestURL().toString());
870
        LOGGER.info("requested url : " + promoterdetailModel);
871
        Promoter promoter = promoterRepository.selectById(promoterdetailModel.getId());
872
        if (promoter == null) {
873
            promoter = new Promoter();
874
            promoter.setBrand(promoterdetailModel.getBrand());
875
            promoter.setRetailerId(promoterdetailModel.getRetailerId());
876
            promoter.setCreatedTimestamp(LocalDateTime.now());
877
            promoter.setEmail(promoterdetailModel.getEmail());
878
            promoter.setName(promoterdetailModel.getName());
879
            promoter.setMobile(promoterdetailModel.getMobile());
880
            promoter.setSdPortalAccess(promoterdetailModel.isSdPortalAccess());
881
            promoter.setStatus(promoterdetailModel.isStatus());
882
            promoterRepository.persist(promoter);
32887 shampa 883
 
33990 tejus.loha 884
            List<Promoter> promoters = promoterRepository.selectAllByRetailer(promoterdetailModel.getRetailerId());
885
            if (!promoters.isEmpty()) {
886
                FofoStore fs = fofoStoreRepository.selectByRetailerId(promoterdetailModel.getRetailerId());
887
                PartnerOnBoardingPanel pobp = partnerOnBoardingPanelRepository.selectByCode(fs.getCode());
888
                if (pobp != null) {
889
                    storeTimelineTatService.promoterComplete(pobp.getId());
890
                }
891
            }
32887 shampa 892
 
33990 tejus.loha 893
        } else {
894
            promoter.setEmail(promoterdetailModel.getEmail());
895
            promoter.setName(promoterdetailModel.getName());
896
            promoter.setMobile(promoterdetailModel.getMobile());
897
            promoter.setSdPortalAccess(promoterdetailModel.isSdPortalAccess());
898
            promoter.setStatus(promoterdetailModel.isStatus());
899
        }
900
        LOGGER.info("sdport" + promoterdetailModel.isStatus());
26131 tejbeer 901
 
33990 tejus.loha 902
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
28908 tejbeer 903
 
33990 tejus.loha 904
        return "response";
24159 tejbeer 905
 
33990 tejus.loha 906
    }
24159 tejbeer 907
 
33990 tejus.loha 908
    @RequestMapping(value = "/setPromoterInActive", method = RequestMethod.POST)
909
    public String PromoterInActive(HttpServletRequest request, @RequestParam(name = "id", required = true, defaultValue = "0") int id, Model model) throws Exception {
24159 tejbeer 910
 
33990 tejus.loha 911
        Promoter promoter = promoterRepository.selectById(id);
24159 tejbeer 912
 
33990 tejus.loha 913
        promoter.setStatus(false);
32887 shampa 914
 
33990 tejus.loha 915
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
32887 shampa 916
 
33990 tejus.loha 917
        return "response";
918
    }
32887 shampa 919
 
33990 tejus.loha 920
    @RequestMapping(value = "/removePromoterfromPartnerStore", method = RequestMethod.POST)
921
    public String removePromoterfromPartnerStore(HttpServletRequest request,
922
                                                 @RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
32887 shampa 923
 
33990 tejus.loha 924
        Promoter promoter = promoterRepository.selectById(id);
925
        promoter.setStatus(false);
926
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
32887 shampa 927
 
33990 tejus.loha 928
        return "response";
929
    }
24159 tejbeer 930
 
33990 tejus.loha 931
    @RequestMapping(value = "/activePromoterfromPartnerStore", method = RequestMethod.POST)
932
    public String activePromoterfromPartnerStore(HttpServletRequest request,
933
                                                 @RequestParam(name = "id", defaultValue = "0") int id, Model model) throws Exception {
24159 tejbeer 934
 
33990 tejus.loha 935
        Promoter promoter = promoterRepository.selectById(id);
936
        promoter.setStatus(true);
937
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
32887 shampa 938
 
33990 tejus.loha 939
        return "response";
940
    }
24159 tejbeer 941
 
33990 tejus.loha 942
    @RequestMapping(value = "/addLocation", method = RequestMethod.POST)
943
    public String addLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel, Model model)
944
            throws Exception {
24159 tejbeer 945
 
33990 tejus.loha 946
        Location location = new Location();
947
        location.setName(addLocationModel.getName());
948
        location.setLine1(addLocationModel.getLine1());
949
        location.setLine2(addLocationModel.getLine2());
950
        location.setCity(addLocationModel.getCity());
951
        location.setState(addLocationModel.getState());
952
        location.setPin(addLocationModel.getPin());
24159 tejbeer 953
 
33990 tejus.loha 954
        LOGGER.info("PostLocation" + location);
955
        locationRepository.persist(location);
24159 tejbeer 956
 
33990 tejus.loha 957
        User user = userRepository.selectById(addLocationModel.getUserId());
958
        user.setLocation(location.getId());
959
        userRepository.persist(user);
24159 tejbeer 960
 
33990 tejus.loha 961
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
962
        return "response";
24159 tejbeer 963
 
33990 tejus.loha 964
    }
24159 tejbeer 965
 
33990 tejus.loha 966
    @RequestMapping(value = "/updateLocation", method = RequestMethod.POST)
967
    public String updateLocation(HttpServletRequest request, @RequestBody AddLocationModel addLocationModel,
968
                                 Model model) throws Exception {
24159 tejbeer 969
 
33990 tejus.loha 970
        Location userlocation = locationRepository.selectById(addLocationModel.getUserId());
24159 tejbeer 971
 
33990 tejus.loha 972
        userlocation.setName(addLocationModel.getName());
973
        userlocation.setCity(addLocationModel.getCity());
974
        userlocation.setLine1(addLocationModel.getLine1());
975
        userlocation.setLine2(addLocationModel.getLine2());
976
        userlocation.setPin(addLocationModel.getPin());
977
        userlocation.setState(addLocationModel.getState());
24159 tejbeer 978
 
33990 tejus.loha 979
        locationRepository.persist(userlocation);
24159 tejbeer 980
 
33990 tejus.loha 981
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
982
        return "response";
24159 tejbeer 983
 
33990 tejus.loha 984
    }
24159 tejbeer 985
 
33990 tejus.loha 986
    @RequestMapping(value = "/getPartnerReadonlyInfo")
987
    public String getPartnerReadonlyInfo(HttpServletRequest request, Model model) throws Exception {
24159 tejbeer 988
 
33990 tejus.loha 989
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
990
        AuthUser authUser = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
27231 tejbeer 991
 
33990 tejus.loha 992
        Map<Integer, List<Integer>> pp = csService.getAuthUserIdPartnerIdMapping();
27231 tejbeer 993
 
37780 amit 994
        // Copy: the mapping is a shared cached object and must not carry demo partners.
995
        Set<Integer> fofoIds = new LinkedHashSet<>();
996
        if (pp.get(authUser.getId()) != null) {
997
            fofoIds.addAll(pp.get(authUser.getId()));
998
        }
999
        Set<Integer> demoFofoIds = demoPartnerAccessService.getDemoFofoIds(authUser.getId());
1000
        demoFofoIds.removeAll(fofoIds);
1001
        fofoIds.addAll(demoFofoIds);
27231 tejbeer 1002
 
37780 amit 1003
        Map<Integer, CustomRetailer> customRetailersMap = fofoIds.isEmpty() ? new HashMap<>()
1004
                : retailerService.getFofoRetailers(new ArrayList<>(fofoIds));
27231 tejbeer 1005
 
33990 tejus.loha 1006
        model.addAttribute("customRetailersMap", customRetailersMap);
37780 amit 1007
        model.addAttribute("demoFofoIds", demoFofoIds);
27231 tejbeer 1008
 
33990 tejus.loha 1009
        return "partner-readonly-info";
27243 tejbeer 1010
 
33990 tejus.loha 1011
    }
27231 tejbeer 1012
 
33990 tejus.loha 1013
    @RequestMapping(value = "/getBlockBrandMapping")
1014
    public String getBlockBrandMapping(HttpServletRequest request, Model model) throws Exception {
27231 tejbeer 1015
 
33990 tejus.loha 1016
        int fofoId = Utils.SYSTEM_PARTNER_ID;
35236 amit 1017
        Set<String> brands = brandsService.getBrands(fofoId, null, 3).stream().map(x -> x.getName()).collect(Collectors.toSet());
28071 tejbeer 1018
 
33990 tejus.loha 1019
        LOGGER.info("brands" + brands);
1020
        model.addAttribute("brands", brands);
28071 tejbeer 1021
 
33990 tejus.loha 1022
        return "block-brand-mapping";
28071 tejbeer 1023
 
33990 tejus.loha 1024
    }
28071 tejbeer 1025
 
33990 tejus.loha 1026
    @RequestMapping(value = "/getBlockBrand")
1027
    public String getBlockBrand(HttpServletRequest request,
1028
                                @RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
1029
            throws Exception {
28071 tejbeer 1030
 
33990 tejus.loha 1031
        List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
28071 tejbeer 1032
 
33990 tejus.loha 1033
        List<Integer> blockBrandPartners = retailerBlockBrands.stream().map(x -> x.getFofoId())
1034
                .collect(Collectors.toList());
1035
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28071 tejbeer 1036
 
33990 tejus.loha 1037
        LOGGER.info("retailerBlockBrands" + retailerBlockBrands);
1038
        model.addAttribute("blockBrandPartners", blockBrandPartners);
1039
        model.addAttribute("retailerBlockBrands", retailerBlockBrands);
1040
        model.addAttribute("customRetailers", customRetailers);
28272 tejbeer 1041
 
33990 tejus.loha 1042
        return "retailer-block-brand";
28071 tejbeer 1043
 
33990 tejus.loha 1044
    }
28071 tejbeer 1045
 
33990 tejus.loha 1046
    @RequestMapping(value = "/getRetailerBlockBrandMappping", method = RequestMethod.POST)
1047
    public String getBlockBrandMappping(HttpServletRequest request,
1048
                                        @RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
1049
                                        @RequestParam(name = "fofoIds", required = true, defaultValue = "0") List<Integer> fofoIds, Model model)
1050
            throws Exception {
37101 amit 1051
        if (brand == null || brand.trim().isEmpty()
1052
                || "null".equalsIgnoreCase(brand.trim()) || "0".equals(brand.trim())) {
1053
            model.addAttribute("response1", mvcResponseSender.createResponseString(false));
1054
            return "response";
1055
        }
33990 tejus.loha 1056
        List<RetailerBlockBrands> retailerBlockBrands = retailerBlockBrandsRepository.selectAllByBrands(brand);
1057
        if (!retailerBlockBrands.isEmpty()) {
1058
            retailerBlockBrandsRepository.deleteAllbyBrands(brand);
1059
        }
28071 tejbeer 1060
 
33990 tejus.loha 1061
        for (int id : fofoIds) {
1062
            RetailerBlockBrands retailerBlockBrand = new RetailerBlockBrands();
1063
            retailerBlockBrand.setFofoId(id);
1064
            retailerBlockBrand.setBlockBrands(brand);
1065
            retailerBlockBrandsRepository.persist(retailerBlockBrand);
28071 tejbeer 1066
 
33990 tejus.loha 1067
        }
1068
        model.addAttribute("response1", mvcResponseSender.createResponseString(true));
28071 tejbeer 1069
 
33990 tejus.loha 1070
        return "response";
1071
    }
28071 tejbeer 1072
 
33990 tejus.loha 1073
    @RequestMapping(value = "/getBrandslimit", method = RequestMethod.GET)
1074
    public String getBrandslimit(HttpServletRequest request, Model model) throws Exception {
28071 tejbeer 1075
 
33990 tejus.loha 1076
        int fofoId = Utils.SYSTEM_PARTNER_ID;
32731 ranu 1077
 
33990 tejus.loha 1078
        List<String> brands = brandsService.getBrandsToDisplay(3).stream().map(x -> x.getName()).collect(Collectors.toList());
1079
        model.addAttribute("brands", brands);
28272 tejbeer 1080
 
33990 tejus.loha 1081
        return "brands-limit";
28272 tejbeer 1082
 
33990 tejus.loha 1083
    }
28272 tejbeer 1084
 
33990 tejus.loha 1085
    @RequestMapping(value = "/setUpdateLimit", method = RequestMethod.POST)
1086
    public String getUpdateLimit(HttpServletRequest request,
1087
                                 @RequestParam(name = "brand", required = true, defaultValue = "0") String brand,
1088
                                 @RequestParam(name = "fofoId", required = true, defaultValue = "0") int fofoId,
1089
                                 @RequestParam(name = "limit", required = true, defaultValue = "0") float limit,
1090
                                 @RequestParam(name = "minStockLimit", required = true, defaultValue = "0") float minStockLimit,
1091
                                 @RequestParam(name = "preLimit", required = true, defaultValue = "0") float preLimit,
1092
                                 @RequestParam(name = "preStockLimit", required = true, defaultValue = "0") float preStockLimit, Model model)
1093
            throws Exception {
28272 tejbeer 1094
 
33990 tejus.loha 1095
        CustomRetailer cr = retailerService.getFofoRetailer(fofoId);
28272 tejbeer 1096
 
33990 tejus.loha 1097
        Map.Entry<Integer, CustomRetailer> customRetailers = new AbstractMap.SimpleEntry(cr.getPartnerId(), cr);
28272 tejbeer 1098
 
33990 tejus.loha 1099
        // Map<Integer, CustomRetailer> customRetailers =
1100
        // retailerService.getFofoRetailers(true);
28277 tejbeer 1101
 
33990 tejus.loha 1102
        RetailerBrandsLimit retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
28277 tejbeer 1103
 
33990 tejus.loha 1104
        if (retailerBrands == null) {
1105
            retailerBrands = new RetailerBrandsLimit();
1106
            retailerBrands.setMinStockLimit(minStockLimit);
1107
            retailerBrands.setBrandLimit(limit);
1108
            retailerBrands.setIsUpdate(1);
1109
            retailerBrands.setCreatedTimestamp(LocalDateTime.now());
1110
            retailerBrands.setPartnerId(fofoId);
1111
            retailerBrands.setBrandName(brand);
1112
            retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
1113
            retailerBrandsLimitRepository.persist(retailerBrands);
1114
        } else {
1115
            retailerBrands.setMinStockLimit(minStockLimit);
1116
            retailerBrands.setBrandLimit(limit);
1117
            retailerBrands.setIsUpdate(1);
1118
            retailerBrands.setUpdatedTimestamp(LocalDateTime.now());
1119
            retailerBrandsLimitRepository.persist(retailerBrands);
30028 manish 1120
 
33990 tejus.loha 1121
        }
1122
        retailerBrands = retailerBrandsLimitRepository.selectLimitByBrandAndFofoId(fofoId, brand);
28277 tejbeer 1123
 
33990 tejus.loha 1124
        Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = new HashMap<>();
28272 tejbeer 1125
 
33990 tejus.loha 1126
        retailerBrandsLimitMap.put(retailerBrands.getPartnerId(), retailerBrands);
28272 tejbeer 1127
 
33990 tejus.loha 1128
        BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
28272 tejbeer 1129
 
33990 tejus.loha 1130
        model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
1131
        model.addAttribute("brandLimit", brandLimit);
1132
        model.addAttribute("customRetailers", customRetailers);
28272 tejbeer 1133
 
33990 tejus.loha 1134
        model.addAttribute("brand", brand);
1135
        return "brands-limit-row-mapping";
28272 tejbeer 1136
 
33990 tejus.loha 1137
    }
28277 tejbeer 1138
 
33990 tejus.loha 1139
    @RequestMapping(value = "/getRetailerBrandslimitMapping", method = RequestMethod.GET)
1140
    public String getRetailerBrandslimit(HttpServletRequest request,
1141
                                         @RequestParam(name = "brand", required = true, defaultValue = "0") String brand, Model model)
1142
            throws Exception {
28272 tejbeer 1143
 
33990 tejus.loha 1144
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
1145
        List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrand(brand);
1146
        Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
1147
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
28272 tejbeer 1148
 
33990 tejus.loha 1149
        model.addAttribute("customRetailers", customRetailers);
1150
        model.addAttribute("brand", brand);
1151
        model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
28272 tejbeer 1152
 
33990 tejus.loha 1153
        BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brand);
28272 tejbeer 1154
 
33990 tejus.loha 1155
        model.addAttribute("brandLimit", brandLimit);
28272 tejbeer 1156
 
33990 tejus.loha 1157
        return "brands-limit-mapping";
28272 tejbeer 1158
 
33990 tejus.loha 1159
    }
28272 tejbeer 1160
 
33990 tejus.loha 1161
    @RequestMapping(value = "/setBrandWiseLimit", method = RequestMethod.POST)
1162
    public String brandwiseLimit(HttpServletRequest request,
1163
                                 @RequestParam(name = "brands", required = true, defaultValue = "") String brands,
1164
                                 @RequestParam(name = "limit", required = true, defaultValue = "") float limit, Model model)
1165
            throws Exception {
28272 tejbeer 1166
 
33990 tejus.loha 1167
        LOGGER.info("limit" + limit);
30426 tejbeer 1168
 
33990 tejus.loha 1169
        BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brands);
28272 tejbeer 1170
 
33990 tejus.loha 1171
        List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrand(brands);
28272 tejbeer 1172
 
33990 tejus.loha 1173
        Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
1174
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
28272 tejbeer 1175
 
33990 tejus.loha 1176
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
28272 tejbeer 1177
 
33990 tejus.loha 1178
        if (brandLimit == null) {
28272 tejbeer 1179
 
33990 tejus.loha 1180
            brandLimit = new BrandLimit();
1181
            brandLimit.setBrandLimit(limit);
1182
            brandLimit.setBrandName(brands);
1183
            brandLimit.setCreatedTimestamp(LocalDateTime.now());
1184
            brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1185
            brandLimitRepository.persist(brandLimit);
28272 tejbeer 1186
 
33990 tejus.loha 1187
        } else {
1188
            brandLimit.setBrandLimit(limit);
28272 tejbeer 1189
 
33990 tejus.loha 1190
            brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1191
            brandLimitRepository.persist(brandLimit);
28272 tejbeer 1192
 
33990 tejus.loha 1193
        }
1194
        brandLimit = brandLimitRepository.setLimitByBrands(brands);
30028 manish 1195
 
33990 tejus.loha 1196
        LOGGER.info("brandLimit" + brandLimit);
1197
        model.addAttribute("brand", brands);
1198
        model.addAttribute("brandLimit", brandLimit);
1199
        model.addAttribute("customRetailers", customRetailers);
1200
        model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
1201
        return "brands-limit-mapping";
28272 tejbeer 1202
 
33990 tejus.loha 1203
    }
28272 tejbeer 1204
 
33990 tejus.loha 1205
    @RequestMapping(value = "/setBrandWiseStockLimit", method = RequestMethod.POST)
1206
    public String setBrandWiseStockLimit(HttpServletRequest request,
1207
                                         @RequestParam(name = "brands", required = true, defaultValue = "") String brands,
1208
                                         @RequestParam(name = "stockLimit", required = true, defaultValue = "") float stockLimit, Model model)
1209
            throws Exception {
28272 tejbeer 1210
 
33990 tejus.loha 1211
        LOGGER.info("limit" + stockLimit);
28272 tejbeer 1212
 
33990 tejus.loha 1213
        BrandLimit brandLimit = brandLimitRepository.setLimitByBrands(brands);
28825 tejbeer 1214
 
33990 tejus.loha 1215
        List<RetailerBrandsLimit> retailerBrandsLimit = retailerBrandsLimitRepository.setAllLimitByBrand(brands);
30028 manish 1216
 
33990 tejus.loha 1217
        Map<Integer, RetailerBrandsLimit> retailerBrandsLimitMap = retailerBrandsLimit.stream()
1218
                .collect(Collectors.toMap(x -> x.getPartnerId(), x -> x));
30028 manish 1219
 
33990 tejus.loha 1220
        Map<Integer, CustomRetailer> customRetailers = retailerService.getFofoRetailers(true);
30028 manish 1221
 
33990 tejus.loha 1222
        if (brandLimit == null) {
30028 manish 1223
 
33990 tejus.loha 1224
            brandLimit = new BrandLimit();
1225
            brandLimit.setBrandLimit(0);
1226
            brandLimit.setBrandName(brands);
1227
            brandLimit.setStockLimit(stockLimit);
1228
            brandLimit.setCreatedTimestamp(LocalDateTime.now());
1229
            brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1230
            brandLimitRepository.persist(brandLimit);
30028 manish 1231
 
33990 tejus.loha 1232
        } else {
1233
            brandLimit.setStockLimit(stockLimit);
30028 manish 1234
 
33990 tejus.loha 1235
            brandLimit.setUpdatedTimestamp(LocalDateTime.now());
1236
            brandLimitRepository.persist(brandLimit);
30028 manish 1237
 
33990 tejus.loha 1238
        }
1239
        brandLimit = brandLimitRepository.setLimitByBrands(brands);
30028 manish 1240
 
33990 tejus.loha 1241
        model.addAttribute("brand", brands);
1242
        model.addAttribute("brandLimit", brandLimit);
1243
        model.addAttribute("customRetailers", customRetailers);
1244
        model.addAttribute("retailerBrandsLimitMap", retailerBrandsLimitMap);
1245
        return "brands-limit-mapping";
30028 manish 1246
 
33990 tejus.loha 1247
    }
30028 manish 1248
 
33990 tejus.loha 1249
    @RequestMapping(value = "/setPartnerPincode", method = RequestMethod.POST)
1250
    public String setPartnerPincode(HttpServletRequest request,
1251
                                    @RequestParam(name = "pincode", required = true, defaultValue = "") String pincode,
1252
                                    @RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
1253
            throws Exception {
30028 manish 1254
 
33990 tejus.loha 1255
        if (!pincode.equals("")) {
1256
            PincodePartner pinPartner = new PincodePartner();
1257
            pinPartner.setFofoId(fofoId);
1258
            pinPartner.setPincode(pincode);
1259
            pincodePartnerRepository.perist(pinPartner);
1260
        }
30028 manish 1261
 
33990 tejus.loha 1262
        List<PincodePartner> partnerPincodeList = pincodePartnerRepository.selectByPartnerId(fofoId);
30028 manish 1263
 
33990 tejus.loha 1264
        LOGGER.info("partnerPincodeList" + partnerPincodeList);
30028 manish 1265
 
33990 tejus.loha 1266
        model.addAttribute("partnerPincodeList", partnerPincodeList);
1267
        return "pincode-partner-index";
28272 tejbeer 1268
 
33990 tejus.loha 1269
    }
28381 tejbeer 1270
 
33990 tejus.loha 1271
    @RequestMapping(value = "/removePartnerPincode", method = RequestMethod.POST)
1272
    public String removePartnerPincode(HttpServletRequest request, @RequestParam int id,
1273
                                       @RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
1274
            throws Exception {
28825 tejbeer 1275
 
33990 tejus.loha 1276
        pincodePartnerRepository.delete(id);
28825 tejbeer 1277
 
33990 tejus.loha 1278
        List<PincodePartner> partnerPincodeList = pincodePartnerRepository.selectByPartnerId(fofoId);
28381 tejbeer 1279
 
33990 tejus.loha 1280
        LOGGER.info("partnerPincodeList" + partnerPincodeList);
28825 tejbeer 1281
 
33990 tejus.loha 1282
        model.addAttribute("partnerPincodeList", partnerPincodeList);
28381 tejbeer 1283
 
33990 tejus.loha 1284
        return "pincode-partner-index";
28381 tejbeer 1285
 
33990 tejus.loha 1286
    }
28825 tejbeer 1287
 
33990 tejus.loha 1288
    @RequestMapping(value = "/removeSearchPincode", method = RequestMethod.POST)
1289
    public String removeSearchPincode(HttpServletRequest request, @RequestParam int id,
1290
                                      @RequestParam(name = "pin", required = true, defaultValue = "") String pin,
1291
                                      @RequestParam(name = "fofoId", required = true, defaultValue = "") int fofoId, Model model)
1292
            throws Exception {
28825 tejbeer 1293
 
33990 tejus.loha 1294
        pincodePartnerRepository.delete(id);
28825 tejbeer 1295
 
33990 tejus.loha 1296
        List<PincodePartner> partnerPincodeList = pincodePartnerRepository.selectPartnersByPincode(pin);
28381 tejbeer 1297
 
33990 tejus.loha 1298
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
28825 tejbeer 1299
 
33990 tejus.loha 1300
        model.addAttribute("customRetailerMap", customRetailerMap);
28381 tejbeer 1301
 
33990 tejus.loha 1302
        model.addAttribute("partnerPincodeList", partnerPincodeList);
28381 tejbeer 1303
 
33990 tejus.loha 1304
        return "search-pincode-partner";
28381 tejbeer 1305
 
33990 tejus.loha 1306
    }
28825 tejbeer 1307
 
33990 tejus.loha 1308
    @RequestMapping(value = "/searchPincodePartner", method = RequestMethod.GET)
1309
    public String searchPincodePartner(HttpServletRequest request,
1310
                                       @RequestParam(name = "pincode", required = true, defaultValue = "") String pincode, Model model)
1311
            throws Exception {
28825 tejbeer 1312
 
33990 tejus.loha 1313
        List<PincodePartner> partnerPincodeList = pincodePartnerRepository.selectPartnersByPincode(pincode);
28825 tejbeer 1314
 
33990 tejus.loha 1315
        Map<Integer, CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(true);
28381 tejbeer 1316
 
33990 tejus.loha 1317
        model.addAttribute("customRetailerMap", customRetailerMap);
28825 tejbeer 1318
 
33990 tejus.loha 1319
        model.addAttribute("partnerPincodeList", partnerPincodeList);
28381 tejbeer 1320
 
33990 tejus.loha 1321
        return "search-pincode-partner";
28825 tejbeer 1322
 
33990 tejus.loha 1323
    }
28381 tejbeer 1324
 
33990 tejus.loha 1325
    @RequestMapping(value = "/showPartnerPincode", method = RequestMethod.GET)
1326
    public String showPartnerPincode(HttpServletRequest request,
1327
                                     @RequestParam(name = "partnerId", required = true, defaultValue = "") int partnerId, Model model)
1328
            throws Exception {
28825 tejbeer 1329
 
33990 tejus.loha 1330
        List<PincodePartner> partnerPincodeList = pincodePartnerRepository.selectByPartnerId(partnerId);
28825 tejbeer 1331
 
33990 tejus.loha 1332
        model.addAttribute("partnerPincodeList", partnerPincodeList);
28825 tejbeer 1333
 
33990 tejus.loha 1334
        return "pincode-partner-index";
28825 tejbeer 1335
 
33990 tejus.loha 1336
    }
28381 tejbeer 1337
 
33990 tejus.loha 1338
    @RequestMapping(value = "/getAllPartnerPincode", method = RequestMethod.GET)
1339
    public String getAllPartnerPincode(HttpServletRequest request, Model model) throws Exception {
1340
        return "add-partner-pincode";
1341
    }
28825 tejbeer 1342
 
33990 tejus.loha 1343
    @RequestMapping(value = "/alternateRetailerContacts", method = RequestMethod.GET)
1344
    public String alternateRetailerContacts(HttpServletRequest request, Model model) throws Exception {
1345
        LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
1346
        boolean isAdmin = roleManager.isAdmin(loginDetails.getRoleIds());
28825 tejbeer 1347
 
33990 tejus.loha 1348
        model.addAttribute("isAdmin", isAdmin);
35648 ranu 1349
        model.addAttribute("brands", brandsRepository.selectAll());
33990 tejus.loha 1350
        return "retailer-contacts";
1351
    }
28825 tejbeer 1352
 
33990 tejus.loha 1353
    @RequestMapping(value = "/retailer-contact-list", method = RequestMethod.GET)
1354
    public String getRetailerContactList(HttpServletRequest request, Model model, @RequestParam(defaultValue = "0") int fofoId)
1355
            throws Exception {
28825 tejbeer 1356
 
33990 tejus.loha 1357
        List<RetailerContact> retailerContacts = retailerContactRepository.selectAllByRetailerId(fofoId);
32629 amit.gupta 1358
 
33990 tejus.loha 1359
        model.addAttribute("retailerContacts", retailerContacts);
35648 ranu 1360
        model.addAttribute("brands", brandsRepository.selectAll());
32667 raveendra. 1361
 
33990 tejus.loha 1362
        return "retailer-contact-list";
33814 ranu 1363
 
33990 tejus.loha 1364
    }
33814 ranu 1365
 
33990 tejus.loha 1366
    @RequestMapping(value = "/add-retailer-contact-list", method = RequestMethod.GET)
1367
    public String updateRetailerContactList(HttpServletRequest request, Model model,
1368
                                            @RequestParam(defaultValue = "0") int fofoId,
1369
                                            @RequestParam String contactName,
35648 ranu 1370
                                            @RequestParam String contactNumber,
1371
                                            @RequestParam String brandName,
1372
                                            @RequestParam String contactType) throws Exception {
33990 tejus.loha 1373
        RetailerContact retailerContact = new RetailerContact();
1374
        retailerContact.setFofoId(fofoId);
1375
        retailerContact.setName(contactName);
1376
        retailerContact.setMobile(contactNumber);
35648 ranu 1377
        retailerContact.setBrandName(brandName);
1378
        retailerContact.setContactType(contactType);
33990 tejus.loha 1379
        retailerContact.setActive(true);
1380
        retailerContact.setCreatedAt(LocalDateTime.now());
37001 ranu 1381
        try {
1382
            retailerContactRepository.persist(retailerContact);
1383
        } catch (org.springframework.dao.DataIntegrityViolationException dup) {
1384
            // uk_retailer_contact_fofo_mobile — same number already exists for this partner.
1385
            throw new ProfitMandiBusinessException("RetailerContact", contactNumber,
1386
                    "This number is already registered for this partner");
1387
        }
33814 ranu 1388
 
33990 tejus.loha 1389
        List<RetailerContact> retailerContacts = retailerContactRepository.selectAllByRetailerId(fofoId);
33814 ranu 1390
 
33990 tejus.loha 1391
        model.addAttribute("retailerContacts", retailerContacts);
35648 ranu 1392
        model.addAttribute("brands", brandsRepository.selectAll());
33814 ranu 1393
 
33990 tejus.loha 1394
        return "retailer-contact-list";
33814 ranu 1395
 
33990 tejus.loha 1396
    }
33814 ranu 1397
 
33990 tejus.loha 1398
    @RequestMapping(value = "/update-contact-status", method = RequestMethod.GET)
1399
    public String updateRetailerContactStatus(HttpServletRequest request, Model model,
1400
                                              @RequestParam(defaultValue = "0") int fofoId,
1401
                                              @RequestParam(defaultValue = "0") int contactId,
1402
                                              @RequestParam boolean active) throws Exception {
33814 ranu 1403
 
33990 tejus.loha 1404
        RetailerContact retailerContact = retailerContactRepository.selectById(contactId);
1405
        retailerContact.setActive(active);
33814 ranu 1406
 
33990 tejus.loha 1407
        List<RetailerContact> retailerContacts = retailerContactRepository.selectAllByRetailerId(fofoId);
33814 ranu 1408
 
33990 tejus.loha 1409
        model.addAttribute("retailerContacts", retailerContacts);
33814 ranu 1410
 
33990 tejus.loha 1411
        return "retailer-contact-list";
33814 ranu 1412
 
33990 tejus.loha 1413
    }
33814 ranu 1414
 
1415
 
28272 tejbeer 1416
}