Subversion Repositories SmartDukaan

Rev

Rev 30461 | Rev 30530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 30461 Rev 30487
Line 1... Line 1...
1
package com.spice.profitmandi.web.controller;
1
package com.spice.profitmandi.web.controller;
2
 
2
 
-
 
3
import java.io.ByteArrayInputStream;
-
 
4
import java.io.IOException;
-
 
5
import java.io.InputStream;
3
import java.time.LocalDate;
6
import java.time.LocalDate;
4
import java.time.LocalDateTime;
7
import java.time.LocalDateTime;
5
import java.time.format.DateTimeFormatter;
8
import java.time.format.DateTimeFormatter;
6
import java.util.ArrayList;
9
import java.util.ArrayList;
7
import java.util.Arrays;
10
import java.util.Arrays;
Line 12... Line 15...
12
import java.util.Map.Entry;
15
import java.util.Map.Entry;
13
import java.util.Set;
16
import java.util.Set;
14
import java.util.stream.Collectors;
17
import java.util.stream.Collectors;
15
 
18
 
16
import javax.servlet.http.HttpServletRequest;
19
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletResponse;
-
 
18
 
20
 
19
import org.apache.commons.csv.CSVRecord;
21
import org.apache.commons.csv.CSVRecord;
20
import org.apache.logging.log4j.LogManager;
22
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.Logger;
23
import org.apache.logging.log4j.Logger;
22
import org.springframework.beans.factory.annotation.Autowired;
24
import org.springframework.beans.factory.annotation.Autowired;
-
 
25
import org.springframework.core.io.InputStreamResource;
23
import org.springframework.format.annotation.DateTimeFormat;
26
import org.springframework.format.annotation.DateTimeFormat;
-
 
27
import org.springframework.http.HttpHeaders;
-
 
28
import org.springframework.http.HttpStatus;
24
import org.springframework.http.MediaType;
29
import org.springframework.http.MediaType;
25
import org.springframework.http.ResponseEntity;
30
import org.springframework.http.ResponseEntity;
26
import org.springframework.stereotype.Controller;
31
import org.springframework.stereotype.Controller;
27
import org.springframework.transaction.annotation.Transactional;
32
import org.springframework.transaction.annotation.Transactional;
28
import org.springframework.ui.Model;
33
import org.springframework.ui.Model;
Line 31... Line 36...
31
import org.springframework.web.bind.annotation.RequestMethod;
36
import org.springframework.web.bind.annotation.RequestMethod;
32
import org.springframework.web.bind.annotation.RequestParam;
37
import org.springframework.web.bind.annotation.RequestParam;
33
import org.springframework.web.bind.annotation.RequestPart;
38
import org.springframework.web.bind.annotation.RequestPart;
34
import org.springframework.web.multipart.MultipartFile;
39
import org.springframework.web.multipart.MultipartFile;
35
 
40
 
-
 
41
import com.mongodb.DBObject;
36
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
42
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
-
 
43
import com.spice.profitmandi.common.model.BrandStockPrice;
37
import com.spice.profitmandi.common.model.CustomRetailer;
44
import com.spice.profitmandi.common.model.CustomRetailer;
38
import com.spice.profitmandi.common.model.ProfitMandiConstants;
45
import com.spice.profitmandi.common.model.ProfitMandiConstants;
39
import com.spice.profitmandi.common.util.FileUtil;
46
import com.spice.profitmandi.common.util.FileUtil;
40
import com.spice.profitmandi.common.web.util.ResponseSender;
47
import com.spice.profitmandi.common.web.util.ResponseSender;
41
import com.spice.profitmandi.dao.entity.auth.AuthUser;
48
import com.spice.profitmandi.dao.entity.auth.AuthUser;
Line 82... Line 89...
82
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
89
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
83
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
90
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
84
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
91
import com.spice.profitmandi.dao.repository.dtr.FranchiseeVisitRepository;
85
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
92
import com.spice.profitmandi.dao.repository.dtr.LeadActivityRepository;
86
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
93
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
-
 
94
import com.spice.profitmandi.dao.repository.dtr.Mongo;
87
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
95
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
88
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
96
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
89
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
97
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
90
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
98
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
91
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
99
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
92
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
100
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
93
import com.spice.profitmandi.service.PartnerCollectionService;
101
import com.spice.profitmandi.service.PartnerCollectionService;
94
import com.spice.profitmandi.service.user.RetailerService;
102
import com.spice.profitmandi.service.user.RetailerService;
95
import com.spice.profitmandi.service.user.StoreTimelineTatService;
103
import com.spice.profitmandi.service.user.StoreTimelineTatService;
96
 
-
 
97
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
104
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
98
import com.spice.profitmandi.web.res.Partner;
105
import com.spice.profitmandi.web.res.Partner;
99
 
106
 
100
import io.swagger.annotations.ApiImplicitParam;
107
import io.swagger.annotations.ApiImplicitParam;
101
import io.swagger.annotations.ApiImplicitParams;
108
import io.swagger.annotations.ApiImplicitParams;
Line 159... Line 166...
159
	private TicketSubCategoryRepository ticketSubCategoryRepository;
166
	private TicketSubCategoryRepository ticketSubCategoryRepository;
160
 
167
 
161
	@Autowired
168
	@Autowired
162
	private PartnerCollectionRemarkRepository partnerCollectionRemarkRepository;
169
	private PartnerCollectionRemarkRepository partnerCollectionRemarkRepository;
163
 
170
 
-
 
171
	@Autowired
-
 
172
	private Mongo mongoClient;
-
 
173
 
-
 
174
	@Autowired
-
 
175
	private OrderRepository orderRepository;
-
 
176
 
-
 
177
	@Autowired
-
 
178
	private PositionRepository positionRepository;
-
 
179
 
-
 
180
	@Autowired
-
 
181
	private UserWalletRepository userWalletRepository;
-
 
182
 
-
 
183
	@Autowired
-
 
184
	private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
-
 
185
 
-
 
186
	@Autowired
-
 
187
	private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
-
 
188
 
-
 
189
	@Autowired
-
 
190
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
-
 
191
 
-
 
192
	@Autowired
-
 
193
	private AuthUserPartnerMappingRepository authUserPartnerMappingRepository;
-
 
194
 
164
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
195
	@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
165
	@ApiImplicitParams({
196
	@ApiImplicitParams({
166
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
197
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
167
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
198
	public ResponseEntity<?> LeadUser(HttpServletRequest request,
168
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
199
			@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
Line 427... Line 458...
427
		franchiseeVisit.setInvestment(createFranchiseeRequest.getInvestment());
458
		franchiseeVisit.setInvestment(createFranchiseeRequest.getInvestment());
428
		franchiseeVisit.setMtd(createFranchiseeRequest.getMtd());
459
		franchiseeVisit.setMtd(createFranchiseeRequest.getMtd());
429
		franchiseeVisit.setHygiene(createFranchiseeRequest.getHygiene());
460
		franchiseeVisit.setHygiene(createFranchiseeRequest.getHygiene());
430
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
461
		franchiseeVisit.setCreatedTimestamp(LocalDateTime.now());
431
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
462
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
-
 
463
		franchiseeVisit.setInformedAboutOnline(createFranchiseeRequest.getOnline());
-
 
464
		franchiseeVisit.setPendingBilling(createFranchiseeRequest.getPendingBilling());
432
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
465
		if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
433
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
466
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
434
		} else {
467
		} else {
435
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
468
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
436
		}
469
		}
Line 490... Line 523...
490
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
523
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
491
	public ResponseEntity<?> getFranchiseActivity(HttpServletRequest request, @RequestParam(name = "id") int id)
524
	public ResponseEntity<?> getFranchiseActivity(HttpServletRequest request, @RequestParam(name = "id") int id)
492
			throws ProfitMandiBusinessException {
525
			throws ProfitMandiBusinessException {
493
 
526
 
494
		List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(id);
527
		List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository.selectByFranchiseeVisitId(id);
495
 
-
 
496
		return responseSender.ok(franchiseeActivities);
528
		return responseSender.ok(franchiseeActivities);
497
 
529
 
498
	}
530
	}
499
 
531
 
500
	@RequestMapping(value = "/getFranchiseeInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
532
	@RequestMapping(value = "/getFranchiseeInfo", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
Line 502... Line 534...
502
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
534
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
503
	public ResponseEntity<?> getFranchiseeInfo(HttpServletRequest request, @RequestParam(name = "id") int id)
535
	public ResponseEntity<?> getFranchiseeInfo(HttpServletRequest request, @RequestParam(name = "id") int id)
504
			throws ProfitMandiBusinessException {
536
			throws ProfitMandiBusinessException {
505
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
537
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
506
 
538
 
-
 
539
		List<DBObject> mobileBrands = mongoClient.getAllBrandsToDisplay(3);
-
 
540
 
-
 
541
		List<String> brands = mobileBrands.stream().filter(x -> (boolean) x.get("active"))
-
 
542
				.map(x -> (String) x.get("name")).collect(Collectors.toList());
-
 
543
 
-
 
544
		franchiseeVisit.setBrands(brands);
-
 
545
 
507
		return responseSender.ok(franchiseeVisit);
546
		return responseSender.ok(franchiseeVisit);
508
 
547
 
509
	}
548
	}
510
 
549
 
511
	@RequestMapping(value = "/franchise-visit-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
550
	@RequestMapping(value = "/franchise-visit-update", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
Line 519... Line 558...
519
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
558
		FranchiseeVisit franchiseeVisit = franchiseeVisitRepository.selectById(id);
520
 
559
 
521
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
560
		FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
522
 
561
 
523
		if (action == FranchiseeActivityStatus.FOLLOWUP) {
562
		if (action == FranchiseeActivityStatus.FOLLOWUP) {
524
			franchiseeActivity.setResolution(resolution);
-
 
525
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
-
 
526
			franchiseeActivity.setAction(action);
-
 
-
 
563
 
527
			franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
564
			franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
528
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
-
 
529
			franchiseeActivityRepository.persist(franchiseeActivity);
-
 
530
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
-
 
531
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
565
			franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
532
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
566
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
533
			franchiseeVisitRepository.persist(franchiseeVisit);
567
			franchiseeVisitRepository.persist(franchiseeVisit);
534
 
568
 
535
		} else {
569
		} else {
536
			franchiseeActivity.setResolution(resolution);
-
 
537
			franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
-
 
538
			franchiseeActivity.setAction(action);
-
 
-
 
570
 
539
			franchiseeActivity.setSchelduleTimestamp(null);
571
			franchiseeActivity.setSchelduleTimestamp(null);
540
			franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
-
 
541
			franchiseeActivityRepository.persist(franchiseeActivity);
-
 
542
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
572
			franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
543
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
573
			franchiseeVisit.setStatus(FranchiseeVisitStatus.CLOSE);
544
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
574
			franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
545
			franchiseeVisitRepository.persist(franchiseeVisit);
575
			franchiseeVisitRepository.persist(franchiseeVisit);
546
 
576
 
547
		}
577
		}
548
 
578
 
-
 
579
		franchiseeActivity.setResolution(resolution);
-
 
580
		franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
-
 
581
		franchiseeActivity.setAction(action);
-
 
582
 
-
 
583
		franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
-
 
584
		franchiseeActivityRepository.persist(franchiseeActivity);
-
 
585
 
-
 
586
		franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
-
 
587
		franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
-
 
588
		franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
-
 
589
		franchiseeVisitRepository.persist(franchiseeVisit);
-
 
590
 
549
		return responseSender.ok(true);
591
		return responseSender.ok(true);
550
 
592
 
551
	}
593
	}
552
 
594
 
553
	@RequestMapping(value = "/onBoardingTimelineStatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
595
	@RequestMapping(value = "/onBoardingTimelineStatus", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
Line 593... Line 635...
593
 
635
 
594
		return responseSender.ok(status);
636
		return responseSender.ok(status);
595
 
637
 
596
	}
638
	}
597
 
639
 
598
	@Autowired
-
 
599
	private OrderRepository orderRepository;
-
 
600
 
-
 
601
	@Autowired
-
 
602
	private PositionRepository positionRepository;
-
 
603
 
-
 
604
	@Autowired
-
 
605
	private UserWalletRepository userWalletRepository;
-
 
606
 
-
 
607
	@Autowired
-
 
608
	private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
-
 
609
 
-
 
610
	@Autowired
-
 
611
	private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
-
 
612
 
-
 
613
	@Autowired
-
 
614
	private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
-
 
615
 
-
 
616
	@Autowired
-
 
617
	private AuthUserPartnerMappingRepository authUserPartnerMappingRepository;
-
 
618
 
-
 
619
	@RequestMapping(value = "/getPartnerTarget", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
640
	@RequestMapping(value = "/getPartnerTarget", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
620
	@ApiImplicitParams({
641
	@ApiImplicitParams({
621
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
642
			@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
622
	public ResponseEntity<?> getPartnerTarget(HttpServletRequest request,
643
	public ResponseEntity<?> getPartnerTarget(HttpServletRequest request,
623
			@RequestParam(name = "gmailId") String gmailId, @RequestParam String dayValue)
644
			@RequestParam(name = "gmailId") String gmailId, @RequestParam String dayValue)
Line 1228... Line 1249...
1228
		}
1249
		}
1229
 
1250
 
1230
		return responseSender.ok(true);
1251
		return responseSender.ok(true);
1231
 
1252
 
1232
	}
1253
	}
-
 
1254
 
-
 
1255
	@RequestMapping(value = "/downloadFranchiseeVisitTemplate", method = RequestMethod.GET)
-
 
1256
	public ResponseEntity<?> downloadFranchiseeVisitTemplate(HttpServletRequest request) throws Exception {
-
 
1257
 
-
 
1258
		// ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-
 
1259
 
-
 
1260
		List<List<?>> rows = new ArrayList<>();
-
 
1261
 
-
 
1262
		org.apache.commons.io.output.ByteArrayOutputStream byteArrayOutputStream = FileUtil
-
 
1263
				.getCSVByteStream(Arrays.asList("Partner Id", "Agenda", "Schedule Timestamp"), rows);
-
 
1264
 
-
 
1265
		try {
-
 
1266
			byteArrayOutputStream.close();
-
 
1267
		} catch (IOException e) {
-
 
1268
			// TODO Auto-generated catch block
-
 
1269
			e.printStackTrace();
-
 
1270
		}
-
 
1271
		final HttpHeaders headers = new HttpHeaders();
-
 
1272
		// headers.setContentType(TEXT_CSV_TYPE);
-
 
1273
		// headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");
-
 
1274
 
-
 
1275
		headers.setContentType(MediaType.parseMediaType("application/csv"));
-
 
1276
		headers.set("Content-disposition", "inline; filename=visit-tempplate.csv");
-
 
1277
		headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
-
 
1278
		headers.add("Pragma", "no-cache");
-
 
1279
		headers.add("Expires", "0");
-
 
1280
 
-
 
1281
		headers.setContentLength(byteArrayOutputStream.toByteArray().length);
-
 
1282
		final InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-
 
1283
		final InputStreamResource inputStreamResource = new InputStreamResource(inputStream);
-
 
1284
		return new ResponseEntity<>(inputStreamResource, headers, HttpStatus.OK);
-
 
1285
 
-
 
1286
	}
1233
}
1287
}
1234
1288