Subversion Repositories SmartDukaan

Rev

Rev 36740 | Rev 36761 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
35548 aman 1
$(function () {
2
    $(document).on('click', ".lead", function () {
3
        loadLead("main-content");
4
    });
29598 tejbeer 5
 
35548 aman 6
    $(document).on('click', ".team-commitment", function () {
7
        loadTeamCommitment("main-content");
8
    });
30439 tejbeer 9
 
10
 
35548 aman 11
    $(document).on('click', ".partner-health", function () {
12
        loadPartnerHealth("main-content");
13
    });
29598 tejbeer 14
 
35548 aman 15
    $(document).on('click', ".lead-detail", function () {
16
        loadLeadDetail("main-content");
17
    });
30439 tejbeer 18
 
31370 tejbeer 19
 
35548 aman 20
    $(document).on('click', ".submitCommitment",
21
        function () {
22
            var startDateTime = getDatesFromPicker('input[name="commitmentDate"]').startDate;
23
            doGetAjaxRequestHandler(context + "/getTeamCommitment?date="
24
                + startDateTime, function (response) {
25
                $('.teamcommitmentcontainer').html(response);
31370 tejbeer 26
 
35548 aman 27
            });
28
        });
30439 tejbeer 29
 
30
 
35548 aman 31
    $(document).on('click', ".submitDateWiseLead", function () {
30439 tejbeer 32
 
35769 amit 33
        var startDate = $("#startDate").val();
34
        var endDate = $("#endDate").val();
35548 aman 35
        var status = $("#statusFilter").val();
36
        var color = $("#colorFilter").val();
31370 tejbeer 37
 
35548 aman 38
        if (color == null) {
39
            color = "";
40
        }
31370 tejbeer 41
 
35769 amit 42
        if (startDate && endDate) {
43
            var start = new Date(startDate);
44
            var end = new Date(endDate);
45
            if (end < start) {
46
                alert("End date must be after start date");
47
                return;
48
            }
49
        }
31370 tejbeer 50
 
35769 amit 51
        doGetAjaxRequestHandler(context + "/getOpenLead?leadStatus=" + status + "&color=" + color + "&startDate=" + startDate + "&endDate=" + endDate, function (response) {
35548 aman 52
            $('#' + 'main-content').html(response);
53
        });
29598 tejbeer 54
 
55
 
35548 aman 56
    })
57
    ;$(document).on('click', ".downloadDateWiseLead", function () {
29598 tejbeer 58
 
35769 amit 59
        var startDate = $("#startDate").val();
60
        var endDate = $("#endDate").val();
35548 aman 61
        var status = $("#statusFilter").val();
62
        var color = $("#colorFilter").val();
29598 tejbeer 63
 
35548 aman 64
        if (color == null) {
65
            color = "";
66
        }
29598 tejbeer 67
 
35769 amit 68
        if (startDate && endDate) {
69
            var start = new Date(startDate);
70
            var end = new Date(endDate);
71
            if (end < start) {
72
                alert("End date must be after start date");
73
                return;
74
            }
75
        }
76
 
77
        let endPoint = `${context}/downloadDateWiseLead?leadStatus=${status}&color=${color}&startDate=${startDate}&endDate=${endDate}`;
35548 aman 78
        window.location.href = endPoint;
31249 tejbeer 79
 
35548 aman 80
    });
34650 aman.kumar 81
 
82
 
35548 aman 83
    $(document).on('click', ".visit-request-plan", function () {
34650 aman.kumar 84
 
35548 aman 85
        doGetAjaxRequestHandler(context + "/visitPlan", function (response) {
86
            $('#' + 'main-content').html(response);
87
        });
34650 aman.kumar 88
 
35548 aman 89
    });
34650 aman.kumar 90
 
35548 aman 91
    $(document).on('click', ".visitPlan", function () {
25980 tejbeer 92
 
35548 aman 93
        let dateWisePlan = $("#dateVisitSearch").val();
31249 tejbeer 94
 
35548 aman 95
        doGetAjaxRequestHandler(context + "/visit/getVisitPlan?date=" + dateWisePlan, function (response) {
96
            $('#' + 'main-content').html(response);
97
        });
31249 tejbeer 98
 
35548 aman 99
    });
31249 tejbeer 100
 
35548 aman 101
    $(document).on('click', ".lead-close", function () {
102
        loadClosedLead("main-content");
103
    });
31249 tejbeer 104
 
35548 aman 105
    $(document).on('click', "#lead-close-paginated .next",
106
        function () {
31249 tejbeer 107
 
35548 aman 108
            var searchText = $("#authUser").val();
109
            // var searchTxt=$("#scheme-search-text").val();
110
            console.log(searchText);
111
            if (typeof (searchText) == "undefined" || !searchText) {
112
                searchText = "";
113
            }
31249 tejbeer 114
 
35548 aman 115
            if ((searchText)) {
116
                var params = {};
117
                params['searchTerm'] = searchText;
118
                loadPaginatedNextItems('/searchLeadPaginated', params,
119
                    'lead-close-paginated', 'close-lead-table',
120
                    'lead-close-container');
121
            } else {
31249 tejbeer 122
 
35548 aman 123
                loadPaginatedNextItems('/getPaginatedClosedLeads', null,
124
                    'lead-close-paginated', 'close-lead-table',
125
                    'lead-close-container');
126
            }
127
            $(this).blur();
128
        });
31249 tejbeer 129
 
35548 aman 130
    $(document).on('click', "#lead-close-paginated .previous",
131
        function () {
132
            var searchText = $("#authUser").val();
133
            // var searchTxt=$("#scheme-search-text").val();
134
            console.log(searchText);
135
            if (typeof (searchText) == "undefined" || !searchText) {
136
                searchText = "";
137
            }
25988 tejbeer 138
 
35548 aman 139
            if ((searchText)) {
140
                var params = {};
141
                params['searchTerm'] = searchText;
142
                loadPaginatedPreviousItems('/searchLeadPaginated', params,
143
                    'lead-close-paginated', 'close-lead-table',
144
                    'lead-close-container');
145
            } else {
146
                loadPaginatedPreviousItems('/getPaginatedClosedLeads',
147
                    null, 'lead-close-paginated', 'close-lead-table',
148
                    'lead-close-container');
149
            }
150
            $(this).blur();
151
        });
25988 tejbeer 152
 
35548 aman 153
    $(document).on('click', "#close-lead-search-button", function () {
154
        var searchText = $("#authUser").val();
155
        if (typeof (searchText) == "undefined" || !searchText) {
156
            searchText = "";
157
        }
158
        loadLeadSearchInfo(searchText);
159
    });
25988 tejbeer 160
 
35548 aman 161
    $(document).on("keyup", "#authUser", function (e) {
162
        var keyCode = e.keyCode || e.which;
163
        if (keyCode == 13) {
164
            $("#close-lead-search-button").click();
165
        }
166
    });
167
    $(document).on('click', ".view",
168
        function () {
169
            var id = $(this).data('requestid');
170
            console.log(id);
171
            doGetAjaxRequestHandler(context + "/getLeadActivity?leadId="
172
                + id, function (response) {
25988 tejbeer 173
 
35548 aman 174
                console.log(response)
25988 tejbeer 175
 
35548 aman 176
                $('#fetchLeadActivityData .modal-content').html(response);
25988 tejbeer 177
 
35548 aman 178
            });
179
        });
25988 tejbeer 180
 
35548 aman 181
    $(document).on('click', ".newLead", function () {
182
        $('#newEntryLeadModal').modal('show');
183
        $("#scheduleTime").hide();
184
    });
25988 tejbeer 185
 
35548 aman 186
    $(document).on('click', ".show-lead", function () {
187
        var status = $("#statusFilter").val();
188
        doGetAjaxRequestHandler(context + "/getOpenLead?leadStatus=" + status, function (response) {
189
            $('#' + 'main-content').html(response);
190
        });
191
    });
25980 tejbeer 192
 
31370 tejbeer 193
 
35548 aman 194
    $(document).on('click', ".show-colowise-lead", function () {
195
        var status = $("#statusFilter").val();
196
        var color = $("#colorFilter").val();
197
        doGetAjaxRequestHandler(context + "/getOpenLead?leadStatus=" + status + "&color=" + color, function (response) {
198
            $('#' + 'main-content').html(response);
199
        });
200
    });
25980 tejbeer 201
 
35548 aman 202
    $(document).on('click', "#uploadIvoryLead", function () {
25980 tejbeer 203
 
35548 aman 204
        window.location.href = context + "/downloadIvoryLead";
205
    });
25980 tejbeer 206
 
35548 aman 207
    $(document).on('click', ".submitLeadGenerate", function () {
27609 tejbeer 208
 
35548 aman 209
        console.log("hello");
210
        if (confirm('Confirm upload ?')) {
211
            var fileSelector = $(this)[0];
212
            if (fileSelector != undefined) {
213
                var url = `${context}/csvFileAndSetLead`;
214
                console.log(url);
215
                var file = $(".fileLeadGenerate")[0].files[0];
216
                let fileInput = $(this);
217
                console.log("file" + file);
218
                console.log("fileInput" + fileInput);
219
                doAjaxUploadRequestHandler(
220
                    url,
221
                    'POST',
222
                    file, function (response) {
27642 tejbeer 223
 
35548 aman 224
                        console.log("reponse" + response);
31370 tejbeer 225
 
35548 aman 226
                        if (response == true) {
227
                            alert("successfully uploaded");
31370 tejbeer 228
 
229
 
35548 aman 230
                        }
231
                    });
29598 tejbeer 232
 
35548 aman 233
            }
234
        } else {
235
            // Do nothing!
236
        }
237
    });
27642 tejbeer 238
 
239
 
35548 aman 240
    $(document).on('click', ".lead-request",
241
        function () {
29598 tejbeer 242
 
35548 aman 243
            var firstName = $('input[name="firstName"]').val();
244
            var lastName = $('input[name="lastName"]').val();
245
            var mobile = $('input[name="mobile"]').val();
246
            var address = $('input[name="address"]').val();
247
            var status = $("#status").val();
248
            var city = $('input[name="city"]').val();
249
            var state = $("#state").val();
250
            var remark = $("#createRemark").val();
251
            var assignTo = $("#createAssignTo").val();
252
            var source = $("#leadSource").val();
253
            var communicationType = $("#communicationTye").val();
29427 manish 254
 
35548 aman 255
            var conversionprobability = $("#conversionprobabilit").val();
29598 tejbeer 256
 
257
 
35548 aman 258
            var outletName = $('input[name="leadoutletName"]').val();
259
            var counterSize = $('input[name="leadcounterSize"]').val();
260
            var table = document.getElementById('brandtable');
261
            var brandValueJson = [];
262
            var leadBrands;
29598 tejbeer 263
 
35548 aman 264
            console.log(conversionprobability)
29598 tejbeer 265
 
266
 
35548 aman 267
            if (firstName === "" && lastName === "" && mobile === ""
268
                && address === "" && status === "" && city === ""
269
                && state === "" && remark === "" && source === "") {
270
                alert("Field can't be empty");
271
                return;
272
            }
29598 tejbeer 273
 
25980 tejbeer 274
 
35548 aman 275
            if (firstName === "") {
276
                alert("First Name is required");
277
                return;
278
            }
279
            if (lastName === "") {
280
                alert("Last Name is required");
281
                return;
282
            }
283
            if (mobile === "") {
284
                alert("Mobile is required");
285
                return;
286
            }
287
            if (status === "") {
288
                alert("Status is required");
289
                return;
290
            }
291
            if (address === "") {
292
                alert("address is required");
293
                return;
294
            }
295
            if (city === "") {
296
                alert("city is required");
297
                return;
298
            }
32471 tejbeer 299
 
35548 aman 300
            if (state === "") {
301
                alert("state is required");
302
                return;
303
            }
304
            if (source === "") {
305
                alert("Source is required")
306
                return;
307
            }
32471 tejbeer 308
 
35548 aman 309
            if (remark === "") {
310
                alert("Remark is required");
311
                return;
312
            }
32471 tejbeer 313
 
35548 aman 314
            if (conversionprobability === "") {
315
                alert("Conversion Probability is required");
316
                return;
317
            }
318
            if (status == "followUp" || status == "pending" || status == "finalized") {
319
                if (outletName === "") {
320
                    alert("Outlet Name is required");
321
                    return;
322
                }
25980 tejbeer 323
 
35548 aman 324
                if (counterSize === "") {
325
                    alert("Counter Size is required");
326
                    return;
327
                }
32464 tejbeer 328
 
35548 aman 329
                if (localStorage.getItem("frontph") == "undefined" && localStorage.getItem("frontph") == null) {
330
                    alert("Front Document is required");
331
                    return;
332
                }
32464 tejbeer 333
 
35548 aman 334
                if (localStorage.getItem("internalMarketh") == "undefined" || localStorage.getItem("internalMarketh") == null) {
335
                    alert("Front With Market Document is required");
336
                    return;
337
                }
25980 tejbeer 338
 
35548 aman 339
                if (localStorage.getItem("leftShoth") == "undefined" || localStorage.getItem("leftShoth") == null) {
340
                    alert("Internal Left Shot Document is required");
341
                    return;
342
                }
32464 tejbeer 343
 
35548 aman 344
                if (localStorage.getItem("leftWallh") == "undefined" || localStorage.getItem("leftWallh") == null) {
345
                    alert("Internal Left Wall Document is required");
346
                    return;
347
                }
25980 tejbeer 348
 
349
 
35548 aman 350
                if (localStorage.getItem("rightWallh") == "undefined" || localStorage.getItem("rightWallh") == null) {
351
                    alert("Internal Right Wall Document is required");
352
                    return;
353
                }
25980 tejbeer 354
 
32464 tejbeer 355
 
35548 aman 356
                for (i = 1; i < table.rows.length; i++) {
32464 tejbeer 357
 
35548 aman 358
                    var objCells = table.rows[i].cells;
32464 tejbeer 359
 
35548 aman 360
                    leadBrands = {
361
                        brand: objCells[0].innerText,
362
                        value: objCells[1].getElementsByTagName('input')[0].value
363
                    }
364
                    brandValueJson.push(leadBrands);
365
                }
32464 tejbeer 366
 
367
 
35548 aman 368
            }
32464 tejbeer 369
 
370
 
35548 aman 371
            var leaddetailData = {}
372
            leaddetailData['firstName'] = firstName;
373
            leaddetailData['lastName'] = lastName
374
            leaddetailData['mobile'] = mobile
375
            leaddetailData['address'] = address
376
            leaddetailData['city'] = city
377
            leaddetailData['state'] = state
378
            leaddetailData['status'] = status
379
            leaddetailData['remark'] = remark
380
            leaddetailData['assignTo'] = assignTo
381
            leaddetailData['source'] = source
382
            leaddetailData['colorCheck'] = conversionprobability
32464 tejbeer 383
 
384
 
35548 aman 385
            if (status == "followUp") {
386
                leaddetailData['schelduleTimestamp'] = getDatesFromPicker('#scheduleTime').startDate;
32464 tejbeer 387
 
35548 aman 388
                leaddetailData['communicationType'] = communicationType
389
            }
32464 tejbeer 390
 
391
 
35548 aman 392
            leaddetailData['outletName'] = outletName;
32464 tejbeer 393
 
35548 aman 394
            leaddetailData['counterSize'] = counterSize;
32464 tejbeer 395
 
396
 
35548 aman 397
            leaddetailData['leadBrands'] = brandValueJson;
32464 tejbeer 398
 
35548 aman 399
            console.log(localStorage.getItem("frontp"));
32464 tejbeer 400
 
401
 
35548 aman 402
            leaddetailData['frontp'] = localStorage
403
                .getItem("frontph");
31249 tejbeer 404
 
32464 tejbeer 405
 
35548 aman 406
            leaddetailData['frontWithMarket'] = localStorage
407
                .getItem("internalMarketh");
32464 tejbeer 408
 
409
 
35548 aman 410
            leaddetailData['internalLongShot'] = localStorage
411
                .getItem("leftShoth");
32464 tejbeer 412
 
413
 
35548 aman 414
            leaddetailData['internalLeftWall'] = localStorage
415
                .getItem("leftWallh");
32464 tejbeer 416
 
417
 
35548 aman 418
            leaddetailData['internalRightWall'] = localStorage
419
                .getItem("rightWallh");
32464 tejbeer 420
 
35548 aman 421
            console.log(leaddetailData);
32464 tejbeer 422
 
35548 aman 423
            if (confirm("Are you sure you want to add lead!") == true) {
424
                doPostAjaxRequestWithJsonHandler(context + "/createLead",
425
                    JSON.stringify(leaddetailData), function (response) {
426
                        if (response == 'true') {
427
                            alert("successfully Add");
428
                            $('#newEntryLeadModal').modal('hide');
429
                            $('.modal-backdrop').remove();
430
                            loadLead("main-content");
431
                        } else {
432
                            alert(response);
433
                        }
434
                    });
32464 tejbeer 435
 
35548 aman 436
                return false;
437
            }
438
        });
36642 ranu 439
    window.leadId = null;
35548 aman 440
    var row = null;
441
    $(document).on('click', ".editLead", function () {
442
        $('#editLeadData').modal('show');
32464 tejbeer 443
 
35548 aman 444
        $("#remark").val("");
445
        $("#assignTo").val("");
446
        $("#editStatus").val("");
447
        $("#reason").val("");
448
        $("#editCity").val("");
449
        $("#editState").val("");
35769 amit 450
        $("#editSource").val("");
35548 aman 451
        $("#editScheduleTime").hide();
32464 tejbeer 452
 
453
 
35548 aman 454
        localStorage.removeItem("frontph");
455
        localStorage.removeItem("leftShoth");
456
        localStorage.removeItem("rightWallh");
457
        localStorage.removeItem("leftWallh");
458
        localStorage.removeItem("internalMarketh");
32464 tejbeer 459
 
35548 aman 460
        row = $(this).closest("tr");
461
        leadId = $(this).data('leadid');
32464 tejbeer 462
 
35548 aman 463
        doAjaxRequestHandler(
464
            context + "/getLeadDetailByLeadId?leadId=" + leadId,
465
            "GET",
466
            function (response) {
32464 tejbeer 467
 
35548 aman 468
                var data = response.response;
469
                if (!data) return;
470
                console.log(data);
471
                $("#editCity").val(data.city);
472
                $("#editState").val(data.state);
473
                $("input[name='outletName']").val(data.outletName);
474
                $("input[name='counterSize']").val(data.counterSize);
475
            }
476
        );
477
    });
32464 tejbeer 478
 
479
 
35548 aman 480
    $(document).on('click', ".lead-edit-request",
481
        function () {
32464 tejbeer 482
 
25980 tejbeer 483
 
35548 aman 484
            console.log(row);
485
            var rowIndex = $(this).closest('tr').prevAll().length;
486
            var remark = $('input[name="remark"]').val();
487
            var assignTo = $("#assignTo").val();
488
            var editStatus = $("#editStatus").val();
489
            var city = $('input[name="editCity"]').val();
490
            var state = $("#editState").val();
491
            var reason = $("#reason").val();
25980 tejbeer 492
 
35769 amit 493
            var startDate = $("#startDate").val();
494
            var endDate = $("#endDate").val();
35548 aman 495
            var leadStatus = $("#statusFilter").val();
496
            var color = $("#colorFilter").val();
497
            var communicationType = $("#communicationType").val();
29640 tejbeer 498
 
35548 aman 499
            var conversionprobability = $("#conversionprobability").val();
35769 amit 500
            var editSource = $("#editSource").val();
29640 tejbeer 501
 
35548 aman 502
            console.log(conversionprobability)
29640 tejbeer 503
 
31473 tejbeer 504
 
35769 amit 505
            console.log(startDate)
35548 aman 506
            console.log(leadStatus)
31370 tejbeer 507
 
35548 aman 508
            console.log(color)
509
            console.log(reason)
31370 tejbeer 510
 
35548 aman 511
            if (remark === "" && assignTo === "" && editStatus === "") {
512
                alert("All fields is required");
513
                return;
514
            }
31370 tejbeer 515
 
35548 aman 516
            if (assignTo === "") {
517
                alert("assignTo is required");
518
                return;
519
            }
31409 tejbeer 520
 
35548 aman 521
            if (remark === "") {
522
                alert("Remark is required");
523
                return;
524
            }
31370 tejbeer 525
 
526
 
35548 aman 527
            if (editStatus === "") {
528
                alert("status is required");
529
                return;
530
            }
31370 tejbeer 531
 
35548 aman 532
            if (editStatus === "notInterested") {
533
                if (reason == null) {
534
                    alert("Reason  is required");
535
                    return;
536
                }
537
            }
538
            var leadActivityData = {}
539
            leadActivityData['id'] = leadId;
540
            leadActivityData['remark'] = remark;
541
            leadActivityData['assignTo'] = assignTo
542
            leadActivityData['status'] = editStatus
543
            leadActivityData['reason'] = reason
36741 ranu 544
            leadActivityData['colorCheck'] = (conversionprobability === "true" || conversionprobability === true)
35548 aman 545
            if (city && city.trim() !== "") {
546
                leadActivityData.city = city;
547
            }
25980 tejbeer 548
 
35548 aman 549
            if (state && state.trim() !== "") {
550
                leadActivityData.state = state;
551
            }
29473 manish 552
 
35769 amit 553
            if (editSource && editSource.trim() !== "") {
554
                leadActivityData.source = editSource;
555
            }
29598 tejbeer 556
 
35769 amit 557
 
35548 aman 558
            if (editStatus == "followUp") {
36642 ranu 559
                leadActivityData['communicationType'] = communicationType
36741 ranu 560
                var beatVal = $('#beatDate').val();
561
                if (beatVal) {
562
                    // Scheduling by beat — derive schedule from the beat's planDate
563
                    // (default to noon) and forward the selection for both VISIT
564
                    // and TELEPHONIC so the lead lands on that beat's route.
565
                    var beatDate = beatVal.split('|')[0];
566
                    leadActivityData['scheldule'] = beatDate + 'T12:00:00';
567
                    leadActivityData['beatSelection'] = beatVal;
568
                } else {
569
                    leadActivityData['scheldule'] = getDatesFromPicker('input[name="editScheduleTime"]').startDate
36642 ranu 570
                }
35548 aman 571
            }
29598 tejbeer 572
 
35548 aman 573
            console.log(leadActivityData);
574
            if (confirm("Are you sure you want to add lead!") == true) {
575
                doPostAjaxRequestWithJsonHandler(context + "/editLead", JSON.stringify(leadActivityData), function (response) {
576
                    console.log(response);
577
                    $('#editLeadData').modal('hide');
578
                    $('.modal-backdrop').remove();
579
                    row.html(response);
580
                });
581
            }
29598 tejbeer 582
 
35548 aman 583
        });
32477 tejbeer 584
 
585
 
35548 aman 586
    $(document).on('click', ".show-partner-health",
587
        function () {
29598 tejbeer 588
 
35548 aman 589
            var email = $("#authUserFilter").val();
25980 tejbeer 590
 
35548 aman 591
            console.log(email)
592
            doGetAjaxRequestHandler(context + "/partnerHealth?email="
593
                + email, function (response) {
594
                console.log(response)
595
                $('#' + 'main-content').html(response);
25980 tejbeer 596
 
35548 aman 597
            });
598
        });
25980 tejbeer 599
 
600
 
35548 aman 601
    $(document).on('click', ".lead-detail-entry",
602
        function () {
28200 tejbeer 603
 
35548 aman 604
            console.log("hello");
605
            var outletName = $('input[name="outletName"]').val();
606
            var counterSize = $('input[name="counterSize"]').val();
607
            var table = document.getElementById('editbrandtable');
608
            var brandValueJson = [];
609
            var leadBrands;
25980 tejbeer 610
 
35548 aman 611
            if (outletName === "") {
612
                alert("Outlet Name is required");
613
                return;
614
            }
29598 tejbeer 615
 
35548 aman 616
            if (counterSize === "") {
617
                alert("Counter Size is required");
618
                return;
619
            }
32471 tejbeer 620
 
35548 aman 621
            if (localStorage.getItem("frontph") == "undefined" && localStorage.getItem("frontph") == null) {
622
                alert("Front Document is required");
623
                return;
624
            }
31249 tejbeer 625
 
35548 aman 626
            if (localStorage.getItem("internalMarketh") == "undefined" || localStorage.getItem("internalMarketh") == null) {
627
                alert("Front With Market Document is required");
628
                return;
629
            }
25980 tejbeer 630
 
35548 aman 631
            if (localStorage.getItem("leftShoth") == "undefined" || localStorage.getItem("leftShoth") == null) {
632
                alert("Internal Left Shot Document is required");
633
                return;
634
            }
27605 tejbeer 635
 
35548 aman 636
            if (localStorage.getItem("leftWallh") == "undefined" || localStorage.getItem("leftWallh") == null) {
637
                alert("Internal Left Wall Document is required");
638
                return;
639
            }
27605 tejbeer 640
 
30185 tejbeer 641
 
35548 aman 642
            if (localStorage.getItem("rightWallh") == "undefined" || localStorage.getItem("rightWallh") == null) {
643
                alert("Internal Right Wall Document is required");
644
                return;
645
            }
30185 tejbeer 646
 
647
 
35548 aman 648
            for (i = 1; i < table.rows.length; i++) {
30185 tejbeer 649
 
35548 aman 650
                var objCells = table.rows[i].cells;
30185 tejbeer 651
 
35548 aman 652
                leadBrands = {
653
                    brand: objCells[0].innerText,
654
                    value: objCells[1].getElementsByTagName('input')[0].value
655
                }
656
                brandValueJson.push(leadBrands);
657
            }
30185 tejbeer 658
 
30416 tejbeer 659
 
35548 aman 660
            var leadDetailObject = {};
31402 tejbeer 661
 
35548 aman 662
            leadDetailObject['leadId'] = leadId;
30416 tejbeer 663
 
664
 
35548 aman 665
            leadDetailObject['outletName'] = outletName;
31370 tejbeer 666
 
35548 aman 667
            leadDetailObject['counterSize'] = counterSize;
31370 tejbeer 668
 
35548 aman 669
            leadDetailObject['leadBrands'] = brandValueJson;
31370 tejbeer 670
 
31402 tejbeer 671
 
35548 aman 672
            console.log(localStorage.getItem("frontp"));
31402 tejbeer 673
 
674
 
35548 aman 675
            leadDetailObject['frontp'] = localStorage
676
                .getItem("frontph");
31402 tejbeer 677
 
678
 
35548 aman 679
            leadDetailObject['frontWithMarket'] = localStorage
680
                .getItem("internalMarketh");
31370 tejbeer 681
 
682
 
35548 aman 683
            leadDetailObject['internalLongShot'] = localStorage
684
                .getItem("leftShoth");
31370 tejbeer 685
 
686
 
35548 aman 687
            leadDetailObject['internalLeftWall'] = localStorage
688
                .getItem("leftWallh");
31370 tejbeer 689
 
690
 
35548 aman 691
            leadDetailObject['internalRightWall'] = localStorage
692
                .getItem("rightWallh");
31370 tejbeer 693
 
35548 aman 694
            console.log(leadDetailObject);
31370 tejbeer 695
 
35548 aman 696
            if (confirm("Are you sure you want to add lead detail!") == true) {
697
                doPostAjaxRequestWithJsonHandler(context + "/leadDetail", JSON.stringify(leadDetailObject), function (response) {
698
                    console.log(response);
699
                    if (response == 'true') {
700
                        alert("Submit Successfully");
701
                    }
31370 tejbeer 702
 
35548 aman 703
                });
704
            }
31370 tejbeer 705
 
35548 aman 706
        });
31370 tejbeer 707
 
708
 
35548 aman 709
    $(document).on('change', '.frontp',
710
        function () {
31370 tejbeer 711
 
35548 aman 712
            if (confirm('Document has been selected, Do you want to upload ?')) {
31370 tejbeer 713
 
35548 aman 714
                var documentId = uploadImage(this, "frontph");
31370 tejbeer 715
 
716
 
35548 aman 717
            } else {
31370 tejbeer 718
 
35548 aman 719
            }
720
        });
31456 tejbeer 721
 
35548 aman 722
    $(document).on('change', '.internalMarket',
723
        function () {
31456 tejbeer 724
 
35548 aman 725
            if (confirm('Document has been selected, Do you want to upload ?')) {
31456 tejbeer 726
 
35548 aman 727
                var documentId = uploadImage(this, "internalMarketh");
31456 tejbeer 728
 
35548 aman 729
            } else {
31456 tejbeer 730
 
35548 aman 731
            }
732
        });
31370 tejbeer 733
 
35548 aman 734
    $(document).on('change', '.leftShot',
31370 tejbeer 735
 
35548 aman 736
        function () {
737
            if (confirm('Document has been selected, Do you want to upload ?')) {
738
                var documentId = uploadImage(this, "leftShoth");
739
            } else {
31370 tejbeer 740
 
35548 aman 741
            }
742
        });
31370 tejbeer 743
 
35548 aman 744
    $(document).on('change', '.leftWall',
745
        function () {
746
            if (confirm('Document has been selected, Do you want to upload ?')) {
747
                var documentId = uploadImage(this, "leftWallh");
748
            } else {
31370 tejbeer 749
 
35548 aman 750
            }
751
        });
31370 tejbeer 752
 
35548 aman 753
    $(document).on('change', '.rightWall',
754
        function () {
755
            if (confirm('Document has been selected, Do you want to upload ?')) {
756
                var documentId = uploadImage(this, "rightWallh");
757
            } else {
758
            }
759
        });
31370 tejbeer 760
 
761
 
25980 tejbeer 762
});
763
 
31404 tejbeer 764
function uploadImage(fileSelector, attrName) {
35548 aman 765
    var documentId;
766
    if (fileSelector != undefined
767
        && fileSelector.files[0] != undefined) {
768
        var url = context
769
            + '/document-upload';
31370 tejbeer 770
 
35548 aman 771
        console.log(url);
772
        var file = fileSelector.files[0];
31370 tejbeer 773
 
35548 aman 774
        console.log(file)
775
        doAjaxUploadRequestHandler(
776
            url,
777
            'POST',
778
            file,
779
            function (response) {
780
                console.log(response)
781
                documentId = response.response.document_id;
782
                console
783
                    .log("documentId : "
784
                        + documentId);
31370 tejbeer 785
 
786
 
35548 aman 787
                localStorage
788
                    .setItem(
789
                        attrName,
790
                        documentId);
31402 tejbeer 791
 
35548 aman 792
            });
793
        return documentId;
794
    }
31370 tejbeer 795
 
796
}
797
 
798
 
25980 tejbeer 799
function loadLead(domId) {
35548 aman 800
    doGetAjaxRequestHandler(context + "/getOpenLead", function (response) {
801
        $('#' + domId).html(response);
802
    });
25980 tejbeer 803
}
804
 
25988 tejbeer 805
function loadClosedLead(domId, searchTerm) {
35548 aman 806
    doGetAjaxRequestHandler(context + "/getClosedLead", function (response) {
807
        $('#' + domId).html(response);
808
    })
25988 tejbeer 809
}
810
 
25980 tejbeer 811
function statusAction() {
35548 aman 812
    var val = $('#status').val();
813
    if (val == "followUp") {
814
        $("#scheduleTime").show();
815
    } else {
816
        $("#scheduleTime").hide();
817
    }
25980 tejbeer 818
 
819
}
27605 tejbeer 820
 
821
 
822
function editStatusAction() {
35548 aman 823
    var val = $('#editStatus').val();
824
    if (val == "followUp") {
36642 ranu 825
        // Show communication type and schedule date
826
        $("#communicationTypeSection").show();
35548 aman 827
        $("#editScheduleTime").show();
36642 ranu 828
        $("#beatDateSelection").hide();
829
 
830
        // Reset communication type and assignTo
831
        $('#communicationType').val('');
832
        $('#assignTo').val('');
833
        $('#assignTo option').show();
834
 
835
        // Check if lead has approved geolocation to decide VISIT option
836
        doAjaxRequestHandler(context + "/lead-geo/check/" + leadId, "GET", function (response) {
837
            var hasGeo = response.response.hasApprovedGeo;
838
            var commDropdown = $('#communicationType');
839
            commDropdown.empty();
840
            commDropdown.append('<option value="" disabled selected>Communication Type</option>');
841
            commDropdown.append('<option value="TELEPHONIC">TELEPHONIC</option>');
842
            if (hasGeo) {
843
                commDropdown.append('<option value="VISIT">VISIT</option>');
844
            }
845
        });
35548 aman 846
    } else {
36642 ranu 847
        $("#communicationTypeSection").hide();
35548 aman 848
        $("#editScheduleTime").hide();
36642 ranu 849
        $("#beatDateSelection").hide();
850
        $('#assignTo option').show();
35548 aman 851
    }
27605 tejbeer 852
 
853
}
854
 
36741 ranu 855
// Clicking or changing status with a pre-existing Assign To selection clears it,
856
// so the user must reconfirm the assignee for the new status (avoids stale assignment).
857
$(document).on('mousedown change', '#editStatus', function () {
858
    if ($('#assignTo').val()) {
859
        $('#assignTo').val('');
860
        $('#assignTo option').show();
861
        $('#beatDate').val('');
862
        $('#beatBadges').empty();
863
        $("#beatDateSelection").hide();
864
        $("#editScheduleTime").show();
865
    }
866
});
867
 
25988 tejbeer 868
function loadLeadSearchInfo(search_text) {
35548 aman 869
    loadSearchLead("main-content", search_text);
25988 tejbeer 870
}
871
 
30185 tejbeer 872
function loadTeamCommitment(domId) {
35548 aman 873
    doGetAjaxRequestHandler(context + "/teamCommitment",
874
        function (response) {
875
            $('#' + domId).html(response);
876
        });
30185 tejbeer 877
}
878
 
31370 tejbeer 879
function loadLeadDetail(domId) {
35548 aman 880
    doGetAjaxRequestHandler(context + "/getLeadDetail",
881
        function (response) {
882
            $('#' + domId).html(response);
883
        });
31370 tejbeer 884
}
885
 
30416 tejbeer 886
function loadPartnerHealth(domId) {
35548 aman 887
    doGetAjaxRequestHandler(context + "/partnerHealth",
888
        function (response) {
889
            $('#' + domId).html(response);
890
        });
30416 tejbeer 891
}
892
 
25988 tejbeer 893
function loadSearchLead(domId, search_text) {
35548 aman 894
    doGetAjaxRequestHandler(context + "/searchLeads?searchTerm=" + search_text,
895
        function (response) {
896
            $('#' + domId).html(response);
897
        });
25988 tejbeer 898
}
33917 ranu 899
 
900
$(document).on('click', ".arr-button-mk",
35548 aman 901
    function () {
902
        var startDate = $('.arr-start_date').val();
903
        doGetAjaxRequestHandler(context + "/rbmTodayArr?startDate=" + startDate, function (response) {
904
            $('#main-content').html(response);
33917 ranu 905
 
35548 aman 906
        });
907
    });
33917 ranu 908
 
909
$(document).on('click', ".rbm-today-arr",
35548 aman 910
    function () {
911
        doGetAjaxRequestHandler(context + "/rbmTodayArr", function (response) {
912
            $('#main-content').html(response);
33917 ranu 913
 
35548 aman 914
        });
915
    });
916
$(document).on('click', '.reassign', function () {
917
    $('#bulkReassignFile').val(null);
918
    $('#bulkReassignFile').click();
919
});
920
 
921
$(document).on('change', '#bulkReassignFile', function () {
922
 
923
    if (!confirm("Confirm bulk reassign upload?")) {
924
        return;
925
    }
926
 
927
    var file = this.files[0];
928
    if (!file) {
929
        alert("No file selected");
930
        return;
931
    }
932
 
933
    doAjaxUploadRequestHandler(
934
        context + "/upload-assign-id",
935
        'POST',
936
        file,
937
        function (response) {
938
            alert("Bulk reassignment completed");
939
            loadLead("main-content");
940
        }
941
    );
942
});
943
 
36642 ranu 944
// ==================== GEO LOCATION HANDLERS ====================
945
 
946
// Communication type change: filter assignTo based on type
947
$(document).on('change', '#communicationType', function () {
948
    var val = $(this).val();
949
    var assignDropdown = $('#assignTo');
950
 
36741 ranu 951
    // Reset beat + restore manual date input
36642 ranu 952
    $('#beatDate').val('');
953
    $('#beatBadges').empty();
954
    $("#beatDateSelection").hide();
36741 ranu 955
    $("#editScheduleTime").show();
36642 ranu 956
 
957
    if (val == 'VISIT') {
958
        // Filter assignTo to sales users only (no BGC)
959
        if (typeof salesUserIds !== 'undefined') {
960
            assignDropdown.find('option').each(function () {
961
                var optVal = parseInt($(this).val());
962
                if (optVal && salesUserIds.indexOf(optVal) === -1) {
963
                    $(this).hide();
964
                } else {
965
                    $(this).show();
966
                }
967
            });
968
        }
969
    } else {
970
        // TELEPHONIC — show all users
971
        assignDropdown.find('option').show();
972
    }
36741 ranu 973
    // Both VISIT and TELEPHONIC offer beat-day slots when an assignee is set
974
    // (TELEPHONIC just uses the beat date as the call slot; backend won't
975
    // attach a LeadRoute for it). Non-sales assignees simply get an empty list.
976
    if (val && assignDropdown.val()) {
977
        fetchBeatDates();
978
    }
36642 ranu 979
});
980
 
36741 ranu 981
// Fetch beats when assignTo changes (works for both VISIT and TELEPHONIC)
982
$(document).on('change', '#assignTo', function () {
36642 ranu 983
    var commType = $('#communicationType').val();
984
    var salesAuthId = $('#assignTo').val();
36741 ranu 985
    if (commType && salesAuthId && leadId) {
36642 ranu 986
        fetchBeatDates();
36741 ranu 987
    } else if (!commType) {
36642 ranu 988
        $("#beatDateSelection").hide();
989
    }
990
});
991
 
992
function fetchBeatDates() {
993
    var salesAuthId = $('#assignTo').val();
994
    if (!salesAuthId || !leadId) return;
995
 
996
    var badgesDiv = $('#beatBadges');
997
    badgesDiv.html('<span style="color:#999; font-size:12px;">Loading beats...</span>');
998
    $("#beatDateSelection").show();
999
    $('#beatDate').val('');
1000
 
1001
    var url = context + "/lead-geo/beat-dates?leadId=" + leadId + "&salesAuthId=" + salesAuthId;
1002
 
1003
    $.ajax({
1004
        url: url,
1005
        method: 'GET',
1006
        success: function (response) {
1007
            var data = response.response || response;
1008
            badgesDiv.empty();
36644 ranu 1009
 
36741 ranu 1010
            // Stores within radius of the lead — show count + top 3 inline.
1011
            var radius = (data && data.radiusKm) ? data.radiusKm : 30;
1012
            var stores = (data && data.nearestStores) || [];
1013
            if (stores.length > 0) {
1014
                var preview = stores.slice(0, 3).map(function (s) {
1015
                    return '<strong>' + s.code + ' - ' + s.name + '</strong> (' + s.distanceKm + ' km)';
1016
                }).join(', ');
1017
                var more = stores.length > 3 ? ' +' + (stores.length - 3) + ' more' : '';
36644 ranu 1018
                badgesDiv.append('<div style="font-size:12px; color:#333; margin-bottom:6px;">' +
36741 ranu 1019
                    stores.length + ' partner store(s) within ' + radius + ' km of this lead: ' +
1020
                    preview + more + '</div>');
36644 ranu 1021
            }
1022
 
36741 ranu 1023
            // All upcoming beat-dates for the assignee that touch any nearby store.
36642 ranu 1024
            if (data && data.beats && data.beats.length > 0) {
36644 ranu 1025
                badgesDiv.append('<div style="font-weight:bold; font-size:11px; color:#666; margin-bottom:4px;">Available Slots (near this lead):</div>');
36741 ranu 1026
                var beats = data.beats;
36642 ranu 1027
                for (var i = 0; i < beats.length; i++) {
1028
                    var beat = beats[i];
36644 ranu 1029
                    var nearTxt = beat.nearStore ? ' &middot; near ' + beat.nearStore : '';
36642 ranu 1030
                    var badge = $('<span class="beat-badge" style="' +
1031
                        'display:inline-block; background:#337ab7; color:#fff; padding:6px 12px; ' +
1032
                        'margin:4px 6px 4px 0; border-radius:16px; cursor:pointer; font-size:12px; ' +
1033
                        'border:2px solid #337ab7; transition:all 0.2s;">' +
36644 ranu 1034
                        beat.planDate + ' &middot; ' + beat.beatName + ' (' + beat.stops + ' stops)' + nearTxt +
36642 ranu 1035
                        '</span>');
1036
                    badge.data('value', beat.planDate + '|' + beat.beatName + '|' + beat.planGroupId);
1037
                    badgesDiv.append(badge);
1038
                }
1039
            } else {
36644 ranu 1040
                badgesDiv.append('<span style="color:#999; font-size:12px;">No upcoming beats available for this person</span>');
36642 ranu 1041
            }
1042
        },
1043
        error: function () {
1044
            badgesDiv.html('<span style="color:#d9534f; font-size:12px;">Error loading beats</span>');
1045
        }
1046
    });
1047
}
1048
 
36741 ranu 1049
// Click on beat badge to select it. A picked beat becomes the schedule
1050
// source — the manual date input is hidden (not needed when scheduling by beat).
36642 ranu 1051
$(document).on('click', '.beat-badge', function () {
1052
    $('.beat-badge').css({'background': '#337ab7', 'border-color': '#337ab7'});
1053
    $(this).css({'background': '#1a5276', 'border-color': '#f39c12', 'border-width': '2px'});
1054
    $('#beatDate').val($(this).data('value'));
36741 ranu 1055
    $("#editScheduleTime").hide();
36642 ranu 1056
});
1057
 
1058
// Generate Geo Link for lead
1059
$(document).on('click', '.generateGeoLink', function (e) {
1060
    e.stopPropagation();
1061
    var lid = $(this).data('leadid');
1062
    doAjaxRequestHandler(context + "/lead-geo/generate-link?leadId=" + lid, "GET", function (response) {
1063
        var url = response.response;
1064
        if (navigator.clipboard) {
1065
            navigator.clipboard.writeText(url).then(function () {
1066
                alert("Link copied to clipboard:\n" + url);
1067
            });
1068
        } else {
1069
            prompt("Share this link with the prospect:", url);
1070
        }
1071
    });
1072
});
1073
 
1074
// Geo Review navigation
1075
$(document).on('click', '.geo-review', function () {
1076
    doGetAjaxRequestHandler(context + "/lead-geo/pending-reviews", function (response) {
1077
        $('#main-content').html(response);
1078
    });
1079
});
1080
 
1081
// Visit Approvals navigation
1082
$(document).on('click', '.visit-approvals', function () {
1083
    doGetAjaxRequestHandler(context + "/visit-approvals", function (response) {
1084
        $('#main-content').html(response);
1085
    });
1086
});
1087
 
36650 ranu 1088
// Beat Day View — load inline into dashboard
1089
$(document).on('click', '.beat-plan-dayview', function (e) {
1090
    e.preventDefault();
1091
    doGetAjaxRequestHandler(context + '/beatPlan/dayView', function (response) {
1092
        $('#main-content').html(response);
1093
    });
1094
});
1095
 
36655 ranu 1096
// Base Location manager — load inline into dashboard
1097
$(document).on('click', '.base-location', function (e) {
1098
    e.preventDefault();
1099
    doGetAjaxRequestHandler(context + '/beatPlan/baseLocationPage', function (response) {
1100
        $('#main-content').html(response);
1101
    });
1102
});
1103
 
36740 ranu 1104
// Deferred Partners — load inline into dashboard
1105
$(document).on('click', '.beat-plan-deferred', function (e) {
1106
    e.preventDefault();
1107
    doGetAjaxRequestHandler(context + '/beatPlan/deferredView', function (response) {
1108
        $('#main-content').html(response);
1109
    });
1110
});
1111
 
36642 ranu 1112
// Approve geolocation from lead table
1113
$(document).on('click', '.approve-geo', function (e) {
1114
    e.stopPropagation();
1115
    var lid = $(this).data('leadid');
1116
    if (!confirm('Approve geolocation for Lead #' + lid + '?')) return;
1117
 
1118
    var btn = $(this);
1119
    var cell = btn.closest('td');
1120
 
1121
    doPostAjaxRequestWithParamsHandler(
1122
        context + '/lead-geo/review',
1123
        {leadId: lid, status: 'APPROVED', remark: ''},
1124
        function (response) {
1125
            cell.html('<span class="label label-success">Verified</span>');
1126
        }
1127
    );
1128
});
1129
 
1130
// Reject geolocation from lead table
1131
$(document).on('click', '.reject-geo', function (e) {
1132
    e.stopPropagation();
1133
    var lid = $(this).data('leadid');
1134
    var reason = prompt('Reason for rejection:');
1135
    if (reason === null) return;
1136
 
1137
    var btn = $(this);
1138
    var cell = btn.closest('td');
1139
 
1140
    doPostAjaxRequestWithParamsHandler(
1141
        context + '/lead-geo/review',
1142
        {leadId: lid, status: 'REJECTED', remark: reason},
1143
        function (response) {
1144
            cell.html('<button class="btn btn-xs btn-warning generateGeoLink" data-leadid="' + lid + '">Rejected - Resend</button>');
1145
        }
1146
    );
1147
});
1148