Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
35360 aman 1
function loadPendingTrialForms(domId) {
2
    doGetAjaxRequestHandler(context + "/trial/pending", function (response) {
3
        $('#' + domId).html(response);
4
    });
5
}
6
 
35499 aman 7
function loadAllTrialForms(domId) {
8
    doGetAjaxRequestHandler(context + "/trial/all-trial", function (response) {
9
        $('#' + domId).html(response);
10
    });
11
}
12
 
35289 amit 13
$(function () {
14
    $(document).on('click', ".trial_users", function () {
15
        loadPendingTrialForms("main-content");
16
    });
35340 aman 17
    $(document).on('click', ".verified_trial_users", function () {
18
        loadVerifiedTrialForms("main-content");
19
    });
35499 aman 20
    $(document).on('click', ".all_trial_users", function () {
21
        loadAllTrialForms("main-content");
22
    });
29598 tejbeer 23
 
35289 amit 24
    $(document).on('click', ".mk_trial_create", function () {
35360 aman 25
        let trialFormId = $(this).closest('tr').data('id');
35289 amit 26
    });
30439 tejbeer 27
 
35289 amit 28
    $(document).on('click', ".mk_trial_cancel", function () {
35360 aman 29
        let trialFormId = $(this).closest('tr').data('id');
35499 aman 30
        openCancelTrialModal(trialFormId);
35289 amit 31
    });
35499 aman 32
 
33
 
35360 aman 34
    $(document).on('click', ".approve-trial", function () {
35
        let trialFormId = $(this).closest('tr').data('id');
36
        approveTrialForm(trialFormId);
37
    });
38
    $(document).on('click', ".converted", function () {
39
        let trialFormId = $(this).closest('tr').data('id');
40
        convertedToFranchise(trialFormId);
41
    });
35499 aman 42
    $(document).on('click', '#confirmCancelTrial', function () {
30439 tejbeer 43
 
35499 aman 44
        const trialFormId = $('#cancelTrialFormId').val();
45
        const remark = $('#cancelTrialRemark').val().trim();
29598 tejbeer 46
 
35499 aman 47
        if (!remark) {
48
            alert("Remark is mandatory");
49
            return;
50
        }
51
 
52
        doPostAjaxRequestWithParamsHandler(
53
            `${context}/trial/reject`,
54
            {
55
                trialFormId: trialFormId,
56
                remark: remark
57
            },
58
            function (response) {
59
                if (response.statusCode == "200") {
60
                    $('#cancelTrialModal').modal('hide');
61
                    cleanupModal();
62
                } else {
63
                    alert("Failed to cancel trial");
64
                }
65
            }
66
        );
67
    });
68
 
69
 
70
 
35340 aman 71
    function loadVerifiedTrialForms(domId) {
72
        doGetAjaxRequestHandler(context + "/trial/verified", function (response) {
73
            $('#' + domId).html(response);
74
        });
75
    }
76
 
35289 amit 77
    function trialCreate(trialFormId) {
78
        doAjaxRequestHandler(`${context}/trial/create/${trialFormId}`, "GET", function (response) {
79
            $('#main-content').html(response);
80
        });
81
    }
30439 tejbeer 82
 
35499 aman 83
    function openCancelTrialModal(trialFormId) {
84
        $('#cancelTrialFormId').val(trialFormId);
85
        $('#cancelTrialRemark').val('');
86
        $('#cancelTrialModal').modal('show');
35289 amit 87
    }
35360 aman 88
 
35499 aman 89
 
35360 aman 90
    function approveTrialForm(trialFormId) {
91
        if (confirm("Are you sure you want to approve this trial?")) {
92
            doPostAjaxRequestHandler(`${context}/trial/approve/${trialFormId}`, function (response) {
93
                if (response == "true") {
94
                    $('.modal-backdrop').remove();
95
                    $('body').removeClass('modal-open');
96
                    $('body').css('padding-right', '');
97
                    loadVerifiedTrialForms("main-content");
98
                }
99
            });
100
        }
101
    }
102
 
103
    function convertedToFranchise(trialFormId) {
104
        if (confirm("Are you sure you want to mark as converted?")) {
105
            doPostAjaxRequestHandler(`${context}/trial/convertToFranchise/${trialFormId}`, function (response) {
106
                if (response == "true") {
107
                    $('.modal-backdrop').remove();
108
                    $('body').removeClass('modal-open');
109
                    $('body').css('padding-right', '');
110
                    loadVerifiedTrialForms("main-content");
111
                }
112
            });
113
        }
114
    }
25980 tejbeer 115
});
35340 aman 116
$(document).on('click', '.openBrandModal', function () {
35485 aman 117
    const trialFormId = $(this).data('id');
35340 aman 118
    console.log("trialFormId sent:", trialFormId);
119
    $('#brandPotentialForm input[name="trialFormId"]').val(trialFormId);
35485 aman 120
    asmBmSaved = false;
35340 aman 121
});
35360 aman 122
$(document).on('click', '.openUserBrandPotential', function () {
123
    let trialFormId = $(this).data('id');
124
    loadUserBrandPotential(trialFormId);
125
});
35340 aman 126
 
127
 
128
function saveBrandPotential() {
129
 
130
 
35485 aman 131
    if (!asmBmSaved) {
132
        alert("Please save ASM & BM before adding Brand Potential");
133
        return;
134
    }
35340 aman 135
 
35485 aman 136
    const trialFormId = $('#brandPotentialForm input[name="trialFormId"]').val();
137
    const params = {trialFormId};
35340 aman 138
 
35485 aman 139
    let validRowFound = false;
140
 
141
    $('#brandPotentialRows tr').each(function (index) {
142
        const brand = $(this).find('input[name^="brand_"]').val()?.trim();
143
        const potential = $(this).find('input[name^="potential_"]').val();
144
 
35340 aman 145
        if (brand && potential) {
35485 aman 146
            validRowFound = true;
147
            params[`brand_${index + 1}`] = brand;
148
            params[`potential_${index + 1}`] = potential;
35340 aman 149
        }
150
    });
151
 
35485 aman 152
    if (!validRowFound) {
153
        alert("Please add at least one Brand with Potential");
154
        return;
155
    }
35340 aman 156
 
157
    doPostAjaxRequestWithParamsHandler(
35485 aman 158
        `${context}/trial/brand-Potential`,
35340 aman 159
        params,
35485 aman 160
        function () {
161
            $('#brandPotentialModal')
162
                .one('hidden.bs.modal', cleanupModal)
163
                .modal('hide');
164
 
165
            alert("Verified - Brand Potential Saved Successfully");
35340 aman 166
        }
167
    );
35485 aman 168
}
35340 aman 169
 
35485 aman 170
function cleanupModal() {
171
    $('.modal-backdrop').remove();
172
    $('body').removeClass('modal-open').css('padding-right', '');
173
    loadPendingTrialForms("main-content");
35340 aman 174
}
175
 
35485 aman 176
let asmBmSaved = false;
177
 
35360 aman 178
function saveAsmBm() {
179
 
35485 aman 180
    const trialFormId = $('#brandPotentialForm input[name="trialFormId"]').val();
181
    const asmId = $('#asmBmForm select[name="asm"]').val();
182
    const bmId = $('#asmBmForm select[name="bm"]').val();
35360 aman 183
 
35485 aman 184
    if (!asmId || !bmId) {
35360 aman 185
        alert("Please select both ASM and BM");
186
        return;
187
    }
188
 
189
    doPostAjaxRequestWithParamsHandler(
190
        context + "/trial/asm-bm",
35485 aman 191
        {trialFormId, asmId, bmId},
192
        function () {
193
            asmBmSaved = true;
194
            alert("ASM & BM Saved Successfully");
35360 aman 195
        }
196
    );
197
}
198
 
35485 aman 199
 
35360 aman 200
function loadUserBrandPotential(trialFormId) {
201
    doGetAjaxRequestHandler(
35485 aman 202
        `${context}/trial/userBrandPotential/${trialFormId}`,
35360 aman 203
        function (res) {
204
 
205
            if (typeof res === "string") {
206
                try {
207
                    res = JSON.parse(res);
35485 aman 208
                } catch {
35360 aman 209
                    return;
210
                }
211
            }
212
 
35485 aman 213
            const data = res?.response || [];
214
            const tbody = $('#brandPotentialRows').empty();
35360 aman 215
 
35485 aman 216
            if (!data.length) {
217
                tbody.append(`
35360 aman 218
                    <tr>
219
                        <td colspan="4" class="text-center">
220
                            No Brand Potential Data Available
221
                        </td>
222
                    </tr>
223
                `);
224
                $('#brandPotentialModal').modal('show');
225
                return;
226
            }
227
 
35485 aman 228
            data.forEach(item => {
229
                tbody.append(`
35360 aman 230
                    <tr>
231
                        <td>${item.trialFormId}</td>
232
                        <td>${item.brandName}</td>
233
                        <td>${item.potential}</td>
35485 aman 234
                        <td>${formatDateArray(item.createdAt)}</td>
35360 aman 235
                    </tr>
35485 aman 236
                `);
35360 aman 237
            });
238
 
239
            $('#brandPotentialModal').modal('show');
240
        }
241
    );
242
}
243
 
35485 aman 244
 
35360 aman 245
function formatDateArray(arr) {
246
    if (!arr || arr.length < 6) return "";
247
 
248
    let year = arr[0];
249
    let month = arr[1];
250
    let day = arr[2];
251
    let hour = arr[3];
252
    let min = arr[4];
253
    let sec = arr[5];
254
 
255
    return `${year}-${pad(month)}-${pad(day)} ${pad(hour)}:${pad(min)}:${pad(sec)}`;
256
}
257
 
258
function pad(v) {
259
    return (v < 10 ? "0" : "") + v;
260
}