Subversion Repositories SmartDukaan

Rev

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

Rev 33717 Rev 33719
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 {