Subversion Repositories SmartDukaan

Rev

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