| 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.ByteArrayOutputStream;
|
- |
|
| 5 |
import java.io.IOException;
|
3 |
import java.io.IOException;
|
| 6 |
import java.io.InputStream;
|
- |
|
| 7 |
import java.time.LocalDate;
|
4 |
import java.time.LocalDate;
|
| 8 |
import java.time.LocalDateTime;
|
5 |
import java.time.LocalDateTime;
|
| 9 |
import java.time.format.DateTimeFormatter;
|
6 |
import java.time.format.DateTimeFormatter;
|
| 10 |
import java.util.ArrayList;
|
7 |
import java.util.ArrayList;
|
| 11 |
import java.util.Arrays;
|
8 |
import java.util.Arrays;
|
| 12 |
import java.util.Base64;
|
- |
|
| 13 |
import java.util.Comparator;
|
9 |
import java.util.Comparator;
|
| 14 |
import java.util.HashMap;
|
10 |
import java.util.HashMap;
|
| 15 |
import java.util.List;
|
11 |
import java.util.List;
|
| 16 |
import java.util.Map;
|
12 |
import java.util.Map;
|
| 17 |
import java.util.Map.Entry;
|
13 |
import java.util.Map.Entry;
|
| Line 22... |
Line 18... |
| 22 |
|
18 |
|
| 23 |
import org.apache.commons.csv.CSVRecord;
|
19 |
import org.apache.commons.csv.CSVRecord;
|
| 24 |
import org.apache.logging.log4j.LogManager;
|
20 |
import org.apache.logging.log4j.LogManager;
|
| 25 |
import org.apache.logging.log4j.Logger;
|
21 |
import org.apache.logging.log4j.Logger;
|
| 26 |
import org.springframework.beans.factory.annotation.Autowired;
|
22 |
import org.springframework.beans.factory.annotation.Autowired;
|
| 27 |
import org.springframework.core.io.InputStreamResource;
|
- |
|
| 28 |
import org.springframework.format.annotation.DateTimeFormat;
|
23 |
import org.springframework.format.annotation.DateTimeFormat;
|
| 29 |
import org.springframework.http.HttpHeaders;
|
24 |
import org.springframework.http.HttpHeaders;
|
| 30 |
import org.springframework.http.HttpStatus;
|
25 |
import org.springframework.http.HttpStatus;
|
| 31 |
import org.springframework.http.MediaType;
|
26 |
import org.springframework.http.MediaType;
|
| 32 |
import org.springframework.http.ResponseEntity;
|
27 |
import org.springframework.http.ResponseEntity;
|
| Line 39... |
Line 34... |
| 39 |
import org.springframework.web.bind.annotation.RequestParam;
|
34 |
import org.springframework.web.bind.annotation.RequestParam;
|
| 40 |
import org.springframework.web.bind.annotation.RequestPart;
|
35 |
import org.springframework.web.bind.annotation.RequestPart;
|
| 41 |
import org.springframework.web.multipart.MultipartFile;
|
36 |
import org.springframework.web.multipart.MultipartFile;
|
| 42 |
|
37 |
|
| 43 |
import com.mongodb.DBObject;
|
38 |
import com.mongodb.DBObject;
|
| - |
|
39 |
import com.spice.profitmandi.common.enumuration.MessageType;
|
| 44 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
40 |
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
|
| 45 |
import com.spice.profitmandi.common.model.BrandStockPrice;
|
- |
|
| 46 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
41 |
import com.spice.profitmandi.common.model.CustomRetailer;
|
| 47 |
import com.spice.profitmandi.common.model.InvoicePdfModel;
|
- |
|
| 48 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
42 |
import com.spice.profitmandi.common.model.ProfitMandiConstants;
|
| - |
|
43 |
import com.spice.profitmandi.common.model.SendNotificationModel;
|
| 49 |
import com.spice.profitmandi.common.util.FileUtil;
|
44 |
import com.spice.profitmandi.common.util.FileUtil;
|
| 50 |
import com.spice.profitmandi.common.util.PdfUtils;
|
45 |
import com.spice.profitmandi.common.util.FormattingUtils;
|
| 51 |
import com.spice.profitmandi.common.web.util.ResponseSender;
|
46 |
import com.spice.profitmandi.common.web.util.ResponseSender;
|
| 52 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
47 |
import com.spice.profitmandi.dao.entity.auth.AuthUser;
|
| 53 |
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionPlan;
|
48 |
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionPlan;
|
| 54 |
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionRemark;
|
49 |
import com.spice.profitmandi.dao.entity.auth.PartnerCollectionRemark;
|
| 55 |
import com.spice.profitmandi.dao.entity.auth.PartnerSecondaryPlan;
|
50 |
import com.spice.profitmandi.dao.entity.auth.PartnerSecondaryPlan;
|
| 56 |
import com.spice.profitmandi.dao.entity.cs.Ticket;
|
51 |
import com.spice.profitmandi.dao.entity.cs.Ticket;
|
| 57 |
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
|
52 |
import com.spice.profitmandi.dao.entity.cs.TicketCategory;
|
| 58 |
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
|
53 |
import com.spice.profitmandi.dao.entity.cs.TicketSubCategory;
|
| 59 |
import com.spice.profitmandi.dao.entity.dtr.User;
|
54 |
import com.spice.profitmandi.dao.entity.dtr.User;
|
| 60 |
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
|
55 |
import com.spice.profitmandi.dao.entity.dtr.UserAccount;
|
| 61 |
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
|
- |
|
| 62 |
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
|
56 |
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
|
| 63 |
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
|
57 |
import com.spice.profitmandi.dao.entity.fofo.PartnerDailyInvestment;
|
| 64 |
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
|
58 |
import com.spice.profitmandi.dao.entity.fofo.PartnerOnBoardingPanel;
|
| 65 |
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
|
59 |
import com.spice.profitmandi.dao.entity.user.FranchiseeActivity;
|
| 66 |
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
|
60 |
import com.spice.profitmandi.dao.entity.user.FranchiseeVisit;
|
| 67 |
import com.spice.profitmandi.dao.entity.user.Lead;
|
61 |
import com.spice.profitmandi.dao.entity.user.Lead;
|
| 68 |
import com.spice.profitmandi.dao.entity.user.LeadActivity;
|
62 |
import com.spice.profitmandi.dao.entity.user.LeadActivity;
|
| - |
|
63 |
import com.spice.profitmandi.dao.entity.user.VisitRequest;
|
| 69 |
import com.spice.profitmandi.dao.enumuration.auth.CollectionRemark;
|
64 |
import com.spice.profitmandi.dao.enumuration.auth.CollectionRemark;
|
| - |
|
65 |
import com.spice.profitmandi.dao.enumuration.dtr.CommunicationType;
|
| 70 |
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
|
66 |
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeActivityStatus;
|
| 71 |
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
|
67 |
import com.spice.profitmandi.dao.enumuration.dtr.FranchiseeVisitStatus;
|
| 72 |
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
|
68 |
import com.spice.profitmandi.dao.enumuration.dtr.LeadStatus;
|
| 73 |
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
|
69 |
import com.spice.profitmandi.dao.enumuration.dtr.StoreTimeline;
|
| - |
|
70 |
import com.spice.profitmandi.dao.enumuration.dtr.VisitStatus;
|
| 74 |
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
|
71 |
import com.spice.profitmandi.dao.model.CreateRefferalRequest;
|
| 75 |
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
|
72 |
import com.spice.profitmandi.dao.model.OnBoardingTimelineModel;
|
| 76 |
import com.spice.profitmandi.dao.model.PartnerCollectionAchievementModel;
|
- |
|
| 77 |
import com.spice.profitmandi.dao.model.PartnerCollectionPlanModel;
|
73 |
import com.spice.profitmandi.dao.model.PartnerCollectionPlanModel;
|
| 78 |
import com.spice.profitmandi.dao.model.PartnerCollectionRemarkModel;
|
74 |
import com.spice.profitmandi.dao.model.PartnerCollectionRemarkModel;
|
| 79 |
import com.spice.profitmandi.dao.model.PartnerSecondaryPlanModel;
|
75 |
import com.spice.profitmandi.dao.model.PartnerSecondaryPlanModel;
|
| 80 |
import com.spice.profitmandi.dao.model.PartnerTargetAchievementModel;
|
76 |
import com.spice.profitmandi.dao.model.PartnerTargetAchievementModel;
|
| 81 |
import com.spice.profitmandi.dao.model.TargetModel;
|
77 |
import com.spice.profitmandi.dao.model.TargetModel;
|
| 82 |
import com.spice.profitmandi.dao.model.TicketViewModel;
|
78 |
import com.spice.profitmandi.dao.model.TicketViewModel;
|
| 83 |
import com.spice.profitmandi.dao.model.UserCart;
|
79 |
import com.spice.profitmandi.dao.model.UserCart;
|
| - |
|
80 |
import com.spice.profitmandi.dao.model.UserVisitModel;
|
| - |
|
81 |
import com.spice.profitmandi.dao.model.VisitDescriptionModel;
|
| - |
|
82 |
import com.spice.profitmandi.dao.model.VisitSummaryModel;
|
| 84 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
83 |
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
|
| 85 |
import com.spice.profitmandi.dao.repository.auth.AuthUserPartnerMappingRepository;
|
84 |
import com.spice.profitmandi.dao.repository.auth.AuthUserPartnerMappingRepository;
|
| 86 |
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
|
85 |
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionPlanRepository;
|
| 87 |
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
|
86 |
import com.spice.profitmandi.dao.repository.auth.PartnerCollectionRemarkRepository;
|
| 88 |
import com.spice.profitmandi.dao.repository.auth.PartnerSecondaryPlanRepository;
|
87 |
import com.spice.profitmandi.dao.repository.auth.PartnerSecondaryPlanRepository;
|
| 89 |
import com.spice.profitmandi.dao.repository.cs.CsService;
|
88 |
import com.spice.profitmandi.dao.repository.cs.CsService;
|
| 90 |
import com.spice.profitmandi.dao.repository.cs.PositionRepository;
|
- |
|
| 91 |
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
|
89 |
import com.spice.profitmandi.dao.repository.cs.TicketCategoryRepository;
|
| 92 |
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
|
90 |
import com.spice.profitmandi.dao.repository.cs.TicketRepository;
|
| 93 |
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
|
91 |
import com.spice.profitmandi.dao.repository.cs.TicketSubCategoryRepository;
|
| 94 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
92 |
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
|
| 95 |
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
|
93 |
import com.spice.profitmandi.dao.repository.dtr.FranchiseeActivityRepository;
|
| Line 98... |
Line 96... |
| 98 |
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
|
96 |
import com.spice.profitmandi.dao.repository.dtr.LeadRepository;
|
| 99 |
import com.spice.profitmandi.dao.repository.dtr.Mongo;
|
97 |
import com.spice.profitmandi.dao.repository.dtr.Mongo;
|
| 100 |
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
|
98 |
import com.spice.profitmandi.dao.repository.dtr.PartnerOnBoardingPanelRepository;
|
| 101 |
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
|
99 |
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
|
| 102 |
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
|
100 |
import com.spice.profitmandi.dao.repository.dtr.UserRepository;
|
| - |
|
101 |
import com.spice.profitmandi.dao.repository.dtr.VisitRequestRepository;
|
| 103 |
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
|
102 |
import com.spice.profitmandi.dao.repository.fofo.PartnerDailyInvestmentRepository;
|
| 104 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
103 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
| - |
|
104 |
import com.spice.profitmandi.service.AuthService;
|
| 105 |
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
|
105 |
import com.spice.profitmandi.service.NotificationService;
|
| 106 |
import com.spice.profitmandi.service.PartnerCollectionService;
|
106 |
import com.spice.profitmandi.service.PartnerCollectionService;
|
| 107 |
import com.spice.profitmandi.service.user.RetailerService;
|
107 |
import com.spice.profitmandi.service.user.RetailerService;
|
| 108 |
import com.spice.profitmandi.service.user.StoreTimelineTatService;
|
108 |
import com.spice.profitmandi.service.user.StoreTimelineTatService;
|
| 109 |
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
|
109 |
import com.spice.profitmandi.web.req.CreateFranchiseeRequest;
|
| 110 |
import com.spice.profitmandi.web.res.Partner;
|
110 |
import com.spice.profitmandi.web.res.Partner;
|
| 111 |
|
111 |
|
| 112 |
import io.swagger.annotations.ApiImplicitParam;
|
112 |
import io.swagger.annotations.ApiImplicitParam;
|
| 113 |
import io.swagger.annotations.ApiImplicitParams;
|
113 |
import io.swagger.annotations.ApiImplicitParams;
|
| 114 |
import okhttp3.OkHttpClient;
|
- |
|
| 115 |
import okhttp3.Request;
|
- |
|
| 116 |
import okhttp3.Response;
|
- |
|
| 117 |
|
114 |
|
| 118 |
@Controller
|
115 |
@Controller
|
| 119 |
@Transactional(rollbackFor = Throwable.class)
|
116 |
@Transactional(rollbackFor = Throwable.class)
|
| 120 |
public class LeadController {
|
117 |
public class LeadController {
|
| 121 |
private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
|
118 |
private static final Logger LOGGER = LogManager.getLogger(LeadController.class);
|
| Line 181... |
Line 178... |
| 181 |
|
178 |
|
| 182 |
@Autowired
|
179 |
@Autowired
|
| 183 |
private OrderRepository orderRepository;
|
180 |
private OrderRepository orderRepository;
|
| 184 |
|
181 |
|
| 185 |
@Autowired
|
182 |
@Autowired
|
| 186 |
private PositionRepository positionRepository;
|
- |
|
| 187 |
|
- |
|
| 188 |
@Autowired
|
- |
|
| 189 |
private UserWalletRepository userWalletRepository;
|
- |
|
| 190 |
|
- |
|
| 191 |
@Autowired
|
- |
|
| 192 |
private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
|
183 |
private PartnerCollectionPlanRepository partnerCollectionPlanRepository;
|
| 193 |
|
184 |
|
| 194 |
@Autowired
|
185 |
@Autowired
|
| 195 |
private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
|
186 |
private PartnerSecondaryPlanRepository partnerSecondaryPlanRepository;
|
| 196 |
|
187 |
|
| Line 198... |
Line 189... |
| 198 |
private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
|
189 |
private PartnerDailyInvestmentRepository partnerDailyInvestmentRepository;
|
| 199 |
|
190 |
|
| 200 |
@Autowired
|
191 |
@Autowired
|
| 201 |
private AuthUserPartnerMappingRepository authUserPartnerMappingRepository;
|
192 |
private AuthUserPartnerMappingRepository authUserPartnerMappingRepository;
|
| 202 |
|
193 |
|
| - |
|
194 |
@Autowired
|
| - |
|
195 |
private VisitRequestRepository visitRequestRepository;
|
| - |
|
196 |
|
| - |
|
197 |
@Autowired
|
| - |
|
198 |
private AuthService authService;
|
| - |
|
199 |
|
| - |
|
200 |
@Autowired
|
| - |
|
201 |
private NotificationService notificationService;
|
| - |
|
202 |
|
| 203 |
@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
203 |
@RequestMapping(value = "/lead", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
| 204 |
@ApiImplicitParams({
|
204 |
@ApiImplicitParams({
|
| 205 |
@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
|
205 |
@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
|
| 206 |
public ResponseEntity<?> LeadUser(HttpServletRequest request,
|
206 |
public ResponseEntity<?> LeadUser(HttpServletRequest request,
|
| 207 |
@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
|
207 |
@RequestBody CreateRefferalRequest createRefferalRequest) throws Exception {
|
| Line 231... |
Line 231... |
| 231 |
leadRepository.persist(lead);
|
231 |
leadRepository.persist(lead);
|
| 232 |
LeadActivity leadActivity = new LeadActivity();
|
232 |
LeadActivity leadActivity = new LeadActivity();
|
| 233 |
leadActivity.setLeadId(lead.getId());
|
233 |
leadActivity.setLeadId(lead.getId());
|
| 234 |
leadActivity.setRemark(createRefferalRequest.getRemark());
|
234 |
leadActivity.setRemark(createRefferalRequest.getRemark());
|
| 235 |
|
235 |
|
| - |
|
236 |
leadActivity.setAuthId(authUser.getId());
|
| - |
|
237 |
|
| 236 |
if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
|
238 |
if (createRefferalRequest.getStatus().equals(LeadStatus.followUp)) {
|
| 237 |
leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
|
239 |
leadActivity.setSchelduleTimestamp(createRefferalRequest.getSchelduleTimestamp());
|
| - |
|
240 |
leadActivity.setCommunicationType(createRefferalRequest.getCommunicationType());
|
| - |
|
241 |
|
| - |
|
242 |
if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
|
| - |
|
243 |
|
| - |
|
244 |
visitRequestRepository.createVisitRequest(lead.getId(), "lead", lead.getAssignTo(),
|
| - |
|
245 |
createRefferalRequest.getSchelduleTimestamp());
|
| - |
|
246 |
}
|
| - |
|
247 |
//
|
| 238 |
leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
|
248 |
leadActivity.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
|
| 239 |
lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
|
249 |
lead.setClosureTimestamp(createRefferalRequest.getClosureTimestamp());
|
| 240 |
} else {
|
250 |
} else {
|
| 241 |
leadActivity.setSchelduleTimestamp(null);
|
251 |
leadActivity.setSchelduleTimestamp(null);
|
| 242 |
leadActivity.setClosureTimestamp(null);
|
252 |
leadActivity.setClosureTimestamp(null);
|
| Line 254... |
Line 264... |
| 254 |
public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
|
264 |
public ResponseEntity<?> leadDescription(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
|
| 255 |
@RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
|
265 |
@RequestParam(name = "status") LeadStatus status) throws ProfitMandiBusinessException {
|
| 256 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
266 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
| 257 |
List<Lead> leads = null;
|
267 |
List<Lead> leads = null;
|
| 258 |
LOGGER.info("emails" + status);
|
268 |
LOGGER.info("emails" + status);
|
| - |
|
269 |
|
| - |
|
270 |
List<VisitRequest> visitRequests = visitRequestRepository.selectByAuthIdAndDate(authUser.getId(),
|
| - |
|
271 |
LocalDate.now());
|
| - |
|
272 |
Map<Integer, List<VisitRequest>> visitRequestMap = null;
|
| - |
|
273 |
if (!visitRequests.isEmpty()) {
|
| - |
|
274 |
visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getVisitId()));
|
| - |
|
275 |
}
|
| 259 |
if (status.equals(LeadStatus.followUp)) {
|
276 |
if (status.equals(LeadStatus.followUp)) {
|
| 260 |
|
277 |
|
| 261 |
leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
|
278 |
leads = leadRepository.selectLeadsScheduledBetweenDate(Arrays.asList(authUser.getId()), null, null);
|
| - |
|
279 |
|
| - |
|
280 |
if (visitRequestMap != null) {
|
| - |
|
281 |
for (Lead lead : leads) {
|
| - |
|
282 |
List<VisitRequest> visitRequest = visitRequestMap.get(lead.getId());
|
| - |
|
283 |
|
| - |
|
284 |
if (visitRequest != null) {
|
| - |
|
285 |
if (visitRequest.size() > 1) {
|
| - |
|
286 |
|
| - |
|
287 |
Comparator<VisitRequest> visitComparato = Comparator
|
| - |
|
288 |
.comparing(VisitRequest::getCreatedTimestamp);
|
| - |
|
289 |
|
| - |
|
290 |
VisitRequest youngestVisit = visitRequest.stream().max(visitComparato).get();
|
| - |
|
291 |
lead.setVisitStatus(youngestVisit.getStatus());
|
| - |
|
292 |
|
| - |
|
293 |
} else {
|
| - |
|
294 |
lead.setVisitStatus(visitRequest.get(0).getStatus());
|
| - |
|
295 |
|
| - |
|
296 |
}
|
| - |
|
297 |
}
|
| - |
|
298 |
|
| - |
|
299 |
}
|
| - |
|
300 |
}
|
| - |
|
301 |
|
| 262 |
leads = leads.stream()
|
302 |
leads = leads.stream()
|
| 263 |
.sorted(Comparator.comparing(Lead::getScheduledTimestamp,
|
303 |
.sorted(Comparator.comparing(Lead::getScheduledTimestamp,
|
| 264 |
Comparator.nullsFirst(Comparator.reverseOrder())))
|
304 |
Comparator.nullsFirst(Comparator.reverseOrder())))
|
| 265 |
.collect(Collectors
|
305 |
.collect(Collectors
|
| 266 |
.toList());/*
|
306 |
.toList());/*
|
| Line 298... |
Line 338... |
| 298 |
@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
|
338 |
@ApiImplicitParam(name = "Auth-Token", value = "Auth-Token", required = true, dataType = "string", paramType = "header") })
|
| 299 |
public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
|
339 |
public ResponseEntity<?> leadUpdate(HttpServletRequest request, @RequestParam(name = "id") int id,
|
| 300 |
@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "colorCheck") Boolean colorCheck,
|
340 |
@RequestParam(name = "status") LeadStatus status, @RequestParam(name = "colorCheck") Boolean colorCheck,
|
| 301 |
@RequestParam(name = "remark") String remark, @RequestParam(name = "reason") String reason,
|
341 |
@RequestParam(name = "remark") String remark, @RequestParam(name = "reason") String reason,
|
| 302 |
@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp,
|
342 |
@RequestParam(name = "schelduleTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime schelduleTimestamp,
|
| 303 |
@RequestParam(name = "closureTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime closureTimestamp)
|
343 |
@RequestParam(name = "closureTimestamp") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime closureTimestamp,
|
| - |
|
344 |
@RequestParam(name = "communicationType") CommunicationType communicationType)
|
| 304 |
throws ProfitMandiBusinessException {
|
345 |
throws ProfitMandiBusinessException {
|
| 305 |
|
346 |
|
| 306 |
Lead lead = leadRepository.selectById(id);
|
347 |
Lead lead = leadRepository.selectById(id);
|
| 307 |
|
348 |
|
| 308 |
LeadActivity leadActivity = new LeadActivity();
|
349 |
LeadActivity leadActivity = new LeadActivity();
|
| Line 311... |
Line 352... |
| 311 |
leadActivity.setRemark(remark);
|
352 |
leadActivity.setRemark(remark);
|
| 312 |
leadActivity.setLeadId(id);
|
353 |
leadActivity.setLeadId(id);
|
| 313 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|
354 |
leadActivity.setCreatedTimestamp(LocalDateTime.now());
|
| 314 |
leadActivity.setSchelduleTimestamp(null);
|
355 |
leadActivity.setSchelduleTimestamp(null);
|
| 315 |
leadActivity.setClosureTimestamp(null);
|
356 |
leadActivity.setClosureTimestamp(null);
|
| - |
|
357 |
leadActivity.setAuthId(lead.getAssignTo());
|
| 316 |
lead.setUpdatedTimestamp(LocalDateTime.now());
|
358 |
lead.setUpdatedTimestamp(LocalDateTime.now());
|
| 317 |
if (colorCheck == true) {
|
359 |
if (colorCheck == true) {
|
| 318 |
lead.setColor("Green");
|
360 |
lead.setColor("Green");
|
| 319 |
} else {
|
361 |
} else {
|
| 320 |
lead.setColor("Yellow");
|
362 |
lead.setColor("Yellow");
|
| 321 |
}
|
363 |
}
|
| 322 |
if (status == LeadStatus.followUp) {
|
364 |
if (status == LeadStatus.followUp) {
|
| 323 |
|
365 |
|
| - |
|
366 |
if (schelduleTimestamp != null) {
|
| - |
|
367 |
|
| - |
|
368 |
leadActivity.setCommunicationType(communicationType);
|
| - |
|
369 |
|
| - |
|
370 |
if (leadActivity.getCommunicationType().equals(CommunicationType.VISIT)) {
|
| - |
|
371 |
|
| - |
|
372 |
visitRequestRepository.createVisitRequest(lead.getId(), "lead", lead.getAssignTo(),
|
| - |
|
373 |
schelduleTimestamp);
|
| - |
|
374 |
}
|
| - |
|
375 |
|
| - |
|
376 |
}
|
| 324 |
leadActivity.setSchelduleTimestamp(schelduleTimestamp);
|
377 |
leadActivity.setSchelduleTimestamp(schelduleTimestamp);
|
| 325 |
leadActivity.setClosureTimestamp(closureTimestamp);
|
378 |
leadActivity.setClosureTimestamp(closureTimestamp);
|
| 326 |
lead.setClosureTimestamp(closureTimestamp);
|
379 |
lead.setClosureTimestamp(closureTimestamp);
|
| 327 |
|
380 |
|
| 328 |
} else {
|
381 |
} else {
|
| Line 436... |
Line 489... |
| 436 |
franchiseeVisit.setCreatedBy(authUserName);
|
489 |
franchiseeVisit.setCreatedBy(authUserName);
|
| 437 |
franchiseeVisit.setAuthId(authUser.getId());
|
490 |
franchiseeVisit.setAuthId(authUser.getId());
|
| 438 |
|
491 |
|
| 439 |
franchiseeVisitRepository.persist(franchiseeVisit);
|
492 |
franchiseeVisitRepository.persist(franchiseeVisit);
|
| 440 |
|
493 |
|
| - |
|
494 |
FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
|
| - |
|
495 |
franchiseeActivity.setAction(FranchiseeActivityStatus.FOLLOWUP);
|
| - |
|
496 |
franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
|
| - |
|
497 |
franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
|
| - |
|
498 |
franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getFirstSchelduleTimestamp());
|
| - |
|
499 |
|
| - |
|
500 |
franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
|
| - |
|
501 |
franchiseeActivityRepository.persist(franchiseeActivity);
|
| - |
|
502 |
|
| - |
|
503 |
franchiseeVisit.setFranchiseActivityId(franchiseeActivity.getId());
|
| - |
|
504 |
|
| - |
|
505 |
visitRequestRepository.createVisitRequest(franchiseeVisit.getId(), "franchiseeVisit", authUser.getId(),
|
| - |
|
506 |
createFranchiseeRequest.getFirstSchelduleTimestamp());
|
| - |
|
507 |
|
| 441 |
return responseSender.ok(true);
|
508 |
return responseSender.ok(true);
|
| 442 |
}
|
509 |
}
|
| 443 |
|
510 |
|
| 444 |
@RequestMapping(value = "/franchise-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
511 |
@RequestMapping(value = "/franchise-visit", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
| 445 |
@ApiImplicitParams({
|
512 |
@ApiImplicitParams({
|
| Line 491... |
Line 558... |
| 491 |
franchiseeActivity.setAction(createFranchiseeRequest.getAction());
|
558 |
franchiseeActivity.setAction(createFranchiseeRequest.getAction());
|
| 492 |
franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
|
559 |
franchiseeActivity.setFranchiseeVisitd(franchiseeVisit.getId());
|
| 493 |
franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
|
560 |
franchiseeActivity.setResolution(createFranchiseeRequest.getResolution());
|
| 494 |
if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
|
561 |
if (createFranchiseeRequest.getAction().equals(FranchiseeActivityStatus.FOLLOWUP)) {
|
| 495 |
franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getSchelduleTimestamp());
|
562 |
franchiseeActivity.setSchelduleTimestamp(createFranchiseeRequest.getSchelduleTimestamp());
|
| - |
|
563 |
|
| - |
|
564 |
visitRequestRepository.createVisitRequest(franchiseeVisit.getId(), "franchiseeVisit",
|
| - |
|
565 |
franchiseeVisit.getAuthId(), createFranchiseeRequest.getSchelduleTimestamp());
|
| 496 |
} else {
|
566 |
} else {
|
| 497 |
franchiseeActivity.setSchelduleTimestamp(null);
|
567 |
franchiseeActivity.setSchelduleTimestamp(null);
|
| 498 |
}
|
568 |
}
|
| 499 |
franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
|
569 |
franchiseeActivity.setCreatedTimestamp(LocalDateTime.now());
|
| 500 |
franchiseeActivityRepository.persist(franchiseeActivity);
|
570 |
franchiseeActivityRepository.persist(franchiseeActivity);
|
| Line 509... |
Line 579... |
| 509 |
public ResponseEntity<?> getFranchiseVisit(HttpServletRequest request,
|
579 |
public ResponseEntity<?> getFranchiseVisit(HttpServletRequest request,
|
| 510 |
@RequestParam(name = "gmailId") String gmailId, @RequestParam(name = "status") FranchiseeVisitStatus status,
|
580 |
@RequestParam(name = "gmailId") String gmailId, @RequestParam(name = "status") FranchiseeVisitStatus status,
|
| 511 |
@RequestParam(name = "offset", defaultValue = "0") int offset,
|
581 |
@RequestParam(name = "offset", defaultValue = "0") int offset,
|
| 512 |
@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
|
582 |
@RequestParam(name = "limit", defaultValue = "10") int limit) throws ProfitMandiBusinessException {
|
| 513 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
583 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
| - |
|
584 |
List<VisitRequest> visitRequests = visitRequestRepository.selectByAuthIdAndDate(authUser.getId(),
|
| - |
|
585 |
LocalDate.now());
|
| - |
|
586 |
Map<Integer, List<VisitRequest>> visitRequestMap = null;
|
| - |
|
587 |
if (!visitRequests.isEmpty()) {
|
| - |
|
588 |
visitRequestMap = visitRequests.stream().collect(Collectors.groupingBy(x -> x.getVisitId()));
|
| 514 |
|
589 |
}
|
| 515 |
List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectByAuthIdAndStatus(authUser.getId(),
|
590 |
List<FranchiseeVisit> franchiseeVisits = franchiseeVisitRepository.selectByAuthIdAndStatus(authUser.getId(),
|
| 516 |
status, offset, limit);
|
591 |
status, offset, limit);
|
| 517 |
|
592 |
|
| 518 |
for (FranchiseeVisit fv : franchiseeVisits) {
|
593 |
for (FranchiseeVisit fv : franchiseeVisits) {
|
| - |
|
594 |
if (visitRequestMap != null) {
|
| - |
|
595 |
|
| - |
|
596 |
List<VisitRequest> visitRequest = visitRequestMap.get(fv.getId());
|
| - |
|
597 |
if (visitRequest != null) {
|
| - |
|
598 |
if (visitRequest.size() > 1) {
|
| - |
|
599 |
|
| - |
|
600 |
Comparator<VisitRequest> visitComparato = Comparator
|
| - |
|
601 |
.comparing(VisitRequest::getCreatedTimestamp);
|
| - |
|
602 |
|
| - |
|
603 |
VisitRequest youngestVisit = visitRequest.stream().max(visitComparato).get();
|
| - |
|
604 |
fv.setVisitStatus(youngestVisit.getStatus());
|
| - |
|
605 |
|
| - |
|
606 |
} else {
|
| - |
|
607 |
fv.setVisitStatus(visitRequest.get(0).getStatus());
|
| - |
|
608 |
|
| - |
|
609 |
}
|
| - |
|
610 |
}
|
| - |
|
611 |
}
|
| 519 |
if (fv.getFranchiseActivityId() != 0) {
|
612 |
if (fv.getFranchiseActivityId() != 0) {
|
| 520 |
FranchiseeActivity fA = franchiseeActivityRepository.selectById(fv.getFranchiseActivityId());
|
613 |
FranchiseeActivity fA = franchiseeActivityRepository.selectById(fv.getFranchiseActivityId());
|
| 521 |
fv.setFranchiseeActivity(fA);
|
614 |
fv.setFranchiseeActivity(fA);
|
| 522 |
}
|
615 |
}
|
| - |
|
616 |
|
| 523 |
}
|
617 |
}
|
| 524 |
|
618 |
|
| 525 |
return responseSender.ok(franchiseeVisits);
|
619 |
return responseSender.ok(franchiseeVisits);
|
| 526 |
|
620 |
|
| 527 |
}
|
621 |
}
|
| Line 567... |
Line 661... |
| 567 |
|
661 |
|
| 568 |
FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
|
662 |
FranchiseeActivity franchiseeActivity = new FranchiseeActivity();
|
| 569 |
|
663 |
|
| 570 |
if (action == FranchiseeActivityStatus.FOLLOWUP) {
|
664 |
if (action == FranchiseeActivityStatus.FOLLOWUP) {
|
| 571 |
|
665 |
|
| - |
|
666 |
if (schelduleTimestamp != null) {
|
| - |
|
667 |
|
| - |
|
668 |
visitRequestRepository.createVisitRequest(franchiseeVisit.getId(), "franchiseeVisit",
|
| - |
|
669 |
franchiseeVisit.getAuthId(), schelduleTimestamp);
|
| - |
|
670 |
}
|
| - |
|
671 |
|
| 572 |
franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
|
672 |
franchiseeActivity.setSchelduleTimestamp(schelduleTimestamp);
|
| 573 |
franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
|
673 |
franchiseeVisit.setStatus(FranchiseeVisitStatus.OPEN);
|
| 574 |
franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
|
674 |
franchiseeVisit.setUpdatedTimestamp(LocalDateTime.now());
|
| 575 |
franchiseeVisitRepository.persist(franchiseeVisit);
|
675 |
franchiseeVisitRepository.persist(franchiseeVisit);
|
| 576 |
|
676 |
|
| Line 1306... |
Line 1406... |
| 1306 |
franchiseeVisit.setVisitTimestamp(LocalDateTime.now());
|
1406 |
franchiseeVisit.setVisitTimestamp(LocalDateTime.now());
|
| 1307 |
|
1407 |
|
| 1308 |
return responseSender.ok(true);
|
1408 |
return responseSender.ok(true);
|
| 1309 |
|
1409 |
|
| 1310 |
}
|
1410 |
}
|
| - |
|
1411 |
|
| - |
|
1412 |
@RequestMapping(value = "/getVisitRequests", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
|
| - |
|
1413 |
public ResponseEntity<?> getVisitRequests(HttpServletRequest request,
|
| - |
|
1414 |
@RequestParam(name = "gmailId") String gmailId, Model model) throws Exception {
|
| - |
|
1415 |
|
| - |
|
1416 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
| - |
|
1417 |
|
| - |
|
1418 |
List<Integer> authUserIds = authService.getAllReportees(authUser.getId());
|
| - |
|
1419 |
List<VisitSummaryModel> visitSummary = new ArrayList<>();
|
| - |
|
1420 |
|
| - |
|
1421 |
if (!authUserIds.isEmpty()) {
|
| - |
|
1422 |
List<AuthUser> authUsers = authRepository.selectAllAuthUserByIds(authUserIds);
|
| - |
|
1423 |
|
| - |
|
1424 |
List<VisitRequest> allVisitRequests = visitRequestRepository.selectByAuthIdsAndDate(authUserIds,
|
| - |
|
1425 |
LocalDate.now().minusDays(7), Arrays.asList(VisitStatus.approved, VisitStatus.pending));
|
| - |
|
1426 |
LOGGER.info("allVisitRequests {}", allVisitRequests);
|
| - |
|
1427 |
|
| - |
|
1428 |
if (!allVisitRequests.isEmpty()) {
|
| - |
|
1429 |
|
| - |
|
1430 |
List<Integer> leadIds = allVisitRequests.stream().filter(x -> x.getVisitType().equals("lead"))
|
| - |
|
1431 |
.map(x -> x.getVisitId()).collect(Collectors.toList());
|
| - |
|
1432 |
List<Lead> leads = new ArrayList<>();
|
| - |
|
1433 |
if (!leadIds.isEmpty()) {
|
| - |
|
1434 |
leads = leadRepository.selectAllByIds(leadIds);
|
| - |
|
1435 |
|
| - |
|
1436 |
for (Lead lead : leads) {
|
| - |
|
1437 |
List<LeadActivity> leadActivities = leadActivityRepository.selectBYLeadId(lead.getId());
|
| - |
|
1438 |
lead.setScheduledTimestamp(leadActivities.get(0).getSchelduleTimestamp());
|
| - |
|
1439 |
lead.setLeadActivity(leadActivities.get(0));
|
| - |
|
1440 |
}
|
| - |
|
1441 |
}
|
| - |
|
1442 |
List<Integer> franchiseeIds = allVisitRequests.stream()
|
| - |
|
1443 |
.filter(x -> x.getVisitType().equals("franchiseeVisit")).map(x -> x.getVisitId())
|
| - |
|
1444 |
.collect(Collectors.toList());
|
| - |
|
1445 |
List<FranchiseeVisit> franchiseeVisits = new ArrayList<>();
|
| - |
|
1446 |
if (!franchiseeIds.isEmpty()) {
|
| - |
|
1447 |
franchiseeVisits = franchiseeVisitRepository.selectAllByIds(franchiseeIds);
|
| - |
|
1448 |
LOGGER.info("franchiseeVisits {}", franchiseeVisits);
|
| - |
|
1449 |
|
| - |
|
1450 |
for (FranchiseeVisit franchiseeVisit : franchiseeVisits) {
|
| - |
|
1451 |
List<FranchiseeActivity> franchiseeActivities = franchiseeActivityRepository
|
| - |
|
1452 |
.selectByFranchiseeVisitId(franchiseeVisit.getId());
|
| - |
|
1453 |
LOGGER.info("franchiseeActivities {}", franchiseeActivities);
|
| - |
|
1454 |
|
| - |
|
1455 |
franchiseeVisit.setScheduleTimestamp(franchiseeActivities.get(0).getSchelduleTimestamp());
|
| - |
|
1456 |
franchiseeVisit.setFranchiseeActivity(franchiseeActivities.get(0));
|
| - |
|
1457 |
}
|
| - |
|
1458 |
|
| - |
|
1459 |
}
|
| - |
|
1460 |
|
| - |
|
1461 |
Map<LocalDate, List<VisitRequest>> dateWiseVisitRequest = allVisitRequests.stream()
|
| - |
|
1462 |
.collect(Collectors.groupingBy(x -> x.getScheduleTimestamp().toLocalDate()));
|
| - |
|
1463 |
|
| - |
|
1464 |
for (Entry<LocalDate, List<VisitRequest>> visitEntry : dateWiseVisitRequest.entrySet()) {
|
| - |
|
1465 |
|
| - |
|
1466 |
LocalDate date = visitEntry.getKey();
|
| - |
|
1467 |
List<VisitRequest> visitRequests = visitEntry.getValue();
|
| - |
|
1468 |
|
| - |
|
1469 |
VisitSummaryModel visitSummaryModel = new VisitSummaryModel();
|
| - |
|
1470 |
|
| - |
|
1471 |
visitSummaryModel.setDate(date);
|
| - |
|
1472 |
List<Integer> dateWiseLeadEntry = visitRequests.stream()
|
| - |
|
1473 |
.filter(x -> x.getVisitType().equals("lead")).map(x -> x.getVisitId())
|
| - |
|
1474 |
.collect(Collectors.toList());
|
| - |
|
1475 |
|
| - |
|
1476 |
List<Integer> dateWiseFranchiseeIds = visitRequests.stream()
|
| - |
|
1477 |
.filter(x -> x.getVisitType().equals("franchiseeVisit")).map(x -> x.getVisitId())
|
| - |
|
1478 |
.collect(Collectors.toList());
|
| - |
|
1479 |
|
| - |
|
1480 |
Map<Integer, List<Lead>> filteredLeadsMap = null;
|
| - |
|
1481 |
if (!leads.isEmpty()) {
|
| - |
|
1482 |
filteredLeadsMap = leads.stream().filter(x -> dateWiseLeadEntry.contains(x.getId()))
|
| - |
|
1483 |
.collect(Collectors.groupingBy(x -> x.getAssignTo()));
|
| - |
|
1484 |
|
| - |
|
1485 |
}
|
| - |
|
1486 |
|
| - |
|
1487 |
Map<Integer, List<FranchiseeVisit>> filteredFranchiseeVisitsMap = null;
|
| - |
|
1488 |
|
| - |
|
1489 |
if (!franchiseeVisits.isEmpty()) {
|
| - |
|
1490 |
filteredFranchiseeVisitsMap = franchiseeVisits.stream()
|
| - |
|
1491 |
.filter(x -> dateWiseFranchiseeIds.contains(x.getId()))
|
| - |
|
1492 |
.collect(Collectors.groupingBy(x -> x.getAuthId()));
|
| - |
|
1493 |
|
| - |
|
1494 |
}
|
| - |
|
1495 |
|
| - |
|
1496 |
List<UserVisitModel> userVisits = new ArrayList<>();
|
| - |
|
1497 |
|
| - |
|
1498 |
for (AuthUser auth : authUsers) {
|
| - |
|
1499 |
UserVisitModel userVisitModel = new UserVisitModel();
|
| - |
|
1500 |
List<VisitDescriptionModel> visitDescriptions = new ArrayList<>();
|
| - |
|
1501 |
|
| - |
|
1502 |
List<Lead> authLeads = new ArrayList<>();
|
| - |
|
1503 |
if (filteredLeadsMap != null) {
|
| - |
|
1504 |
authLeads = filteredLeadsMap.get(auth.getId());
|
| - |
|
1505 |
|
| - |
|
1506 |
}
|
| - |
|
1507 |
|
| - |
|
1508 |
if (authLeads != null && !authLeads.isEmpty()) {
|
| - |
|
1509 |
userVisitModel.setAuthUser(auth.getFullName());
|
| - |
|
1510 |
|
| - |
|
1511 |
for (Lead lead : authLeads) {
|
| - |
|
1512 |
|
| - |
|
1513 |
VisitRequest visitRequest = visitRequests.stream().filter(
|
| - |
|
1514 |
x -> x.getVisitId() == lead.getId() && x.getCreatedBy() == lead.getAssignTo())
|
| - |
|
1515 |
.findAny().orElse(null);
|
| - |
|
1516 |
VisitDescriptionModel visitDescriptionModel = new VisitDescriptionModel();
|
| - |
|
1517 |
visitDescriptionModel.setVisitId(visitRequest.getId());
|
| - |
|
1518 |
visitDescriptionModel.setVisitName(lead.getFirstName());
|
| - |
|
1519 |
visitDescriptionModel.setCity(lead.getCity());
|
| - |
|
1520 |
visitDescriptionModel.setState(lead.getState());
|
| - |
|
1521 |
visitDescriptionModel.setScheduleTime(lead.getScheduledTimestamp());
|
| - |
|
1522 |
visitDescriptionModel.setStatus(visitRequest.getStatus());
|
| - |
|
1523 |
visitDescriptionModel.setRemarks(lead.getLeadActivity().getRemark());
|
| - |
|
1524 |
visitDescriptionModel.setVisitType(visitRequest.getVisitType());
|
| - |
|
1525 |
visitDescriptions.add(visitDescriptionModel);
|
| - |
|
1526 |
|
| - |
|
1527 |
}
|
| - |
|
1528 |
}
|
| - |
|
1529 |
|
| - |
|
1530 |
List<FranchiseeVisit> authfranchiseeVisit = new ArrayList<>();
|
| - |
|
1531 |
if (filteredFranchiseeVisitsMap != null) {
|
| - |
|
1532 |
authfranchiseeVisit = filteredFranchiseeVisitsMap.get(auth.getId());
|
| - |
|
1533 |
|
| - |
|
1534 |
}
|
| - |
|
1535 |
|
| - |
|
1536 |
if (authfranchiseeVisit != null && !authfranchiseeVisit.isEmpty()) {
|
| - |
|
1537 |
userVisitModel.setAuthUser(auth.getFullName());
|
| - |
|
1538 |
|
| - |
|
1539 |
for (FranchiseeVisit franchiseeVisit : authfranchiseeVisit) {
|
| - |
|
1540 |
|
| - |
|
1541 |
VisitRequest visitRequest = visitRequests.stream()
|
| - |
|
1542 |
.filter(x -> x.getVisitId() == franchiseeVisit.getId()
|
| - |
|
1543 |
&& x.getCreatedBy() == franchiseeVisit.getAuthId())
|
| - |
|
1544 |
.findAny().orElse(null);
|
| - |
|
1545 |
|
| - |
|
1546 |
CustomRetailer customRetailer = retailerService
|
| - |
|
1547 |
.getFofoRetailer(franchiseeVisit.getFofoId());
|
| - |
|
1548 |
VisitDescriptionModel visitDescriptionModel = new VisitDescriptionModel();
|
| - |
|
1549 |
visitDescriptionModel.setVisitId(visitRequest.getId());
|
| - |
|
1550 |
visitDescriptionModel.setVisitName(franchiseeVisit.getPartnerName());
|
| - |
|
1551 |
visitDescriptionModel.setCity(customRetailer.getAddress().getCity());
|
| - |
|
1552 |
visitDescriptionModel.setState(customRetailer.getAddress().getState());
|
| - |
|
1553 |
visitDescriptionModel.setScheduleTime(
|
| - |
|
1554 |
franchiseeVisit.getFranchiseeActivity().getSchelduleTimestamp());
|
| - |
|
1555 |
visitDescriptionModel.setStatus(visitRequest.getStatus());
|
| - |
|
1556 |
visitDescriptionModel.setRemarks(franchiseeVisit.getAgenda());
|
| - |
|
1557 |
visitDescriptionModel.setVisitType(visitRequest.getVisitType());
|
| - |
|
1558 |
|
| - |
|
1559 |
visitDescriptions.add(visitDescriptionModel);
|
| - |
|
1560 |
|
| - |
|
1561 |
}
|
| - |
|
1562 |
}
|
| - |
|
1563 |
|
| - |
|
1564 |
userVisitModel.setVisitDescriptions(visitDescriptions);
|
| - |
|
1565 |
LOGGER.info("userVisit {}", userVisitModel);
|
| - |
|
1566 |
|
| - |
|
1567 |
if (userVisitModel.getAuthUser() != null) {
|
| - |
|
1568 |
userVisits.add(userVisitModel);
|
| - |
|
1569 |
}
|
| - |
|
1570 |
|
| - |
|
1571 |
}
|
| - |
|
1572 |
|
| - |
|
1573 |
visitSummaryModel.setUserVisits(userVisits);
|
| - |
|
1574 |
|
| - |
|
1575 |
visitSummary.add(visitSummaryModel);
|
| - |
|
1576 |
|
| - |
|
1577 |
}
|
| - |
|
1578 |
|
| - |
|
1579 |
}
|
| - |
|
1580 |
|
| - |
|
1581 |
}
|
| - |
|
1582 |
return responseSender.ok(visitSummary);
|
| - |
|
1583 |
|
| - |
|
1584 |
}
|
| - |
|
1585 |
|
| - |
|
1586 |
@RequestMapping(value = "/visitRequest", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
|
| - |
|
1587 |
public ResponseEntity<?> visitRequest(HttpServletRequest request, @RequestParam(name = "gmailId") String gmailId,
|
| - |
|
1588 |
@RequestParam(name = "visitId") int visitId, @RequestParam(name = "status") VisitStatus status, Model model)
|
| - |
|
1589 |
throws Exception {
|
| - |
|
1590 |
AuthUser authUser = authRepository.selectByGmailId(gmailId);
|
| - |
|
1591 |
|
| - |
|
1592 |
VisitRequest visitRequest = visitRequestRepository.selectById(visitId);
|
| - |
|
1593 |
visitRequest.setActionedBy(authUser.getId());
|
| - |
|
1594 |
visitRequest.setStatus(status);
|
| - |
|
1595 |
visitRequest.setUpdatedTimestamp(LocalDateTime.now());
|
| - |
|
1596 |
if (status.equals(VisitStatus.approved)) {
|
| - |
|
1597 |
visitRequest.setApprovedTimestamp(LocalDateTime.now());
|
| - |
|
1598 |
}
|
| - |
|
1599 |
|
| - |
|
1600 |
SendNotificationModel sendNotificationModel = new SendNotificationModel();
|
| - |
|
1601 |
sendNotificationModel.setCampaignName("Visit Request");
|
| - |
|
1602 |
sendNotificationModel.setExpiresat(LocalDateTime.now().plusDays(1));
|
| - |
|
1603 |
sendNotificationModel.setTitle("Visit Request");
|
| - |
|
1604 |
String message = "Visit Request has been " + status + " for scheduled time on "
|
| - |
|
1605 |
+ visitRequest.getScheduleTimestamp().toLocalDate();
|
| - |
|
1606 |
|
| - |
|
1607 |
sendNotificationModel.setMessage(message);
|
| - |
|
1608 |
sendNotificationModel.setMessageType(MessageType.notification);
|
| - |
|
1609 |
User user = userRepository.selectByEmailId(gmailId);
|
| - |
|
1610 |
sendNotificationModel.setUserIds(new ArrayList<>(user.getId()));
|
| - |
|
1611 |
|
| - |
|
1612 |
notificationService.sendNotificationToAll(sendNotificationModel);
|
| - |
|
1613 |
|
| - |
|
1614 |
return responseSender.ok(true);
|
| - |
|
1615 |
|
| - |
|
1616 |
}
|
| - |
|
1617 |
|
| 1311 |
}
|
1618 |
}
|
| 1312 |
|
1619 |
|