Subversion Repositories SmartDukaan

Rev

Rev 35499 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

function loadPendingTrialForms(domId) {
    doGetAjaxRequestHandler(context + "/trial/pending", function (response) {
        $('#' + domId).html(response);
    });
}

function loadAllTrialForms(domId) {
    doGetAjaxRequestHandler(context + "/trial/all-trial", function (response) {
        $('#' + domId).html(response);
    });
}

function getByStatus(status) {
    doGetAjaxRequestHandler(
        `${context}/trial/by-status?status=${status}`,
        function (response) {
            $('#main-content').html(response);
        }
    );
}

$(function () {
    $(document).on('click', ".trial_users", function () {
        loadPendingTrialForms("main-content");
    });
    $(document).on('change', ".tstatus", function () {
        const status = $(this).val();

        if (!status) {
            loadAllTrialForms("main-content");
            return;
        }

        getByStatus(status);
    });

    $(document).on('click', ".verified_trial_users", function () {
        loadVerifiedTrialForms("main-content");
    });
    $(document).on('click', ".all_trial_users", function () {
        loadAllTrialForms("main-content");
    });

    $(document).on('click', ".mk_trial_create", function () {
        let trialFormId = $(this).closest('tr').data('id');
    });

    $(document).on('click', ".mk_trial_cancel", function () {
        let trialFormId = $(this).closest('tr').data('id');
        openCancelTrialModal(trialFormId);
    });


    $(document).on('click', ".approve-trial", function () {
        let trialFormId = $(this).closest('tr').data('id');
        approveTrialForm(trialFormId);
    });
    $(document).on('click', ".converted", function () {
        let trialFormId = $(this).closest('tr').data('id');
        convertedToFranchise(trialFormId);
    });
    $(document).on('click', '#confirmCancelTrial', function () {

        const trialFormId = $('#cancelTrialFormId').val();
        const remark = $('#cancelTrialRemark').val().trim();

        if (!remark) {
            alert("Remark is mandatory");
            return;
        }

        doPostAjaxRequestWithParamsHandler(
            `${context}/trial/reject`,
            {
                trialFormId: trialFormId,
                remark: remark
            },
            function (response) {
                if (response.statusCode == "200") {
                    $('#cancelTrialModal').modal('hide');
                    cleanupModal();
                } else {
                    alert("Failed to cancel trial");
                }
            }
        );
    });


    function loadVerifiedTrialForms(domId) {
        doGetAjaxRequestHandler(context + "/trial/verified", function (response) {
            $('#' + domId).html(response);
        });
    }

    function trialCreate(trialFormId) {
        doAjaxRequestHandler(`${context}/trial/create/${trialFormId}`, "GET", function (response) {
            $('#main-content').html(response);
        });
    }

    function openCancelTrialModal(trialFormId) {
        $('#cancelTrialFormId').val(trialFormId);
        $('#cancelTrialRemark').val('');
        $('#cancelTrialModal').modal('show');
    }


    function approveTrialForm(trialFormId) {
        if (confirm("Are you sure you want to approve this trial?")) {
            doPostAjaxRequestHandler(`${context}/trial/approve/${trialFormId}`, function (response) {
                if (response == "true") {
                    $('.modal-backdrop').remove();
                    $('body').removeClass('modal-open');
                    $('body').css('padding-right', '');
                    loadVerifiedTrialForms("main-content");
                }
            });
        }
    }

    function convertedToFranchise(trialFormId) {
        if (confirm("Are you sure you want to mark as converted?")) {
            doPostAjaxRequestHandler(`${context}/trial/convertToFranchise/${trialFormId}`, function (response) {
                if (response == "true") {
                    $('.modal-backdrop').remove();
                    $('body').removeClass('modal-open');
                    $('body').css('padding-right', '');
                    loadVerifiedTrialForms("main-content");
                }
            });
        }
    }
});
$(document).on('click', '.openBrandModal', function () {
    const trialFormId = $(this).data('id');
    console.log("trialFormId sent:", trialFormId);
    $('#brandPotentialForm input[name="trialFormId"]').val(trialFormId);
    asmBmSaved = false;
});
$(document).on('click', '.openUserBrandPotential', function () {
    let trialFormId = $(this).data('id');
    loadUserBrandPotential(trialFormId);
});


function saveBrandPotential() {


    if (!asmBmSaved) {
        alert("Please save ASM & BM before adding Brand Potential");
        return;
    }

    const trialFormId = $('#brandPotentialForm input[name="trialFormId"]').val();
    const params = {trialFormId};

    let validRowFound = false;

    $('#brandPotentialRows tr').each(function (index) {
        const brand = $(this).find('input[name^="brand_"]').val()?.trim();
        const potential = $(this).find('input[name^="potential_"]').val();

        if (brand && potential) {
            validRowFound = true;
            params[`brand_${index + 1}`] = brand;
            params[`potential_${index + 1}`] = potential;
        }
    });

    if (!validRowFound) {
        alert("Please add at least one Brand with Potential");
        return;
    }

    doPostAjaxRequestWithParamsHandler(
        `${context}/trial/brand-Potential`,
        params,
        function () {
            $('#brandPotentialModal')
                .one('hidden.bs.modal', cleanupModal)
                .modal('hide');

            alert("Verified - Brand Potential Saved Successfully");
        }
    );
}

function cleanupModal() {
    $('.modal-backdrop').remove();
    $('body').removeClass('modal-open').css('padding-right', '');
    loadPendingTrialForms("main-content");
}

let asmBmSaved = false;

function saveAsmBm() {

    const trialFormId = $('#brandPotentialForm input[name="trialFormId"]').val();
    const asmId = $('#asmBmForm select[name="asm"]').val();
    const bmId = $('#asmBmForm select[name="bm"]').val();

    if (!asmId || !bmId) {
        alert("Please select both ASM and BM");
        return;
    }

    doPostAjaxRequestWithParamsHandler(
        context + "/trial/asm-bm",
        {trialFormId, asmId, bmId},
        function () {
            asmBmSaved = true;
            alert("ASM & BM Saved Successfully");
        }
    );
}


function loadUserBrandPotential(trialFormId) {
    doGetAjaxRequestHandler(
        `${context}/trial/userBrandPotential/${trialFormId}`,
        function (res) {

            if (typeof res === "string") {
                try {
                    res = JSON.parse(res);
                } catch {
                    return;
                }
            }

            const data = res?.response || [];
            const tbody = $('#brandPotentialRows').empty();

            if (!data.length) {
                tbody.append(`
                    <tr>
                        <td colspan="4" class="text-center">
                            No Brand Potential Data Available
                        </td>
                    </tr>
                `);
                $('#brandPotentialModal').modal('show');
                return;
            }

            data.forEach(item => {
                tbody.append(`
                    <tr>
                        <td>${item.trialFormId}</td>
                        <td>${item.brandName}</td>
                        <td>${item.potential}</td>
                        <td>${formatDateArray(item.createdAt)}</td>
                    </tr>
                `);
            });

            $('#brandPotentialModal').modal('show');
        }
    );
}


function formatDateArray(arr) {
    if (!arr || arr.length < 6) return "";

    let year = arr[0];
    let month = arr[1];
    let day = arr[2];
    let hour = arr[3];
    let min = arr[4];
    let sec = arr[5];

    return `${year}-${pad(month)}-${pad(day)} ${pad(hour)}:${pad(min)}:${pad(sec)}`;
}

function pad(v) {
    return (v < 10 ? "0" : "") + v;
}