| Line 44... |
Line 44... |
| 44 |
import org.springframework.transaction.annotation.Transactional;
|
44 |
import org.springframework.transaction.annotation.Transactional;
|
| 45 |
import org.springframework.ui.Model;
|
45 |
import org.springframework.ui.Model;
|
| 46 |
import org.springframework.web.bind.annotation.*;
|
46 |
import org.springframework.web.bind.annotation.*;
|
| 47 |
|
47 |
|
| 48 |
import javax.servlet.http.HttpServletRequest;
|
48 |
import javax.servlet.http.HttpServletRequest;
|
| - |
|
49 |
import java.time.Instant;
|
| - |
|
50 |
import java.time.LocalDateTime;
|
| 49 |
import java.time.*;
|
51 |
import java.time.ZoneId;
|
| 50 |
import java.util.*;
|
52 |
import java.util.*;
|
| 51 |
import java.util.stream.Collectors;
|
53 |
import java.util.stream.Collectors;
|
| 52 |
|
54 |
|
| 53 |
|
55 |
|
| 54 |
@Controller
|
56 |
@Controller
|
| Line 145... |
Line 147... |
| 145 |
public String fetchMobileNumberForUpSale(HttpServletRequest request, Model model) throws Exception {
|
147 |
public String fetchMobileNumberForUpSale(HttpServletRequest request, Model model) throws Exception {
|
| 146 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
148 |
LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
|
| 147 |
AuthUser user = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
149 |
AuthUser user = authRepository.selectByEmailOrMobile(loginDetails.getEmailId());
|
| 148 |
|
150 |
|
| 149 |
Map<String, Set<Integer>> pp = csService.getAuthUserPartnerIdMappingByCategoryIds(Arrays.asList(ProfitMandiConstants.UPSELLING), true);
|
151 |
Map<String, Set<Integer>> pp = csService.getAuthUserPartnerIdMappingByCategoryIds(Arrays.asList(ProfitMandiConstants.UPSELLING), true);
|
| 150 |
LOGGER.info("pp pp - {}", pp);
|
- |
|
| 151 |
Set<Integer> fofoIds = new HashSet<>(pp.get(user.getEmailId()));
|
152 |
Set<Integer> fofoIds = new HashSet<>(pp.get(user.getEmailId()));
|
| 152 |
|
153 |
|
| 153 |
LOGGER.info("fofoIds- {}", fofoIds);
|
- |
|
| 154 |
|
- |
|
| 155 |
|
- |
|
| 156 |
LocalDate currentYearJune21 = LocalDate.of(LocalDate.now().getYear(), Month.JUNE, 21);
|
- |
|
| 157 |
LocalDateTime startDate = currentYearJune21.atStartOfDay();
|
- |
|
| 158 |
LocalDateTime endDate = LocalDateTime.now();
|
154 |
LocalDateTime endDate = LocalDateTime.now();
|
| 159 |
|
155 |
|
| 160 |
|
156 |
|
| 161 |
List<UpSaleAgentCollection> upSaleAgentCollections = upSaleAgentCollectionRepository.selectByAgentId(user.getId());
|
157 |
List<UpSaleAgentCollection> upSaleAgentCollections = upSaleAgentCollectionRepository.selectByAgentId(user.getId());
|
| 162 |
double totalProductSaleAmount = upSaleAgentCollections.stream()
|
158 |
double totalProductSaleAmount = upSaleAgentCollections.stream()
|
| Line 176... |
Line 172... |
| 176 |
FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(upSaleCall.getOriginalOrderId());
|
172 |
FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(upSaleCall.getOriginalOrderId());
|
| 177 |
|
173 |
|
| 178 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
174 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
| 179 |
if (fofoIds.contains(fofoOrder.getFofoId())) {
|
175 |
if (fofoIds.contains(fofoOrder.getFofoId())) {
|
| 180 |
if (customer != null) {
|
176 |
if (customer != null) {
|
| 181 |
String mobile = customer.getMobileNumber();
|
- |
|
| 182 |
|
- |
|
| 183 |
// Update the UpSaleCall status to FETCHED and set reschedule time to null
|
- |
|
| 184 |
upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
|
177 |
upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
|
| 185 |
upSaleCall.setRescheduledTimestamp(null);
|
178 |
upSaleCall.setRescheduledTimestamp(null);
|
| 186 |
|
179 |
|
| 187 |
LOGGER.info("Processing Rescheduled UpSaleCall {}", upSaleCall);
|
180 |
LOGGER.info("Processing Rescheduled UpSaleCall {}", upSaleCall);
|
| 188 |
|
181 |
|
| Line 204... |
Line 197... |
| 204 |
Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
|
197 |
Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
|
| 205 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
|
198 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
|
| 206 |
|
199 |
|
| 207 |
Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
|
200 |
Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
|
| 208 |
.collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
|
201 |
.collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
|
| 209 |
LOGGER.info("fofoLineItemMap {}", fofoLineItemMap);
|
- |
|
| 210 |
|
202 |
|
| 211 |
List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
|
203 |
List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
|
| 212 |
LOGGER.info("upSaleCallStatuses {}", upSaleCallStatuses);
|
- |
|
| 213 |
|
204 |
|
| 214 |
model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
|
205 |
model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
|
| 215 |
model.addAttribute("fofoOrder", fofoOrder);
|
206 |
model.addAttribute("fofoOrder", fofoOrder);
|
| 216 |
model.addAttribute("customer", customer);
|
207 |
model.addAttribute("customer", customer);
|
| 217 |
model.addAttribute("itemDetails", itemDetails);
|
208 |
model.addAttribute("itemDetails", itemDetails);
|
| Line 226... |
Line 217... |
| 226 |
}
|
217 |
}
|
| 227 |
}
|
218 |
}
|
| 228 |
}
|
219 |
}
|
| 229 |
} catch (Exception e) {
|
220 |
} catch (Exception e) {
|
| 230 |
// If no rescheduled calls found, fall back to original logic
|
221 |
// If no rescheduled calls found, fall back to original logic
|
| 231 |
List<UpSaleOrder> upSaleOrders = upSaleOrderRepository.selectAllBetweenDates(startDate, endDate);
|
- |
|
| 232 |
|
222 |
|
| - |
|
223 |
UpSaleOrder last48hourLatestOrder = this.getOldestUpSaleOrderFromLast48Hours(fofoIds);
|
| - |
|
224 |
|
| - |
|
225 |
last48hourLatestOrder.setFetched(true);
|
| - |
|
226 |
|
| 233 |
for (UpSaleOrder upSaleOrder : upSaleOrders) {
|
227 |
LOGGER.info("last48hourLatestOrder {}", last48hourLatestOrder);
|
| - |
|
228 |
|
| 234 |
boolean exists = upSaleCallRepository.existsOrderId(upSaleOrder.getOrderId());
|
229 |
boolean exists = upSaleCallRepository.existsOrderId(last48hourLatestOrder.getOrderId());
|
| 235 |
if (!exists) {
|
230 |
if (!exists) {
|
| 236 |
FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(upSaleOrder.getOrderId());
|
231 |
FofoOrder fofoOrder = fofoOrderRepository.selectByOrderId(last48hourLatestOrder.getOrderId());
|
| 237 |
if (fofoIds.contains(fofoOrder.getFofoId())) {
|
232 |
if (fofoIds.contains(fofoOrder.getFofoId())) {
|
| 238 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
233 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
| 239 |
if (customer != null) {
|
234 |
if (customer != null) {
|
| 240 |
String mobile = customer.getMobileNumber();
|
235 |
String mobile = customer.getMobileNumber();
|
| 241 |
boolean mobileExists = upSaleCallRepository.existsByMobileAndOrderId(mobile, fofoOrder.getId());
|
- |
|
| 242 |
if (!mobileExists) {
|
- |
|
| 243 |
UpSaleCall upSaleCall = new UpSaleCall();
|
236 |
UpSaleCall upSaleCall = new UpSaleCall();
|
| 244 |
upSaleCall.setAgentId(user.getId());
|
237 |
upSaleCall.setAgentId(user.getId());
|
| 245 |
upSaleCall.setMobile(mobile);
|
238 |
upSaleCall.setMobile(mobile);
|
| 246 |
upSaleCall.setOriginalOrderId(fofoOrder.getId());
|
239 |
upSaleCall.setOriginalOrderId(fofoOrder.getId());
|
| 247 |
upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
|
240 |
upSaleCall.setStatus(UpSaleCallStatus.FETCHED);
|
| 248 |
upSaleCall.setCreatedTimestamp(LocalDateTime.now());
|
241 |
upSaleCall.setCreatedTimestamp(LocalDateTime.now());
|
| 249 |
upSaleCallRepository.persist(upSaleCall);
|
242 |
upSaleCallRepository.persist(upSaleCall);
|
| 250 |
|
243 |
|
| 251 |
LOGGER.info("Processing UpSaleOrder {}", upSaleOrder);
|
244 |
LOGGER.info("Processing UpSaleOrder {}", last48hourLatestOrder);
|
| 252 |
|
245 |
|
| 253 |
List<Map<String, Object>> itemDetails = new ArrayList<>();
|
246 |
List<Map<String, Object>> itemDetails = new ArrayList<>();
|
| 254 |
List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
247 |
List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
|
| 255 |
|
248 |
|
| 256 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
249 |
for (FofoOrderItem fofoOrderItem : fofoOrderItems) {
|
| Line 269... |
Line 262... |
| 269 |
Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
|
262 |
Set<Integer> fofoOrderItemIds = fofoOrderItems.stream().map(FofoOrderItem::getId).collect(Collectors.toSet());
|
| 270 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
|
263 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByFofoOrderItemIds(fofoOrderItemIds);
|
| 271 |
|
264 |
|
| 272 |
Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
|
265 |
Map<Integer, List<FofoLineItem>> fofoLineItemMap = fofoLineItems.stream()
|
| 273 |
.collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
|
266 |
.collect(Collectors.groupingBy(FofoLineItem::getFofoOrderItemId));
|
| 274 |
LOGGER.info("fofoLineItemMap {}", fofoLineItemMap);
|
- |
|
| 275 |
|
267 |
|
| 276 |
List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
|
268 |
List<UpSaleCallStatus> upSaleCallStatuses = new ArrayList<>(Arrays.asList(UpSaleCallStatus.values()));
|
| 277 |
LOGGER.info("upSaleCallStatuses {}", upSaleCallStatuses);
|
- |
|
| 278 |
|
269 |
|
| 279 |
model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
|
270 |
model.addAttribute("upSaleCallStatuses", upSaleCallStatuses);
|
| 280 |
model.addAttribute("fofoOrder", fofoOrder);
|
271 |
model.addAttribute("fofoOrder", fofoOrder);
|
| 281 |
model.addAttribute("customer", customer);
|
272 |
model.addAttribute("customer", customer);
|
| 282 |
model.addAttribute("itemDetails", itemDetails);
|
273 |
model.addAttribute("itemDetails", itemDetails);
|
| Line 285... |
Line 276... |
| 285 |
model.addAttribute("stateNames",
|
276 |
model.addAttribute("stateNames",
|
| 286 |
stateRepository.selectAll().stream().map(State::getName).collect(Collectors.toList()));
|
277 |
stateRepository.selectAll().stream().map(State::getName).collect(Collectors.toList()));
|
| 287 |
model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
|
278 |
model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
|
| 288 |
|
279 |
|
| 289 |
return "up-sale-call";
|
280 |
return "up-sale-call";
|
| 290 |
}
|
- |
|
| - |
|
281 |
|
| 291 |
}
|
282 |
}
|
| 292 |
}
|
283 |
}
|
| 293 |
}
|
284 |
}
|
| 294 |
}
|
285 |
|
| 295 |
}
|
286 |
}
|
| 296 |
|
287 |
|
| 297 |
|
288 |
|
| 298 |
LOGGER.info("No valid UpSaleOrder found for up-sale call.");
|
289 |
LOGGER.info("No valid UpSaleOrder found for up-sale call.");
|
| 299 |
model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
|
290 |
model.addAttribute("totalProductSaleAmount", totalProductSaleAmount);
|
| 300 |
model.addAttribute("message", "No valid UpSaleOrder found.");
|
291 |
model.addAttribute("message", "No valid UpSaleOrder found.");
|
| 301 |
return "up-sale-call";
|
292 |
return "up-sale-call";
|
| 302 |
}
|
293 |
}
|
| 303 |
|
294 |
|
| - |
|
295 |
UpSaleOrder getOldestUpSaleOrderFromLast48Hours(Set<Integer> fofoIds) {
|
| - |
|
296 |
LocalDateTime startDateTime = LocalDateTime.now().minusDays(2); // 48 hours ago
|
| - |
|
297 |
return upSaleOrderRepository.findOldestUpSaleOrderByFofoIdsLast48Hours(fofoIds, startDateTime);
|
| - |
|
298 |
}
|
| - |
|
299 |
|
| 304 |
@RequestMapping(value = "/generatePaymentLink", method = RequestMethod.POST)
|
300 |
@RequestMapping(value = "/generatePaymentLink", method = RequestMethod.POST)
|
| 305 |
public ResponseEntity<String> generatePaymentLink(HttpServletRequest request, Model model, @RequestBody PaymentLinkDetailModel paymentLinkDetailModel) {
|
301 |
public ResponseEntity<String> generatePaymentLink(HttpServletRequest request, Model model, @RequestBody PaymentLinkDetailModel paymentLinkDetailModel) {
|
| 306 |
double amount;
|
302 |
double amount;
|
| 307 |
LOGGER.info("paymnetlinkmodel {}", paymentLinkDetailModel);
|
303 |
LOGGER.info("paymnetlinkmodel {}", paymentLinkDetailModel);
|
| 308 |
try {
|
304 |
try {
|