Subversion Repositories SmartDukaan

Rev

Rev 23026 | Rev 23347 | Go to most recent revision | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

$(function() {
        
        $(".schemes").live('click', function() {
                console.log("Active Schemes Button Clicked...")
                schemes("main-content");
        });
        
        $(".schemes-download-page").live('click', function() {
                console.log("Schemes Download Clicked...")
                loadSchemesDownloadPage("main-content");
        });
        
        $(".create-scheme").live('click', function() {
                loadScheme("main-content");
        });
        
        
        $('#brands li a').live('click', function(){
                $('#brand-value').text($(this).text());
                loadItemsDescriptionByBrand("items-description-container", $(this).text());
            console.log($(this).text());
        });
        
        $("#schemes-paginated .next").live('click', function() {
                var start = $( "#schemes-paginated .start" ).text();
                var end = $( "#schemes-paginated .end" ).text();
                getSchemesNextItems(start, end);
                $("#schemes-paginated .next").blur();
    });
        
        $("#schemes-paginated .previous").live('click', function() {
                var start = $( "#schemes-paginated .start" ).text();
                var end =  $( "#schemes-paginated .end" ).text();
                var pre = end - 20;
                getSchemesPreviousItems(start, end, pre);
                $("#schemes-paginated .previous").blur();
    });
        
        $(".scheme-details").live('click',function(){
                var schemeId = $(this).attr('data');
                console.log("schemeId = "+schemeId);
                loadSchemeDetails(schemeId, "scheme-details-container");
        });
        
        
        $(".active-scheme").live('click',function(){
                var schemeId = $(this).attr('data');
                console.log("active-scheme id : "+schemeId);
                var start = $( "#schemes-paginated .start" ).text();
                //var end = $( "#schemes-paginated .end" ).text();
                var offset = start - 1;
                if(confirm("Are you sure you want to Active Scheme!") == true){
                        activeScheme(schemeId, offset, "schemes-table");
                }
        });
        
        $(".expire-scheme").live('click',function(){
                var schemeId = $(this).attr('data');
                console.log("expire-scheme id : "+schemeId);
                var start = $( "#schemes-paginated .start" ).text();
                //var end = $( "#schemes-paginated .end" ).text();
                var offset = start - 1;
                if(confirm("Are you sure you want to Expire Scheme!") == true){
                        expireScheme(schemeId, offset, "schemes-table");
                }
        });
        
        
});

$().ready(function() {
        $("form#create-scheme-form input").each(function(){
                $(this).attr('autocomplete', 'off');
        });
});
$().ready(function() {
        // validate the comment form when it is submitted
        $('#create-scheme-form').validate({
                rules:{
                        schemeName:{
                                required:true
                        },
                        schemeType:{
                                required:true
                        },
                        amountType:{
                                required:true
                        },
                        schemeAmount:{
                                required:true
                        },
                        startDate:{
                                required:true
                        },
                        endDate:{
                                required:true
                        },
                        itemIdsDescription:{
                                required:true
                        },
                        retailerIds:{
                                required:true
                        }
                },
                messages:{
                        name:{
                                required:"Please enter the name"
                        },
                        schemeType:{
                                required:"Please choose type"
                        },
                        amountType:{
                                required: "Please choose amount type"
                        },
                        schemeAmount:{
                                required: "Please enter the amount"
                        },
                        startDate:{
                                require: "Please choose start date"
                        },
                        endDate:{
                                require: "Please choose end date"
                        },
                        itemIdsDescription:{
                                required: "Please choose items"
                        },
                        retailerIds:{
                                required: "Please enter retailer ids"
                        }
                },
                submitHandler: function (form, event) {
                        event.preventDefault();
                        if(validateSchemeDetails()){
                                alert("Please fix errors");
                                return false;
                        }
                        var json = schemeDetailsJson();
                        console.log("schemeJson = " + json);
                        if(confirm("Are you sure you want to create Scheme!") == true){
                     $.ajax({
                         type: "POST",
                         url: "createScheme",
                         data: json,
                         contentType:'application/json',
                                        async: false,
                                        success: function (data) {
                                                $('#main-content').html(data);
                                        },
                                        cache: false,
                                        processData: false
                     });
                     return false; // required to block normal submit since you used ajax
                        }
         }
        });
  
});

function validateSchemeDetails(){
        console.log("validating Scheme Details...");
        var error = false;
        var name = $("form#create-scheme-form input[name=schemeName]").val();
        console.log("schemeName = " + name);
        $("#schemeName").removeClass("border-highlight");
        if(name ==""){
                alert("Name is required");
                $("#schemeName").addClass("border-highlight");
                error = true;
                return error;
        }
        var schemeType = $("#schemeType option:selected").val();
        console.log("schemeType = " + schemeType);
        $("#schemeType").removeClass("border-highlight");
        if(schemeType == ""){
                alert("Please choose Scheme Type");
                $("#schemeType").addClass("border-highlight");
                error = true;
                return error;
        }
        var amountType = $("#amountType option:selected").val();
        console.log("amountType = " + amountType);
        $("#amountType").removeClass("border-highlight");
        if(amountType == ""){
                alert("Please choose Amount Type");
                $("#amountType").addClass("border-highlight");
                error = true;
                return error;
        }
        var amount = $("form#create-scheme-form input[name=schemeAmount]").val();
        console.log("amount = " + amount);
        $("#schemeAmount").removeClass("border-highlight");
        if (amount == ""){
                $("form#create-scheme-form input[name=schemeAmount]").val(0);
        }else if(amount <= 0){
                alert("Amount should be greater than 0");
                $("#schemeAmount").addClass("border-highlight");
                error = true;
                return error;
        }
        
        
        var startDateTimeString = $("form#create-scheme-form input[name=startDateTime]").val();
        var endDateTimeString = $("form#create-scheme-form input[name=endDateTime]").val();
        $("#startDateTime").removeClass("border-highlight");
        $("#endDateTime").removeClass("border-highlight");
        
        
        if(Date.parse(endDateTimeString) < Date.parse(startDateTimeString)){
                alert("End date Time [" + endDateTimeString + "] can not be greater than equal to Start date Time [" + startDateTimeString + "]");
                $("#startDateTime").addClass("border-highlight");
                $("#endDateTime").addClass("border-highlight");
                error = true;
                return error;
        }
        
        //$('#brand-value').text($(this).text());
        $("#brand-value").removeClass("border-highlight");
        if($("#brand-value").text() == "Brands"){
                alert("Please choose Brand");
                $("#brand-value").addClass("border-highlight");
                error = true;
                return error;
        }
        
        $("#itemsDescription").removeClass("border-hightlight");
        var itemIdsString = $("#itemsDescription").val();
        if(itemIdsString == null){
                alert("Please choose items");
                $("#itemsDescription").addClass("border-highlight");
                error = true;
                return error;
        }
        
        var retailerIdsString = $("#retailerIds").val();
        if(retailerIdsString != undefined){
                var retailerIdsPattern = "^[0-9]{1,10}(?:,[0-9]{1,10})*$";
                if(retailerIdsString.match(retailerIdsPattern) == null){
                        alert("Invalid retailerIds["+retailerIdsString+"] pattern");
                        $("#retailerIds").addClass("border-highlight");
                        error = true;
                        return error;
                }
        }
        
        console.log("validation scheme error = " + error);
        return error;
}

function schemeDetailsJson(){
        console.log("schemeDetailsJson")
        var schemeObject = {};
        schemeObject['name'] = $("form#create-scheme-form input[name=schemeName]").val();
        schemeObject['description'] = $("form#create-scheme-form input[name=description]").val();
        schemeObject['type'] = $("#schemeType option:selected").val();
        schemeObject['amountType'] = $("#amountType option:selected").val();
        schemeObject['amount'] = $('#schemeAmount').val();
        //var startEndDateTime = $("form#create-scheme-form input[name=startEndDateTime]").val().split("-");
        var startDateTimeString = $("form#create-scheme-form input[name=startDateTime]").val();
        console.log("startDateTimeString : "+startDateTimeString);
        var endDateTimeString = $("form#create-scheme-form input[name=endDateTime]").val();
        console.log("endDateTimeString : "+endDateTimeString);
        
        schemeObject['startDateTimeString'] = startDateTimeString;
        schemeObject['endDateTimeString'] = endDateTimeString;
        schemeObject['itemIds'] = [];
        var itemIds = $("#itemsDescription").val();
        //var itemIds = itemIdsString.substring(1, itemIdsString.length - 1).split(",");
        for(var i = 0; i < itemIds.length; i++){
                schemeObject['itemIds'].push(parseInt(itemIds[i]));
        }
        schemeObject['retailerAll'] = $("form#create-scheme-form input[name=retailerAll]").val();
        if($("#retailerAll").val() == 'true'){
                schemeObject['retailerIds'] = [];
        }else{
                schemeObject['retailerIds'] = []
                var retailerIds = $("#retailerIds").val().split(",");
                for(var retailerId of retailerIds){
                        schemeObject['retailerIds'].push(parseInt(retailerId));
                }
        }
        return JSON.stringify(schemeObject);
}

$('#retailerAll').on('change', function() { 
    if (this.checked) {
        $('#retailerAll').val('true');
        $('#retailer-ids').html('');
    }else{
        $('#retailerAll').val('false');
        $('#retailer-ids').html('<input placeholder="Retailer Ids" id="retailerIds" name="retailerIds" type="text" value="" pattern="^[0-9]{1,10}(?:,[0-9]{1,10})*$" title="Comma Seperated Positive Integer Retailer Ids" class="form-control input-sm">');
    }
});


function schemesDownload(){
        
        console.log("downloadItemLedgerReport Button clicked")
        
        var startEndDateTime = $('input[name="startEndDateTime"]').val().split("-");
        var startDateTime = $.trim(startEndDateTime[0]);
        console.log("startDateTime : "+startDateTime);
        var endDateTime = $.trim(startEndDateTime[1]);
        console.log("endDateTime : "+endDateTime);
        doAjaxGetDownload(context+"/schemes/download?startDateTime="+startDateTime+"&endDateTime="+endDateTime,
                         "SchemesReport.xlsx");
}

function getSchemesNextItems(start, end){
        console.log(start);
        console.log(end);
        console.log(+end + +10);
        console.log(+start + +10);
        doAjaxRequestHandler(context+"/getPaginatedSchemes?offset="+end, "GET", function(response){
                $( "#schemes-paginated .end" ).text(+end + +10);
                $( "#schemes-paginated .start" ).text(+start + +10);
                var last = $( "#schemes-paginated .end" ).text();
                var temp = $( "#schemes-paginated .size" ).text();
                if (parseInt(last) >= parseInt(temp)){
                        $("#schemes-paginated .next").prop('disabled', true);
                        //$( "#good-inventory-paginated .end" ).text(temp);
                }
            $('#schemes-table').html(response);
            $('#scheme-details-container').html('');
            $("#schemes-paginated .previous").prop('disabled', false);
        });
        
    
}


function getSchemesPreviousItems(start, end, pre){
        
        doAjaxRequestHandler(context+"/getPaginatedSchemes/?offset="+pre, "GET", function(response){
                $( "#schemes-paginated .end" ).text(+end - +10);
                $( "#schemes-paginated .start" ).text(+start - +10);
                $('#schemes-table').html(response);
                $('#scheme-details-container').html('');
                $("#schemes-paginated .next").prop('disabled', false);
                if (parseInt(pre)==0)
                {
                        $("#schemes-paginated .previous").prop('disabled', true);
                }
        });
        
}

function loadSchemeDetails(schemeId, domId){
        doAjaxRequestHandler(context+"/getSchemeById?schemeId="+schemeId, "GET", function(response){
                $('#' + domId).html(response);
                window.dispatchEvent(new Event('resize'));
        });
}

function activeScheme(schemeId, offset, domId){
        doAjaxRequestHandler(context+"/activeSchemeById?schemeId="+schemeId
                +"&offset="+offset, "PUT", function(response){
                $('#' + domId).html(response);
                $('#scheme-details-container').html('');
        });
}

function expireScheme(schemeId, offset, domId){
        doAjaxRequestHandler(context+"/expireSchemeById?schemeId="+schemeId
                +"&offset="+offset, "PUT", function(response){
                $('#' + domId).html(response);
                $('#scheme-details-container').html('');
        });
        
}

function loadScheme(domId){
        doAjaxRequestHandler(context+"/createScheme", "GET", function(response){
                $('#' + domId).html(response);
        });
}

function loadItemsDescriptionByBrand(domId, brand){
        doAjaxRequestHandler(context+"/getItemsByBrand?brand="+brand, "GET", function(response){
                $('#' + domId).html(response);
                configureItemsDescriptionDropDown();
        });
        
}

function configureItemsDescriptionDropDown(){
        $(document).ready(function() {
        $('#itemsDescription').multiselect({
                includeSelectAllOption: true,
                maxHeight: 200,
                buttonWidth: '180px',
                numberDisplayed: 1,
                nonSelectedText: 'Items',
                nSelectedText: ' - Items Selected',
                allSelectedText: 'All Items Selected',
                enableFiltering: true
        });
    });
}

function schemes(domId){
        doAjaxRequestHandler(context+"/getSchemes", "GET", function(response){
                $('#' + domId).html(response);
        });
}

function loadSchemesDownloadPage(domId){
        doAjaxRequestHandler(context+"/schemes/downloadPage", "GET", function(response){
                $('#' + domId).html(response);
        });
}