Subversion Repositories SmartDukaan

Rev

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