Subversion Repositories SmartDukaan

Rev

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

Rev 37125 Rev 37651
Line 291... Line 291...
291
        // selectAllByIds returns id-desc; preserve the bucket's newest-first order.
291
        // selectAllByIds returns id-desc; preserve the bucket's newest-first order.
292
        Map<Integer, Lead> leadById = new HashMap<>();
292
        Map<Integer, Lead> leadById = new HashMap<>();
293
        for (Lead l : leadRepository.selectAllByIds(ids)) {
293
        for (Lead l : leadRepository.selectAllByIds(ids)) {
294
            leadById.put(l.getId(), l);
294
            leadById.put(l.getId(), l);
295
        }
295
        }
-
 
296
        List<Lead> ordered = new ArrayList<>(ids.size());
-
 
297
        for (Integer id : ids) {
-
 
298
            Lead l = leadById.get(id);
-
 
299
            if (l != null) {
-
 
300
                ordered.add(l);
-
 
301
            }
-
 
302
        }
-
 
303
        return toRows(ordered);
-
 
304
    }
-
 
305
 
-
 
306
    /**
-
 
307
     * Free-text lookup for the dashboard search box: LMS id / retailer / business / mobile / city.
-
 
308
     * Same row shape as {@link #drill}, so results render in the same drawer table.
-
 
309
     */
-
 
310
    public List<Map<String, Object>> search(String term) {
-
 
311
        if (term == null || term.trim().isEmpty()) {
-
 
312
            return new ArrayList<>();
-
 
313
        }
-
 
314
        return toRows(leadRepository.selectByGlobalSearch(term.trim(), DRILL_LIMIT));
-
 
315
    }
-
 
316
 
-
 
317
    /** Shared drawer-row mapping for {@link #drill} and {@link #search}; owner names fetched in one batch. */
-
 
318
    private List<Map<String, Object>> toRows(List<Lead> leads) {
-
 
319
        List<Map<String, Object>> out = new ArrayList<>();
-
 
320
        if (leads == null || leads.isEmpty()) {
-
 
321
            return out;
-
 
322
        }
296
        // Owner names in one batch.
323
        // Owner names in one batch.
297
        java.util.Set<Integer> ownerIds = new java.util.HashSet<>();
324
        java.util.Set<Integer> ownerIds = new java.util.HashSet<>();
298
        for (Lead l : leadById.values()) {
325
        for (Lead l : leads) {
299
            if (l.getAssignTo() > 0) {
326
            if (l.getAssignTo() > 0) {
300
                ownerIds.add(l.getAssignTo());
327
                ownerIds.add(l.getAssignTo());
301
            }
328
            }
302
        }
329
        }
303
        Map<Integer, AuthUser> owners = new HashMap<>();
330
        Map<Integer, AuthUser> owners = new HashMap<>();
Line 305... Line 332...
305
            for (AuthUser u : authRepository.selectByIds(new ArrayList<>(ownerIds))) {
332
            for (AuthUser u : authRepository.selectByIds(new ArrayList<>(ownerIds))) {
306
                owners.put(u.getId(), u);
333
                owners.put(u.getId(), u);
307
            }
334
            }
308
        }
335
        }
309
 
336
 
310
        for (Integer id : ids) {
337
        for (Lead l : leads) {
311
            Lead l = leadById.get(id);
-
 
312
            if (l == null) {
-
 
313
                continue;
-
 
314
            }
-
 
315
            LeadStage eff = l.getEffectiveStage();
338
            LeadStage eff = l.getEffectiveStage();
316
            AuthUser owner = owners.get(l.getAssignTo());
339
            AuthUser owner = owners.get(l.getAssignTo());
317
            Map<String, Object> r = new LinkedHashMap<>();
340
            Map<String, Object> r = new LinkedHashMap<>();
318
            r.put("id", l.getId());
341
            r.put("id", l.getId());
319
            r.put("lmsCode", l.getLmsCode() != null ? l.getLmsCode() : ("Lead #" + l.getId()));
342
            r.put("lmsCode", l.getLmsCode() != null ? l.getLmsCode() : ("Lead #" + l.getId()));