﻿@using System.Web.UI.WebControls
@using RevZone.Web.MVC.ViewModels.NotificationsTab
@using System.Web.Mvc.Html
@using System.Web.Script.Serialization
@using AnimationType = DevExpress.Web.AnimationType
@using System.Web.UI.WebControls
@model NotificationsViewModel

@(Html.DevExpress().GridView<NotificationsViewModel>(
settings =>
{
    settings.Name = "notificationAttachmentsGrid";
    settings.KeyFieldName = "ObjectRecordReportId";
    settings.CallbackRouteValues = new
    {
        Controller = "Notifications",
        Action = "GetNotificationAttachmentsGrid",
        ObjectId = Model.ObjectId,
        RecordGuid = Model.RecordGuid,
        GroupObjId = Model.GroupObjId,
        RecordNotificationId = Model.NotificationRecordId,
        reload = false
    };

    settings.SetDefaultSettings();
    settings.SettingsPager.PageSize = 500;
    settings.SettingsPager.Visible = false;
    settings.CommandColumn.ShowSelectCheckbox = true;
    settings.CommandColumn.SelectCheckBoxPosition = GridSelectCheckBoxPosition.Right;
    settings.CommandColumn.Caption = T("Selected").ToString();
    settings.CommandColumn.Width = Unit.Percentage(30);

    settings.Toolbars.Add(t =>
    {
        t.ItemAlign = GridToolbarItemAlign.Justify;
        t.Items.Add(i =>
        {
            i.SetTemplateContent(tc =>
            {
                ViewContext.Writer.Write("<div class='column-toolbar'>");
                Html.DevExpress().Label(l =>
                {
                    l.Name = "notificationsReports";
                    l.Text = T("Reports").ToString() + ":";
                    l.ClientVisible = true;
                }).GetHtml();
                ViewContext.Writer.Write("</div>");
            });
        });
    });

    settings.Columns.Add(column =>
    {
        column.Name = "notificationReport";
        column.FieldName = "ReportName";
        column.Caption = T("Report").ToString();
        column.Width = Unit.Percentage(100);
    });

    settings.CustomJSProperties = (s, e) =>
    {
        JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
        javaScriptSerializer.MaxJsonLength = Int32.MaxValue;
        e.Properties["cpAllRowData"] = javaScriptSerializer.Serialize(
            Model.GroupReports.Select(x => new
            {
                x.ObjectRecordReportId,
                x.RecordNotificationId
            }));
    };

    settings.PreRender = (sender, e) =>
    {
        MVCxGridView gridView = sender as MVCxGridView;

        if ((gridView != null) && (Model != null))
        {

            long[] selectedRows = Model.ReportsIds.ToArray();
            foreach (int key in selectedRows)
            {
                gridView.Selection.SelectRowByKey(key);
            }
        }

    };

}).Bind(Model.GroupReports).GetHtml())