﻿include('../CodeScripts/Master.js');

$(document).ready(function () {

//            var startDate = $.datepicker.formatDate('mm/dd/yy', new Date());
//            var endDate = $.datepicker.formatDate('mm/dd/yy', new Date());

//            $('#txtFromDate').datepicker()
//        					.on('changeDate', function (ev) {
//        					    if (ev.date.valueOf() > endDate.valueOf()) {
//        					        //$('#alert').show().find('strong').text('The start date can not be greater then the end date');
//        					    } else {
//        					        //$('#alert').hide();
//        					        startDate = new Date(ev.date);
//        					        $('#txtToDate').datepicker('update', startDate);
//        					    }
//        					    $('#txtFromDate').datepicker('hide');
//        					});

//            $('#txtToDate').datepicker({
//                format: 'mm/dd/yy',
//                onRender: function (date) {
//                    return date.valueOf() < startDate.valueOf() ? 'disabled' : '';
//                },
//                onChangeDate: function (date) {
//                    return date.valueOf() < startDate.valueOf() ? 'disabled' : '';

//                }

    //            });
    var startDate = $.datepicker.formatDate('mm/dd/yy', new Date());
    var endDate = $.datepicker.formatDate('mm/dd/yy', new Date());
    var d = new Date();
    //var month = d.getMonth() + 1;
    //var day = d.getDate() - 6;
    //var startDate1 = (month < 10 ? '0' : '') + month + '/' + (day < 10 ? '0' : '') + day + '/' + d.getFullYear();

    //Bug #68996: Patient portal :- My messages>>Click>> Thrwoing Error as "We are unable to process at your request at this moment , Please try again after some time ."
    //code change to find date 6 days ago.
    var sDate = d.setDate(d.getDate() - 6);
    var startDate1 = $.datepicker.formatDate('mm/dd/yy', new Date(sDate));
    $('#txtFromDate').val(startDate1);
    $("#txtFromDate").datepicker('update', $('#txtFromDate').val());
    $('#txtToDate').val(startDate);
    $("#txtToDate").datepicker('update', $('#txtToDate').val());


    //    $('#txtToDate').datepicker('update', startDate);
    $('#txtFromDate').datepicker()
        					.on('changeDate', function (ev) {
        					    if (ev.date.valueOf() > endDate.valueOf()) {
        					        //$('#alert').show().find('strong').text('The start date can not be greater then the end date');
        					    } else {
        					        //$('#alert').hide();
        					        startDate = new Date(ev.date);
        					        $('#txtToDate').datepicker('update', startDate);
        					    }
        					    $('#txtFromDate').datepicker('hide');
        					});
        					$('#txtToDate').datepicker()
        					.on('changeDate', function (ev) {
        					    $('#txtToDate').datepicker('hide');
        					});
    $('#txtToDate').datepicker({
        format: 'mm/dd/yy',
        onRender: function (date) {
            return date.valueOf() < startDate.valueOf() ? 'disabled' : '';
        },
        onChangeDate: function (date) {
            return date.valueOf() < startDate.valueOf() ? 'disabled' : '';

        }

    });
    JsonPortalAuditTrail();
});




function fillaudittrail() {
    if ($("#txtFromDate").val() == undefined) {
        $("#SpanmodalDateValidation").html("Enter From date");
        $('#modalDateValidation').modal();
        return;
    }
    if ($("#txtFromDate").val() == "") {
        $("#SpanmodalDateValidation").html("Enter From date");
        $('#modalDateValidation').modal();
        return;
    }
    if (DateValidation($('#txtFromDate').val()) != true) {
        $('#SpanmodalDateValidation').html('Enter valid From date');
        $('#modalDateValidation').modal();
        return;
    }
    if ($("#txtToDate").val() == undefined) {
        $("#SpanmodalDateValidation").html("Enter To date");
        $('#modalDateValidation').modal();
        return;
    }
    if ($("#txtToDate").val() == "") {
        $("#SpanmodalDateValidation").html("Enter To date");
        $('#modalDateValidation').modal();
        return;
    }
    if (DateValidation($('#txtToDate').val()) != true) {
        $('#SpanmodalDateValidation').html('Enter valid To date');
        $('#modalDateValidation').modal();
        return;
    }

    var date = $("#txtFromDate").val().substring(3, 5);
    var month = $("#txtFromDate").val().substring(0, 2);
    var year = $("#txtFromDate").val().substring(6, 10);
    var date1 = $("#txtToDate").val().substring(3, 5);
    var month1 = $("#txtToDate").val().substring(0, 2);
    var year1 = $("#txtToDate").val().substring(6, 10);

    var dateToCompare = new Date(year, month - 1, date);
    var dateToCompare1 = new Date(year1, month1 - 1, date1);

    if (dateToCompare > dateToCompare1) {
        $('#SpanmodalDateValidation').html('From date should not be greater than To date');
        $('#modalDateValidation').modal();
    }
    else {
        JsonPortalAuditTrail();
    }
}
function JsonPortalAuditTrail() {
    try {
        ShowProgressbarwithOverlay();
        Type = "POST";
        Url = globalServiceURL + "PortalAuditTrail";

        var npatientid;
        if (sessionStorage.nPRId == 0)
            npatientid = sessionStorage.LoggedInUserID;
        else
            npatientid = sessionStorage.nAssociatedPatientId;

        npatientid = $.rc4EncryptStr(npatientid, globalkey);

        var sSoftwareComponent = "PatientPortal";
        sSoftwareComponent = $.rc4EncryptStr(sSoftwareComponent, globalkey);

        var txtFromDate;
        var txtToDate;
        if ($("#txtFromDate").val() != undefined) {
            txtFromDate = $("#txtFromDate").val();
            txtFromDate = $.rc4EncryptStr(txtFromDate, globalkey);
        }
        if ($("#txtToDate").val() != undefined) {
            txtToDate = $("#txtToDate").val();
            txtToDate = $.rc4EncryptStr(txtToDate, globalkey);
        }
        var practid = $.rc4EncryptStr(globalausid, globalkey);

        var msg2 = { "SearchRequest": { "appCodeField": globalAppCodeField, "practiceIDField": practid, "vendorIDField": globalVendorID, "SessionId": sessionStorage.PatientPortalSessionID },
            "crt": { "SoftwareComponent": sSoftwareComponent, "nPatientID": npatientid, "FromDate": txtFromDate, "ToDate": txtToDate }
        };
        var objectAsJson = JSON.stringify(msg2);

        Data = JSON.stringify(msg2);
        ContentType = "application/json";
        DataType = "json"; ProcessData = true;
        method = "JsonPortalAuditTrail";

        CallService();
    } catch (e) { HideProgressbarwithOverlay(); }
}

function ServiceSucceeded(result) {
    if (DataType == "json") {
        if (method == "JsonPortalAuditTrail") {
            var data1 = result.JsonPortalAuditTrailResult.resultRecordsField;
            if (data1 != null && result.JsonPortalAuditTrailResult.descriptionField.toLowerCase() == "success") {
                FillAuditTrail(data1);
                HideProgressbarwithOverlay();
            }
        }
    }
}

function FillAuditTrail(data1) {

    var Gridmodel = Backbone.Model.extend({});
    var GridPageCollection = Backbone.PageableCollection.extend({
        model: Gridmodel,
        state: {
            pageSize: 10
        },
        mode: "client"

    });

    var Griddata = new GridPageCollection(data1);

    var pageableTerritories = new GridPageCollection();

    var columns = [
                        {
                            name: "activityDateTimeField",
                            label: "Activity Date",
                            editable: false,
                            cell: "string", // A cell type for floating point value, defaults to have a precision 2 decimal numbers
                            formatter: _.extend({}, Backgrid.CellFormatter.prototype, {
                                fromRaw: function (rawValue) {
                                    return dateFromWcfWithAmPmTime1(rawValue);
                                }
                            })
                        },

						{
						    name: "descriptionField",
						    label: "Description",
						    editable: false,
						    cell: Backgrid.StringCell.extend({
						        className: 'CustomColumn2 string-cell '


						    })
						},

{
    name: "userNameField",
    label: "User Name",
    editable: false,
    cell: "string"
},

                        {
                            name: "machineNameField",
                            label: "Machine Name/IP Address",
                            editable: false,
                            cell: "string"
                        },

                     {
                         name: "activityTypeField",
                         label: "Action",
                         editable: false,
                         cell: "string"
                     },

                     {
                         name: "activityCategoryField",
                         label: "Category",
                         editable: false,
                         cell: "string"
                     },

                     {
                         name: "softwareComponentField",
                         label: "Software Component",
                         editable: false,
                         cell: "string"
                     },


                     {
                         name: "outcomeField",
                         label: "Outcome",
                         editable: false,
                         cell: "string"
                     },

                       ];

    // Set up a grid to use the pageable collection

    var pageableGrid = new Backgrid.Grid({
        columns: columns,
        collection: Griddata
        //collection: pageableTerritories
    });

    $("#auditgrid").html('');
    var $example2 = $("#auditgrid");
    $example2.append(pageableGrid.render().$el)


    // Initialize the paginator
    var paginator = new Backgrid.Extension.Paginator({
        collection: Griddata
    });

    $example2.append(paginator.render().$el);

    var filter = new Backgrid.Extension.ClientSideFilter({
        collection: Griddata.fullCollection,
        fields: ['activityModuleField', 'descriptionField', 'userNameField', 'activityDateTimeField', 'machineNameField']
    });


    // Render the filter
    $example2.prepend(filter.render().$el);


    // Add some space to the filter and move it to the right
    //filter.$el.css({ float: "right", width: "360px", display: "inline-flex", height: "22px" });
    filter.$el.css({ float: "right"});

    //    /////Add Date filter
    //    var divHtml = '<div style="float:left;margin:15px;"><strong> From:</strong> <input type="text" id="txtFromDate" /><strong> To:</strong> <input type="text" id="txtToDate" /><button d="Button2" type="button"  class="btn blue" style="margin-top:-13px"; onclick="JsonPortalAuditTrail();"><i class="icon-refresh icon-large"></i><span class="count"></span><span  id="Span1" class=""></span></button></div>';
    //    $example2.prepend(divHtml);

    //    var startDate = $.datepicker.formatDate('mm/dd/yy', new Date());
    //    var endDate = $.datepicker.formatDate('mm/dd/yy', new Date());

    //    $('#txtFromDate').datepicker()
    //    					.on('changeDate', function (ev) {
    //    					    if (ev.date.valueOf() > endDate.valueOf()) {
    //    					        //$('#alert').show().find('strong').text('The start date can not be greater then the end date');
    //    					    } else {
    //    					        //$('#alert').hide();
    //    					        startDate = new Date(ev.date);
    //    					        $('#txtToDate').datepicker('update', startDate);
    //    					    }
    //    					    $('#txtFromDate').datepicker('hide');
    //    					});

    //    $('#txtToDate').datepicker({
    //        format: 'mm/dd/yy',
    //        onRender: function (date) {
    //            return date.valueOf() < startDate.valueOf() ? 'disabled' : '';
    //        }
    //    });

    //    $('#txtToDate').datepicker().on('changeDate', function (ev) {

    //        $('#txtToDate').datepicker('hide');
    //    });
    //    /////End Date filter

    try {
        var msgdiv = CreateFilterMessageDiv();
        $example2.append(msgdiv);
    } catch (e) { }
}
