Exemple #1
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("SampleGrid", new MVCGridBuilder <Customer>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add().WithColumnName("CustomerId").WithHeaderText("Customer ID")
                .WithValueExpression(i => i.CustomerId.ToString());               // use the Value Expression to return the cell text for this column
                cols.Add().WithColumnName("FirstName").WithHeaderText("First Name").WithValueExpression(i => i.FirstName);
                cols.Add().WithColumnName("LastName").WithHeaderText("Last Name").WithValueExpression(i => i.LastName);
                cols.Add().WithColumnName("FullaName").WithHeaderText("Full Name").WithValueTemplate("{Model.FirstName} {Model.LastName}")
                .WithVisibility(visible: false, allowChangeVisibility: true).WithSorting(true);
                cols.Add().WithColumnName("OrderDate").WithHeaderText("Order Date")
                .WithValueExpression(i => i.OrderDate.ToString());
                cols.Add().WithColumnName("Status").WithHeaderText("Status").WithValueExpression(i => i.Status);
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                // Use Entity Framework, a module from your IoC Container, or any other method.
                // Return QueryResult object containing IEnumerable<YouModelItem>

                var lists = new QueryResult <Customer>();

                using (MyDbContext db = new MyDbContext())
                {
                    lists.Items = db.Customers.ToList();
                }

                return(lists);
            })
                                       );
        }
Exemple #2
0
        public override void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("ContainerGrid", new MVCGridBuilder <Person>()
                                       .AddColumns(cols =>
            {
                cols.Add("Id").WithValueExpression((p, c) => p.Id.ToString());
                cols.Add("FirstName").WithHeaderText("First Name")
                .WithValueExpression((p, c) => p.FirstName);
                cols.Add("LastName").WithHeaderText("Last Name")
                .WithValueExpression((p, c) => p.LastName);
            })
                                       .WithRenderingMode(RenderingMode.Controller)
                                       .WithViewPath("~/Views/MVCGrid/_Grid.cshtml")
                                       .WithContainerViewPath("~/Views/MVCGrid/_Container.cshtml")
                                       .WithRetrieveDataMethod((options) =>
            {
                var result = new QueryResult <Person>();

                using (var db = new SampleDatabaseEntities())
                {
                    result.Items = db.People.Where(p => p.Employee).ToList();
                }

                return(result);
            })
                                       );
        }
Exemple #3
0
        private static void RegisterGrid(GridDefaults gridDefaults, ColumnDefaults colDefauls, string gridName)
        {
            MVCGridDefinitionTable.Add(GRID_NAME, new MVCGridBuilder <ProductItemModel>(gridDefaults, colDefauls)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                BuildColumns(cols);
            })
                                       .WithSorting(true, "Name", SortDirection.Asc)
                                       .WithFiltering(true)
                                       .WithAdditionalQueryOptionNames(FILTER_NAME, FILTER_DESC)
                                       .WithRetrieveDataMethod((context) =>
            {
                var service = DependencyResolver.Current.GetService <IProductsService>();
                var result  = service.GetProducts();
                var options = context.QueryOptions;
                var query   = result.Items.AsQueryable();
                var name    = options.GetAdditionalQueryOptionString(FILTER_NAME);
                var desc    = options.GetAdditionalQueryOptionString(FILTER_DESC);

                query = FilterData(options, query, name, desc);

                return(new QueryResult <ProductItemModel>()
                {
                    Items = query.ToList(),
                    TotalRecords = result.Items.Count()
                });
            })
                                       );
        }
        internal static string GenerateGrid(string gridName, out int statusCode, NameValueCollection nameValueCollection = null)
        {
            if (nameValueCollection == null)
            {
                nameValueCollection = new NameValueCollection();
            }

            statusCode = 200;
            IMVCGridDefinition grid        = MVCGridDefinitionTable.GetDefinitionInterface(gridName);
            QueryOptions       options     = QueryStringParser.ParseOptions(grid, nameValueCollection);
            GridContext        gridContext = MVCGrid.NetCore.Utility.GridContextUtility.Create(/*context, */ gridName, grid, options);

            GridEngine engine = new GridEngine();

            if (!engine.CheckAuthorization(gridContext))
            {
                //Forbidden
                statusCode = 403;
                return(string.Empty);
            }

            IMVCGridRenderingEngine renderingEngine = GridEngine.GetRenderingEngine(gridContext);

            // TODO: Reimplement this for csv exports and other rendering responses.
            //renderingEngine.PrepareResponse(context.Response);

            StringBuilder sb         = new StringBuilder();
            TextWriter    htmlWriter = new StringWriter(sb);

            engine.Run(renderingEngine, gridContext, htmlWriter);
            string html = sb.ToString();

            return(html);
        }
Exemple #5
0
        internal static void Register()
        {
            GridDefaults employeeGridDefauls = new GridDefaults()
            {
                Paging                = true,
                ItemsPerPage          = 10,
                Sorting               = true,
                NoResultsMessage      = "No hay mas usuarios para mostrar",
                NextButtonCaption     = string.Empty,
                PreviousButtonCaption = string.Empty,
                SummaryMessage        = "Viendo {0} a {1} de {2} registros"
            };

            MVCGridDefinitionTable.Add("PadresGrid", new MVCGridBuilder <Padre>(employeeGridDefauls)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here

                cols.Add().WithColumnName("Nombre").WithHeaderText("Nombre").WithValueExpression(i => i.Nombre).WithSorting(false);
                cols.Add().WithColumnName("Apellido").WithHeaderText("Apellido").WithValueExpression(i => i.Apellido).WithSorting(false);
                cols.Add().WithColumnName("Email").WithHeaderText("Email").WithValueExpression(i => i.Email).WithSorting(false);
                cols.Add().WithColumnName("Hijos").WithHeaderText("Hijos").WithValueExpression(i => i.Hijos != null ? string.Join(", ", i.Hijos.Select(x => x.Nombre)) : string.Empty).WithSorting(false);
                cols.Add().WithColumnName("Details").WithHeaderText("").WithCellCssClassExpression((i, c) => "action").WithHtmlEncoding(false)
                .WithValueExpression((i, c) =>
                                     string.Format("{0}{1}{2}",
                                                   string.Format("<a data-modal='' class='text-info' href='{0}' id='{1}' title='Asignar hijos'><span class='fa fa-server'></span></a>", c.UrlHelper.Action("Assign", "Padres", new { id = i.Id }), i.Id),
                                                   string.Format("<a data-modal='' class='text-info' href='{0}' id='{1}' title='Editar'><span class='fa fa-pencil'></span></a>", c.UrlHelper.Action("Form", "Padres", new { id = i.Id }), i.Id),
                                                   string.Format("<a data-modal='' class='text-info' href='{0}' id='{1}' title='Eliminar'><span class='fa fa-trash'></span></a>", c.UrlHelper.Action("Form", "Padres", new { id = i.Id, readOnly = true, delete = true }), i.Id)
                                                   ));
            })
                                       .WithPaging(true, 10, true, 100)
                                       .WithSorting(true, "Id")
                                       .WithAdditionalQueryOptionNames("search")
                                       .WithPageParameterNames("user")
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;
                var result  = new QueryResult <Padre>();

                string globalSearch             = options.GetAdditionalQueryOptionString("search");
                UsuarioLogueado usuarioLogueado = JsonConvert.DeserializeObject <UsuarioLogueado>(options.GetPageParameterString("user"));

                IServicioWeb servicio = new ImplementacionService.ImplementacionService();        //BaseController.CreateService();
                var data = servicio.ObtenerPadres(usuarioLogueado, options.PageIndex.Value, options.ItemsPerPage.Value, globalSearch);

                return(new QueryResult <Padre>()
                {
                    Items = data.Lista.ToArray(),
                    TotalRecords = data.CantidadRegistros,
                });
            })
                                       );
        }
Exemple #6
0
        private static void RegisterProductGrid()
        {
            MVCGridDefinitionTable.Add("ProductGrid", new MVCGridBuilder <Product>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)
                                       .WithClientSideLoadingMessageFunctionName("showLoading")
                                       .WithClientSideLoadingCompleteFunctionName("finalizeGrid")
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                cols.Add("BarCode").WithHeaderText("BarCode")
                .WithVisibility(true, true)
                .WithSorting(true)
                .WithValueExpression(p => p.BarCode);
                cols.Add("ItemName").WithHeaderText("ItemName")
                .WithVisibility(true, true)
                .WithSorting(true)
                .WithValueExpression(p => p.ItemName);
                cols.Add("Prices").WithSorting(false)
                .WithHeaderText("Prices")
                .WithHtmlEncoding(false)
                .WithValueExpression(p => p.BarCode)
                .WithValueTemplate("<a data-fieldid='{Value}' class='fieldbtn btn btn-default fieldId-btn'>Prices</a>");
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                int totalRecords;
                string globalSearch = string.IsNullOrEmpty(options.GetAdditionalQueryOptionString("search")) ? string.Empty : options.GetAdditionalQueryOptionString("search").ToLower();

                string sortColumn = options.GetSortColumnData <string>();

                var productService = new ProductService(new ProductRepository(new JsonWebServiceClient <Product>()));

                var items = productService.GetProducts();

                totalRecords = items.Count;

                if (!string.IsNullOrEmpty(globalSearch))
                {
                    items = items.Where(ent => ent.BarCode.ToLower().Contains(globalSearch)).ToList();
                }

                return(new QueryResult <Product>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
Exemple #7
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("UsageExample", new MVCGridBuilder <DBESearchAdmin.Models.DBECompany>()
                                       .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)


                                       .WithRetrieveDataMethod((context) =>
            {
                return(new QueryResult <YourModelItem>()
                {
                    Items = new List <YourModelItem>(),
                    TotalRecords = 0     // if paging is enabled, return the total number of records of all pages
                });
            })
                                       );
        }
Exemple #8
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("Users",
                                       new MVCGridBuilder <User>(new ColumnDefaults {
                EnableSorting = true
            })
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add().WithColumnName("UserName")
                .WithHeaderText("User Name")
                .WithValueExpression(i => i.Username);
                cols.Add().WithColumnName("BrandName")
                .WithHeaderText("Brand")
                .WithValueExpression(i => i.Brand.BrandName);
                cols.Add().WithColumnName("Roles")
                .WithHeaderText("Roles")
                .WithValueExpression(i => string.Join(", ", i.Roles.OrderBy(r => r.RoleName).Select(r => r.RoleName)));
                cols.Add("Edit")
                .WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((i, c) => c.UrlHelper.Action("Detail", "Users", new { id = i.UserId }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button'>Edit</a>");
            })
                                       .WithSorting(true, "Username")
                                       .WithPaging(true, 20)
                                       .WithRetrieveDataMethod((context) =>
            {
                var resolver       = DependencyResolver.Current;
                var userRepository = resolver.GetService <IUserRepository>();
                var mapper         = resolver.GetService <IMapper>();
                var options        = context.QueryOptions;
                var sortAscending  =
                    options.SortDirection == SortDirection.Asc ||
                    options.SortDirection == SortDirection.Unspecified;
                var users = userRepository.GetAll(options.SortColumnName, sortAscending);

                return(new QueryResult <User>()
                {
                    Items = users,
                    TotalRecords = users.Count
                });
            })
                                       );
        }
        public static void RegisterGrids()
        {
            var db = new JCold_UVU_MVC_InventoryDb();

            MVCGridDefinitionTable.Add("CheckBookGrid", new MVCGridBuilder <CheckOutBook>()

                                       .AddColumns
                                           (cols => {
                //Add your columns here
                cols.Add("Book Name").WithValueExpression(p => p.Books.Title.ToString());
                cols.Add("Department Name").WithValueExpression(p => p.Department.DepName);
                cols.Add("Student Name").WithValueExpression(p => p.Students.StudentName);
                cols.Add("Returned Book").WithValueExpression(p => p.ReturnedBook ? "Yes" : "No");
                cols.Add("Due Date").WithValueExpression(p => p.DueDate.ToShortDateString());
                cols.Add("Returned Date").WithValueExpression(p => p.ReturnedDate.ToString());
                cols.Add("Check out date").WithValueExpression(p => p.CheckedOutDate.ToShortDateString());
            }).WithSorting(true, "Due Date")

                                       .WithRetrieveDataMethod((context) =>
            {
                //Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                // Use Entity Framework, a module from your IoC Container, or any other method.
                // Return QueryResult object containing IEnumerable<YouModelItem>


                var options = context.QueryOptions;
                var result  = new QueryResult <CheckOutBook>();
                var query   = db.CheckOutBooks;
                //if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                //{
                //    switch (options.SortColumnName.ToLower())
                //    {
                //        case "firstname":
                //            query = query.OrderBy(p => p.Books.Title, options.SortDirection);
                //            break;
                //        case "lastname":
                //            query = query.OrderBy(p => p.Department.DepName, options.SortDirection);
                //            break;
                //    }
                //}
                result.Items = query.ToList();

                return(result);
            })
                                       );
        }
Exemple #10
0
        public static void GetGridDefinition()
        {
            var colDefaults = new ColumnDefaults()
            {
                EnableSorting = true
            };

            MVCGridDefinitionTable.Add(USERS_LIST, new MVCGridBuilder <UserDTO>(colDefaults)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithSorting(sorting: true, defaultSortColumn: nameof(UserDTO.FirstName), defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(paging: true, itemsPerPage: 15, allowChangePageSize: true, maxItemsPerPage: 100)
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                cols.Add("Username").WithHeaderText("User Name").WithVisibility(true, true).WithValueExpression(p => p.FirstName).WithSorting(false);
                cols.Add("FirstName").WithHeaderText("First Name").WithVisibility(true, true).WithValueExpression(p => p.LastName).WithSorting(false);
                cols.Add("CellNumber").WithHeaderText("Cell Number").WithVisibility(true, true).WithValueExpression(p => p.Cellphone).WithSorting(false);
                cols.Add("Actions").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText("Actions")
                .WithValueExpression(x =>
                {
                    return($"<a id='{Security.Encrypt(x.UserId)}' class='btn btn-success btn-sm' style='color: #fff;' onclick='EditUser(this)'> <i class='fa fa-edit' aria-hidden='true'></i>&nbsp;Edit</a>&nbsp;" +
                           $"<a id='{Security.Encrypt(x.UserId)}' class='btn btn-danger btn-sm ' style='color: #fff;' onclick='DeleteUser(this)'><i class='fa fa-trash' aria-hidden='true'></i>&nbsp; Delete</a>");
                });
            })
                                       .WithAdditionalSetting(MVCGrid.Rendering.BootstrapRenderingEngine.SettingNameTableClass, "table table-striped table-bordered table-hover table-sm") // Example of changing table css class
                                       .WithRetrieveDataMethod((context) =>
            {
                var options           = context.QueryOptions;
                var globalSearch      = options.GetAdditionalQueryOptionString("search");
                var sortColumn        = options.GetSortColumnData <string>();
                var userServiceClient = new UserServiceClient();
                var usersList         = userServiceClient.GetUsers().ToList();
                if (options.GetLimitOffset().HasValue)
                {
                    usersList = usersList.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
                }
                return(new QueryResult <UserDTO>()
                {
                    Items = usersList,
                    TotalRecords = usersList.Count,
                });
            })
                                       );
        }
Exemple #11
0
        public static void RegisterGrids()
        {
            ColumnDefaults colDefauls = new ColumnDefaults()
            {
                EnableSorting = true
            };

            MVCGridDefinitionTable.Add("AuthorSearch", new MVCGridBuilder <Author>(colDefauls)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("Delete").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression(p => p.AuthorId.ToString())
                .WithValueTemplate("<a class='authorSelectLink' value='{Value}' ><i class='glyphicon glyphicon-arrow-left'></i><span class='sr-only'>Details</span></span> </a>");
                cols.Add("AuthorFirstName").WithHeaderText("Name")
                .WithValueExpression(p => p.AuthorFirstName);
                cols.Add("AuthorMiddleName").WithHeaderText("Mid. name")
                .WithValueExpression(p => p.AuthorMiddleName);
                cols.Add("AuthorLastName").WithHeaderText("Last name")
                .WithValueExpression(p => p.AuthorLastName);
            })
                                       .WithAdditionalQueryOptionNames("Search")
                                       .WithAdditionalSetting("RenderLoadingDiv", false)
                                       .WithSorting(true, "AuthorLastName")
                                       .WithPaging(true, 5)
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                int totalRecords;

                var repo            = new UnitOfWork(new DAL.HLibDBContext());
                string globalSearch = options.GetAdditionalQueryOptionString("Search");

                var items = repo.AuthorsRP.GetData(out totalRecords, globalSearch, options.SortColumnName, options.SortDirection == SortDirection.Dsc, options.GetLimitOffset(), options.GetLimitRowcount());
                return(new QueryResult <Author>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
Exemple #12
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("PersonListGrid", new MVCGridBuilder <PersonModel>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithSorting(sorting: false)
                                       .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)
                                       .AddColumns(cols =>
            {
                cols.Add("Id").WithValueExpression((p, c) => c.UrlHelper.Action("PersonDetail", "Home", new { id = p.Id }))
                .WithValueTemplate("<a href='{Value}'>{Model.Id}</a>", false)
                .WithPlainTextValueExpression(p => p.Id.ToString());
                cols.Add("Name").WithHeaderText("Name")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Name);
                cols.Add("Age").WithHeaderText("Age")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Age.ToString());
                cols.Add("Gender").WithValueExpression((p, c) => p.Gender)
                .WithAllowChangeVisibility(true);
                cols.Add("Email")
                .WithVisibility(visible: false, allowChangeVisibility: true)
                .WithValueExpression(p => p.Email);
                cols.Add("Url").WithVisibility(false)
                .WithValueExpression((p, c) => c.UrlHelper.Action("detail", "demo", new { id = p.Id }));
            })
                                       //.WithAdditionalSetting(MVCGrid.Rendering.BootstrapRenderingEngine.SettingNameTableClass, "notreal") // Example of changing table css class
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;
                int totalRecords;
                var repo            = DependencyResolver.Current.GetService <IPersonService>();
                string globalSearch = options.GetAdditionalQueryOptionString("search");
                string sortColumn   = options.GetSortColumnData <string>();

                var items = repo.GetAll(options.GetLimitOffset() ?? 1, options.GetLimitRowcount() ?? 10, out totalRecords);
                return(new QueryResult <PersonModel>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
Exemple #13
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("ManageUsersGrid", new MVCGridBuilder <ManagePersonVm>()
                                       .WithAuthorizationType(AuthorizationType.Authorized)
                                       .WithSorting(true, "FullName")
                                       .WithPaging(paging: true, itemsPerPage: 2, allowChangePageSize: true, maxItemsPerPage: 50)
                                       .AddColumns(cols =>
            {
                cols.Add("FullName").WithHeaderText("Name").WithValueExpression(p => p.FullName).WithFiltering(true);
                cols.Add("Address").WithHeaderText("Address").WithValueExpression(p => p.Address).WithFiltering(true);
                cols.Add("Phone").WithHeaderText("Phone").WithValueExpression(p => p.Phone).WithFiltering(true);
                cols.Add("PhoneConfirmed").WithHeaderText("Phone Confirmed").WithValueExpression(p => p.PhoneConfirmed ? "Yes" : "No").WithFiltering(true);
                cols.Add("Email").WithHeaderText("Email").WithValueExpression(p => p.Email).WithFiltering(true);
                cols.Add("EmailConfirmed").WithHeaderText("Email Confirmed").WithValueExpression(p => p.EmailConfirmed ? "Yes" : "No").WithFiltering(true);
                cols.Add("Gender").WithHeaderText("Gender").WithValueExpression(p => p.Gender).WithFiltering(true);
            }).WithRetrieveDataMethod((context) =>
            {
                var service = DependencyResolver.Current.GetService <IUserService>();
                var options = context.QueryOptions;
                var result  = new QueryResult <ManagePersonVm>();

                if (!options.GetLimitOffset().HasValue)
                {
                    return(result);
                }

                var query         = service.GetAllUsers().AsQueryable();
                var limitOffset   = options.GetLimitOffset();
                var limitRowcount = options.GetLimitRowcount();

                result.TotalRecords = query.Count();

                if (limitOffset != null && limitRowcount != null)
                {
                    query = query.Skip(limitOffset.Value).Take(limitRowcount.Value);
                }

                result.Items = query.ToList();

                return(result);
            }));
        }
Exemple #14
0
    public ActionResult Index()
    {
        GridDefinition <YourModelItem> def = new GridDefinition <YourModelItem>();

        GridColumn <YourModelItem> column = new GridColumn <YourModelItem>();

        column.ColumnName      = "UniqueColumnName";
        column.HeaderText      = "Any Header";
        column.ValueExpression = (i, c) => i.YourProperty;
        def.AddColumn(column);

        def.RetrieveData = (options) => new QueryResult <YourModelItem>()
        {
            Items        = _modelItems,
            TotalRecords = 0
        };

        MVCGridDefinitionTable.Add("NonFluentUsageExample", def);

        return(View());
    }
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("GridAllUsers", new MVCGridBuilder <ADItem>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("sAMAccountName").WithHeaderText("sAMAccountName")
                .WithFiltering(true)
                .WithValueExpression(p => p.sAMAccountName);
                cols.Add("givenName").WithHeaderText("givenName")
                .WithValueExpression(p => p.givenName);
                cols.Add("sn").WithHeaderText("sn")
                .WithValueExpression(p => p.sn);
                cols.Add("distinguishedName").WithHeaderText("distinguishedName")
                .WithValueExpression(p => p.distinguishedName);
                cols.Add("userPrincipalName").WithHeaderText("userPrincipalName")
                .WithValueExpression(p => p.userPrincipalName);
            })
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod((context) =>
            {
                HttpClient HttpClient = new HttpClient();

                var option    = context.QueryOptions;
                var deffilter = option.GetFilterString("Permission");

                var result = new QueryResult <ADItem>();

                var task = Task.Run(async() => await DemoWebinar.GetAllUsers());
                var x    = task.Result;

                result.Items = task.Result;

                return(result);
            })
                                       );
        }
 public static void RegisterGrids()
 {
     MVCGridDefinitionTable.Add("WaitingDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) => {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("VerifyBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("VerifyDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary btn-verify' role='button' data-form-method='post'>Duyệt</a>");
         cols.Add("CancelBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("CancelDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-danger btn-cancel'>Hủy</a>");
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 0
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("WaitingDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 0
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("VerifyDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 99
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("VerifyDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 99
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("CancelDocumentGrid", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 100
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("CancelDocumentGridEm", new MVCGridBuilder <Document>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("code").WithColumnName("code")
         .WithHeaderText("Mã đơn")
         .WithValueExpression(i => i.code);         // use the Value Expression to return the cell text for this column
         cols.Add("status").WithColumnName("status")
         .WithHeaderText("Trạng thái")
         .WithValueExpression((i, c) =>
         {
             if (i.status == 0)
             {
                 return("Chờ duyệt");
             }
             else
             if (i.status == 99)
             {
                 return("Đã duyệt");
             }
             return("Đã hủy");
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("createdBy").WithColumnName("createdBy")
         .WithHeaderText("Người tạo")
         .WithValueExpression(i => i.createdBy.username);
         cols.Add("startDate").WithColumnName("startDate")
         .WithHeaderText("Ngày bắt dầu")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.startDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("endDate").WithColumnName("endDate")
         .WithHeaderText("Ngày kết thúc")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.endDate) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("count").WithColumnName("count")
         .WithHeaderText("Số ngày nghỉ")
         .WithValueExpression((i, c) =>
         {
             int count = (int)((i.endDate - i.startDate) / 1000 / 3600 / 24);
             if (count == 0)
             {
                 return("1 ngày");
             }
             else
             {
                 return(count.ToString() + " ngày");
             }
         });
         cols.Add("DetailBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("ViewDocument", "DonNghiPhep", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary'>Chi tiết</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <Document>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from doc in db.Documents
                        join user in db.Users
                        on doc.createdById equals user.C_id
                        where doc.status == 100
                        select new
         {
             C_id = doc.C_id,
             createdBy = user,
             code = doc.code,
             status = doc.status,
             createdAt = doc.createdAt,
             startDate = doc.startDate,
             endDate = doc.endDate
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var documents = query.ToList().Select(r => new Document
         {
             C_id      = r.C_id,
             createdBy = r.createdBy,
             code      = r.code,
             status    = r.status,
             createdAt = r.createdAt,
             startDate = r.startDate,
             endDate   = r.endDate
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         if (options.GetLimitOffset().HasValue)
         {
             documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         }
         count = documents.Count;
         return(new QueryResult <Document>()
         {
             Items = documents,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
     MVCGridDefinitionTable.Add("UserGrid", new MVCGridBuilder <User>()
                                .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                //.WithPaging(true, 5)
                                .WithAdditionalQueryOptionNames("search")
                                .AddColumns(cols =>
     {
         // Add your columns here
         cols.Add("username").WithColumnName("username")
         .WithHeaderText("Mã nhân viên")
         .WithValueExpression(i => i.username);         // use the Value Expression to return the cell text for this column
         cols.Add("ContractType").WithColumnName("ContractType")
         .WithHeaderText("Ngày phép")
         .WithValueExpression((i, c) =>
         {
             return(i.ContractType.dayOff.ToString());
         });
         cols.Add("dateOff").WithColumnName("dateOff")
         .WithHeaderText("Ngày phép còn lại")
         .WithValueExpression((i, c) =>
         {
             return(i.dayOff.ToString());
         });
         cols.Add("createdAt").WithColumnName("createdAt")
         .WithHeaderText("Thời gian tạo")
         .WithValueExpression((i, c) =>
         {
             return(new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Math.Round(System.Convert.ToDouble(i.createdAt) / 1000d)).ToLocalTime().ToString());
         });
         cols.Add("ContractType").WithColumnName("ContractTypeName")
         .WithHeaderText("Hợp đồng")
         .WithValueExpression((i, c) =>
         {
             return(i.ContractType.name);
         });
         cols.Add("VerifyBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("Edit", "NguoiDung", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button' data-form-method='post'>Sửa</a>");
         cols.Add("CancelBtn").WithSorting(false)
         .WithHeaderText("")
         .WithHtmlEncoding(false)
         .WithValueExpression((p, c) => c.UrlHelper.Action("DeleteUser", "NguoiDung", new { id = p.C_id }))
         .WithValueTemplate("<a href='{Value}' class='btn btn-danger'>Xóa</a>");
     })
                                .WithRetrieveDataMethod((context) =>
     {
         var result          = new QueryResult <User>();
         NghiphepEntities db = new NghiphepEntities();
         // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
         // Use Entity Framework, a module from your IoC Container, or any other method.
         // Return QueryResult object containing IEnumerable<YouModelItem>
         var options = context.QueryOptions;
         var query   = (from user in db.Users
                        join contract in db.ContractTypes
                        on user.contractId equals contract.C_id
                        where user.isActive == true
                        select new
         {
             C_id = user.C_id,
             username = user.username,
             dayOff = user.dayOff,
             createdAt = user.createdAt,
             ContractType = contract
         });
         System.Diagnostics.Debug.WriteLine(options.GetLimitOffset().HasValue);
         var users = query.ToList().Select(r => new User
         {
             C_id         = r.C_id,
             username     = r.username,
             dayOff       = r.dayOff,
             createdAt    = r.createdAt,
             ContractType = r.ContractType
         }).ToList();
         //System.Diagnostics.Debug.WriteLine(options.GetLimitRowcount().Value);
         int count = 0;
         //if (options.GetLimitOffset().HasValue)
         //{
         //    documents = documents.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value).ToList();
         //}
         System.Diagnostics.Debug.WriteLine(users.Count);
         count = users.Count;
         return(new QueryResult <User>()
         {
             Items = users,
             TotalRecords = count     // if paging is enabled, return the total number of records of all pages
         });
     })
                                );
 }
        public override void RegisterGrids()
        {
            UrlHelper UrlHelper = new UrlHelper();

            //Issue6Grid
            MVCGridDefinitionTable.Add("InitialDateGrid", new MVCGridBuilder <IReportInvoiceLine>()
                                       .WithSorting(false)
                                       .WithPaging(false)
                                       .WithAllowChangingPageSize(false)
                                       .WithFiltering(true)
                                       .WithNoResultsMessage("Please enter a year to search for. No results found.")
                                       .AddColumns(cols =>
            {
                cols.Add("Year").WithHeaderText("Year")
                .WithFiltering(true)
                .WithValueExpression(a => a.Year.ToString());

                cols.Add("InvoiceNo").WithHeaderText("Invoice No.")
                .WithVisibility(true, true)
                .WithValueExpression(a => a.InvoiceNumber.ToString());

                cols.Add("City").WithHeaderText("City")
                .WithVisibility(true, true)
                .WithValueExpression(a => a.City);
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                IList <IReportInvoiceLine> list = new List <IReportInvoiceLine>();
                int totalRecords = 0;

                string syear = context.QueryOptions.GetFilterString("Year");
                int year;

                if (Int32.TryParse(syear, out year))
                {
                    list         = ReportInvoiceLines(year);
                    totalRecords = list.Count;
                }

                return(new QueryResult <IReportInvoiceLine>()
                {
                    Items = list,
                    TotalRecords = totalRecords
                });
            })
                                       );


            //Issue6Grid
            MVCGridDefinitionTable.Add("Issue6Grid", new MVCGridBuilder <Job>()
                                       .WithSorting(true)
                                       .WithDefaultSortColumn("Id")
                                       .WithPaging(true)
                                       .WithAllowChangingPageSize(true)
                                       .WithMaxItemsPerPage(100)
                                       .WithItemsPerPage(10)
                                       .WithAdditionalQueryOptionName("globalsearch")
                                       .AddColumns(cols =>
            {
                cols.Add("Id", "Id", row => row.JobId.ToString()).WithSorting(true);
                cols.Add("Name", "Name", row => row.Name).WithSorting(true);

                cols.Add("Contact")
                .WithHeaderText("Contact")
                .WithSorting(false)
                .WithHtmlEncoding(false)
                .WithValueExpression((p, c) => p.Contact != null ? UrlHelper.Action("Edit", "Contact", new { id = p.Contact.Id }) : "")
                .WithValueTemplate("<a href='{Value}'>{Model.Contact.FullName}</a>").WithPlainTextValueExpression((p, c) => p.Contact != null ? p.Contact.FullName : "");

                cols.Add("Delete")
                .WithHtmlEncoding(false)
                .WithSorting(false)
                .WithFiltering(false)
                .WithHeaderText("<input type='checkbox' id='chkselectall'>")
                .WithValueExpression((p, c) => UrlHelper.Action("Save", "Country", new { area = "General", id = p.JobId }))
                .WithValueTemplate("<input type='checkbox' class='select' value='{Model.JobId}'>")
                .WithPlainTextValueExpression((p, c) => "");
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                string globalsearch = options.GetAdditionalQueryOptionString("globalsearch");

                JobRepo repo = new JobRepo();
                int totalRecords;
                var data = repo.GetData(out totalRecords, globalsearch, options.GetLimitOffset(),
                                        options.GetLimitRowcount(), options.GetSortColumnData <string>(), options.SortDirection == SortDirection.Dsc);

                return(new QueryResult <Job>()
                {
                    Items = data,
                    TotalRecords = totalRecords
                });
            })
                                       );

            //Issue21Grid
            //ńłóźćłąę.
            MVCGridDefinitionTable.Add("Issue21Grid", new MVCGridBuilder <TestItem>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("Col1").WithValueExpression(p => "ńłóźćłąę.");
                cols.Add("Col2").WithValueExpression(p => p.Col2);
            })
                                       .WithSorting(true, "Col1")
                                       .WithPaging(true, 10)
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                string col3Filter = context.QueryOptions.GetFilterString("FromDate");

                TestItemRepository repo = new TestItemRepository();
                int totalRecords;
                var items = repo.GetData(out totalRecords, col3Filter, options.GetLimitOffset(), options.GetLimitRowcount(), options.GetSortColumnData <string>(), options.SortDirection == SortDirection.Dsc);



                return(new QueryResult <TestItem>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );

            //Issue17Grid
            MVCGridDefinitionTable.Add("Issue17Grid", new MVCGridBuilder <TestItem>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("Col1").WithValueExpression(p => p.Col1);
                cols.Add("Col2").WithValueExpression(p => p.Col2);


                cols.Add("FromDate").WithHeaderText("From Date").WithFiltering(true).WithValueExpression(x => x.Col3);
            })
                                       .WithSorting(true, "Col1")
                                       .WithPaging(true, 10)
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                string col3Filter = context.QueryOptions.GetFilterString("FromDate");

                TestItemRepository repo = new TestItemRepository();
                int totalRecords;
                var items = repo.GetData(out totalRecords, col3Filter, options.GetLimitOffset(), options.GetLimitRowcount(), options.GetSortColumnData <string>(), options.SortDirection == SortDirection.Dsc);



                return(new QueryResult <TestItem>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );


            //Issue28Grid
            MVCGridDefinitionTable.Add("Issue28Grid", new MVCGridBuilder <TestItem>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("Col1").WithValueExpression(p => p.Col1);
                cols.Add("Col2").WithValueExpression(p => p.Col2);
                cols.Add("Active").WithValueExpression(p => p.Col4.ToString());

                cols.Add("Actions").WithHtmlEncoding(false).WithValueExpression((p, c) =>
                {
                    // here's how to get an action url
                    string url = UrlHelper.Action("action1", "test");

                    // build whatever html you want
                    StringBuilder sb = new StringBuilder();
                    sb.Append("<img src='action1.png' onclick='someFunction()'>");
                    sb.Append("<img src='action2.png' onclick='someFunction()'>");

                    // conditional html
                    if (p.Col4)
                    {
                        sb.Append("<img src='action3.png' onclick='someFunction()'>");
                    }

                    return(sb.ToString());
                });
            })
                                       .WithSorting(true, "Col1")
                                       .WithPaging(true, 10)
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                TestItemRepository repo = new TestItemRepository();
                int totalRecords;
                var items = repo.GetData(out totalRecords, null, options.GetLimitOffset(), options.GetLimitRowcount(), options.GetSortColumnData <string>(), options.SortDirection == SortDirection.Dsc);



                return(new QueryResult <TestItem>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
 public static void RegisterMVCGrid <T>(this IApplicationBuilder app, string name, MVCGridBuilder <T> builder)
 {
     MVCGridDefinitionTable.Add(name, builder);
 }
Exemple #19
0
        public static void RegisterGrids()
        {
            var isViewer = false;

            if (HttpContext.Current != null && HttpContext.Current.User != null)
            {
                isViewer = HttpContext.Current.User.IsInRole("Viewer");
            }

            MVCGridDefinitionTable.Add("MembersGrid", new MVCGridBuilder <Member>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                // Add your columns here
                //cols.Add("View").WithHtmlEncoding(false)
                //    .WithSorting(false)
                //    .WithHeaderText(" ")
                //    .WithValueExpression((p, c) => c.UrlHelper.Action("Details", "Members", new { id = p.Id }))
                //    .WithValueTemplate("<a href='{Value}' class='btn btn-default' role='button'>View</a>");
                cols.Add("Edit").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Edit", "Members", new { id = p.Id }))
                .WithVisibility(!isViewer)
                .WithValueTemplate("<a href='{Value}' class='btn btn-default' role='button'>Edit</a>");
                //cols.Add("Delete").WithHtmlEncoding(false)
                //    .WithSorting(false)
                //    .WithHeaderText(" ")
                //    .WithValueExpression((p, c) => c.UrlHelper.Action("Delete", "Members", new { id = p.Id }))
                //    .WithVisibility(!isViewer)
                //    .WithValueTemplate("<a href='{Value}' class='btn btn-danger' role='button'>Delete</a>");

                cols.Add("MemNum")
                .WithSorting(true)
                .WithHeaderText("Mem Num")
                .WithAllowChangeVisibility(true)
                .WithValueExpression(i => i.MemNum.ToString());
                cols.Add("Status")
                .WithSorting(true)
                .WithFiltering(true)
                .WithHeaderText("Status")
                .WithAllowChangeVisibility(true)
                .WithValueExpression(i => i.Status.Name);
                cols.Add("LastName")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Last")
                .WithValueExpression(i => i.LastName);
                cols.Add("FirstName")
                .WithSorting(true)
                .WithHeaderText("First")
                .WithAllowChangeVisibility(true)
                .WithValueExpression(i => i.FirstName);
                cols.Add("MiddleName")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Middle")
                .WithValueExpression(i => i.MiddleName);
                cols.Add("NickName")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Nick")
                .WithValueExpression(i => i.NickName);

                cols.Add("Title")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Title")
                .WithValueExpression(i => i.Title);
                cols.Add("Suffix")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Suffix")
                .WithValueExpression(i => i.Suffix);
                cols.Add("HomePhone")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("HomePhone")
                .WithValueExpression(i => i.HomePhone);
                cols.Add("CellPhone")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("CellPhone")
                .WithValueExpression(i => i.CellPhone);
                cols.Add("OfficePhone")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("OfficePhone")
                .WithValueExpression(i => i.OfficePhone);

                cols.Add("StreetAddress")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Street")
                .WithValueExpression(i => i.StreetAddress);
                cols.Add("City")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("City")
                .WithValueExpression(i => i.City);
                cols.Add("State")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("State")
                .WithValueExpression(i => i.State);
                cols.Add("Zip")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Zip")
                .WithValueExpression(i => i.Zip);

                cols.Add("Email")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Email")
                .WithValueExpression(i => i.Email);
                cols.Add("Spouse")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Spouse")
                .WithValueExpression(i => i.Spouse);
                cols.Add("Clan")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Clan")
                .WithValueExpression(i => i.Clan);
                cols.Add("Business")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Business")
                .WithValueExpression(i => i.Business);
                cols.Add("WaitingStatus")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("WaitingStatus")
                .WithValueExpression(i => i.WaitingStatus);
                cols.Add("NewMemberOrientation")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("NMOrientation")
                .WithValueExpression(i => i.NewMemberOrientation);
                cols.Add("Kilted")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Kilted")
                .WithValueExpression(i => i.Kilted);

                cols.Add("ApplicationDate")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Application")
                .WithValueExpression(i => i.ApplicationDate.HasValue ? i.ApplicationDate.Value.ToString("MM/dd/yyyy") : "");
                cols.Add("ElectionDate")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Election")
                .WithValueExpression(i => i.ElectionDate.HasValue ? i.ElectionDate.Value.ToString("MM/dd/yyyy") : "");
                cols.Add("ActivitionDate")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Activition")
                .WithValueExpression(i => i.ActivitionDate.HasValue ? i.ActivitionDate.Value.ToString("MM/dd/yyyy") : "");
                cols.Add("TerminationDate")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Termination")
                .WithValueExpression(i => i.TerminationDate.HasValue ? i.TerminationDate.Value.ToString("MM/dd/yyyy") : "");

                cols.Add("Reason")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("Reason")
                .WithValueExpression(i => i.Reason);
                cols.Add("LastUpdate")
                .WithSorting(true)
                .WithAllowChangeVisibility(true)
                .WithHeaderText("LastUpdate")
                .WithValueExpression(i => i.LastUpdate.ToString("MM/dd/yyyy"));
            })
                                       .WithSorting(true, "MemNum")
                                       .WithPaging(true, 20)
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod((context) =>
            {
                try
                {
                    var options         = context.QueryOptions;
                    var result          = new QueryResult <Member>();
                    string globalSearch = options.GetAdditionalQueryOptionString("search");
                    var status          = options.GetFilterString("Status");
                    var statusId        = string.IsNullOrEmpty(status) ? -1 : Convert.ToInt32(status);
                    using (var db = new ApplicationDbContext())
                    {
                        var query = db.Members.Where(x => (string.IsNullOrEmpty(globalSearch) ||
                                                           (x.FirstName.Contains(globalSearch) ||
                                                            x.LastName.Contains(globalSearch) ||
                                                            x.Email.Contains(globalSearch) ||
                                                            x.Clan.Contains(globalSearch) ||
                                                            x.Business.Contains(globalSearch) ||
                                                            x.City.Contains(globalSearch))) && (statusId == -1 || x.StatusId == statusId))
                                    .Include(x => x.Status)
                                    .OrderBy(x => x.MemNum)
                                    .AsQueryable();
                        result.TotalRecords = query.Count();
                        if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                        {
                            switch (options.SortColumnName)
                            {
                            case "Status":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.StatusId);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.StatusId);
                                }
                                break;

                            case "FirstName":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.FirstName);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.FirstName);
                                }
                                break;

                            case "MiddleName":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.MiddleName);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.MiddleName);
                                }
                                break;

                            case "NickName":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.NickName);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.NickName);
                                }
                                break;

                            case "LastName":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.LastName);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.LastName);
                                }
                                break;

                            case "Title":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Title);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Title);
                                }
                                break;

                            case "Suffix":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Suffix);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Suffix);
                                }
                                break;

                            case "StreetAddress":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.StreetAddress);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.StreetAddress);
                                }
                                break;

                            case "City":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.City);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.City);
                                }
                                break;

                            case "State":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.State);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.State);
                                }
                                break;

                            case "Zip":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Zip);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Zip);
                                }
                                break;

                            case "HomePhone":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.HomePhone);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.HomePhone);
                                }
                                break;

                            case "OfficePhone":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.OfficePhone);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.OfficePhone);
                                }
                                break;

                            case "CellPhone":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.CellPhone);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.CellPhone);
                                }
                                break;

                            case "Email":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Email);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Email);
                                }
                                break;

                            case "Clan":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Clan);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Clan);
                                }
                                break;

                            case "Kilted":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Kilted);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Kilted);
                                }
                                break;

                            case "Business":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Business);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Business);
                                }
                                break;

                            case "ApplicationDate":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.ApplicationDate);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.ApplicationDate);
                                }
                                break;

                            case "ElectionDate":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.ElectionDate);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.ElectionDate);
                                }
                                break;

                            case "ActivitionDate":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.ActivitionDate);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.ActivitionDate);
                                }
                                break;

                            case "TerminationDate":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.TerminationDate);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.TerminationDate);
                                }
                                break;

                            case "Reason":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Reason);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Reason);
                                }
                                break;

                            case "NewMemberOrientation":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.NewMemberOrientation);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.NewMemberOrientation);
                                }
                                break;

                            case "WaitingStatus":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.WaitingStatus);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.WaitingStatus);
                                }
                                break;

                            case "LastUpdate":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.LastUpdate);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.LastUpdate);
                                }
                                break;

                            case "Spouse":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.Spouse);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.Spouse);
                                }
                                break;

                            case "MemNum":
                                if (options.SortDirection == SortDirection.Asc)
                                {
                                    query = query.OrderBy(p => p.MemNum);
                                }
                                else
                                {
                                    query = query.OrderByDescending(p => p.MemNum);
                                }
                                break;
                            }
                        }
                        if (options.GetLimitOffset().HasValue)
                        {
                            query = query.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                        }
                        result.Items = query.ToList();
                    }
                    return(result);
                }
                catch (Exception e)
                {
                    return(null);
                }
            })
                                       );
        }
Exemple #20
0
        public static void RegisterGrids()
        {
            GridDefaults gridDefaults = new GridDefaults()
            {
                Paging           = true,
                ItemsPerPage     = 20,
                Sorting          = true,
                NoResultsMessage = "Sorry, no results were found"
            };
            ColumnDefaults colDefaults = new ColumnDefaults()
            {
                EnableSorting = true
            };

            MVCGridDefinitionTable.Add("StudentGrid", new MVCGridBuilder <tblStudent>(colDefaults)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add("StudID").WithValueExpression(p => p.StudID.ToString());
                cols.Add("StudCode").WithValueExpression(p => p.StudCode.ToString());
                cols.Add("FullName").WithHeaderText("FullName")
                .WithValueExpression(p => p.FullName);
            })
                                       .WithSorting(true, "StudCode")
                                       .WithPaging(true, 10)
                                       .WithRetrieveDataMethod((context) =>
            {
                var result = new QueryResult <tblStudent>();
                using (var db = new SchoolTimeContext())
                {
                    result.Items = db.tblStudents.ToList();
                }
                return(result);
            })
                                       );

            MVCGridDefinitionTable.Add("SujectsGrid", new MVCGridBuilder <tblSuject>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add("SujectID").WithValueExpression(p => p.SujectID.ToString());
                cols.Add("SujectCode").WithValueExpression(p => p.SujectCode.ToString());
                cols.Add("SujectName").WithValueExpression(p => p.SujectName.ToString());
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                var result = new QueryResult <tblSuject>();
                using (var db = new SchoolTimeContext())
                {
                    result.Items = db.tblSujects.ToList();
                }
                return(result);
            })
                                       );

            MVCGridDefinitionTable.Add("TeacherGrid", new MVCGridBuilder <tblTeacher>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add("teachID").WithValueExpression(p => p.teachID.ToString());
                cols.Add("teachCode").WithValueExpression(p => p.teachCode.ToString());
                cols.Add("FullName").WithValueExpression(p => p.FullName.ToString());
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                var result = new QueryResult <tblTeacher>();
                using (var db = new SchoolTimeContext())
                {
                    result.Items = db.tblTeachers.ToList();
                }
                return(result);
            })
                                       );
        }
Exemple #21
0
        /// <summary>
        /// Register all the MVCGrid.Net
        /// </summary>
        public static void RegisterGrids()
        {
            #region " MVCGrid.Net Example "

            /* Example:
             * MVCGridDefinitionTable.Add("UsageExample", new MVCGridBuilder<YourModelItem>()
             *  .WithAuthorizationType(AuthorizationType.AllowAnonymous)
             *  .AddColumns(cols =>
             *  {
             *      // Add your columns here
             *      cols.Add().WithColumnName("UniqueColumnName")
             *          .WithHeaderText("Any Header")
             *          .WithValueExpression(i => i.YourProperty); // use the Value Expression to return the cell text for this column
             *      cols.Add().WithColumnName("UrlExample")
             *          .WithHeaderText("Edit")
             *          .WithValueExpression((i, c) => c.UrlHelper.Action("detail", "demo", new { id = i.Id }));
             *  })
             *  .WithRetrieveDataMethod((context) =>
             *  {
             *      // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
             *      // Use Entity Framework, a module from your IoC Container, or any other method.
             *      // Return QueryResult object containing IEnumerable<YouModelItem>
             *
             *      return new QueryResult<YourModelItem>()
             *      {
             *          Items = new List<YourModelItem>(),
             *          TotalRecords = 0 // if paging is enabled, return the total number of records of all pages
             *      };
             *
             *  })
             * );
             */
            #endregion

            #region " The Search Page Grid "
            // The Search Page
            MVCGridDefinitionTable.Add("SearchGrid", new MVCGridBuilder <Models.Character>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add().WithColumnName("Name")
                .WithHeaderText("Name")
                .WithSorting(true)
                .WithValueTemplate("<a href='{Value}'>{Model.Name}</a>", false)
                .WithValueExpression((p, c) => c.UrlHelper.Action("Character", "WGO", new { name = p.Name, realm = p.Realm }));
                cols.Add().WithColumnName("Level")
                .WithHeaderText("Level")
                .WithSorting(true)
                .WithValueExpression(i => i.Level.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Level) ? "table-success" : "");
                cols.Add().WithColumnName("Class")
                .WithSorting(true)
                .WithValueExpression(i => i.Class);
                cols.Add().WithColumnName("AchievementPoints")
                .WithHeaderText("Achievement Points")
                .WithSorting(true)
                .WithValueExpression(i => i.AchievementPoints.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_AchievementPoints) ? "table-success" : "");
                cols.Add().WithColumnName("MaxiLevel")
                .WithHeaderText("Max iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Max_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Max_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("EquippediLevel")
                .WithHeaderText("Equipped iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Equipped_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Equipped_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("LastModified")
                .WithHeaderText("Last Modified")
                .WithSorting(true)
                .WithValueExpression(i => i.LastUpdated.ToString());
            })
                                       .WithPageParameterNames("name")
                                       .WithPageParameterNames("realm")
                                       //.WithQueryOnPageLoad(false) // this does not seem to work - Grid will flash, but then will disappear
                                       .WithPreloadData(false)
                                       .WithSorting(true, "EquippediLevel")
                                       .WithRetrieveDataMethod((context) =>
            {
                // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                // Use Entity Framework, a module from your IoC Container, or any other method.
                // Return QueryResult object containing IEnumerable<YouModelItem>
                var options            = context.QueryOptions;
                string searchName      = options.GetPageParameterString("name");
                string searchRealm     = options.GetPageParameterString("realm");
                Models.WGODBContext db = new Models.WGODBContext();
                var query = db.Characters.Where(s => s.Name == searchName && s.Realm == searchRealm).OrderByDescending(s => s.Equipped_iLevel);

                int itemCount = query.Count();

                return(new QueryResult <Models.Character>()
                {
                    // Return the List of Characters
                    Items = query,

                    // if paging is enabled, return the total number of records of all pages
                    TotalRecords = query.Count()
                });
            })
                                       );
            #endregion

            #region " The Guild Page Grid "
            // The Guild Page
            MVCGridDefinitionTable.Add("GuildRoster", new MVCGridBuilder <Models.RankedCharacter>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithSorting(sorting: true, defaultSortColumn: "default", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                cols.Add().WithColumnName("Rank")
                .WithHeaderText("#")
                .WithValueExpression(i => i.Rank.ToString());
                cols.Add().WithColumnName("Name")
                .WithHeaderText("Name")
                .WithSorting(true)
                .WithValueTemplate("<a href='{Value}'>{Model.Name}</a>", false)
                .WithValueExpression((p, c) => c.UrlHelper.Action("Character", "WGO", new { name = p.Name, realm = p.Realm }));
                cols.Add().WithColumnName("Level")
                .WithHeaderText("Level")
                .WithSorting(true)
                .WithValueExpression(i => i.Level.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Level) ? "table-success" : "");
                cols.Add().WithColumnName("Class")
                .WithSorting(true)
                .WithValueExpression(i => i.Class);
                cols.Add().WithColumnName("AchievementPoints")
                .WithHeaderText("Achievement Points")
                .WithSorting(true)
                .WithValueExpression(i => i.AchievementPoints.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_AchievementPoints) ? "table-success" : "");
                cols.Add().WithColumnName("Max_iLevel")
                .WithHeaderText("Max iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Max_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Max_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("Equipped_iLevel")
                .WithHeaderText("Equipped iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Equipped_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Equipped_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("LastUpdated")
                .WithHeaderText("Last Updated")
                .WithSorting(true)
                .WithValueExpression(i => i.LastUpdated.ToString())
                .WithCellCssClassExpression(i => "small");
                cols.Add("Rescan").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Rescan", "WGO", new { name = p.Name, realm = p.Realm }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button' onclick=$.blockUI()>Rescan</a>");
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                var options         = context.QueryOptions;
                string globalSearch = options.GetAdditionalQueryOptionString("search") == null ? string.Empty : options.GetAdditionalQueryOptionString("search");
                string sortColumn   = options.GetSortColumnData <string>() == null ? string.Empty : options.GetSortColumnData <string>().ToLower();
                var result          = new QueryResult <Models.RankedCharacter>();

                // Dependency Setup...
                int totalRecords = 0;
                var repo         = DependencyResolver.Current.GetService <IRankedCharacterRepository>();

                // Check to see if the dependency was found
                if (repo != null)
                {
                    var test            = repo.GetData(out totalRecords, WGOConstants.GuildRoster, globalSearch, options.GetLimitOffset(), options.GetLimitRowcount(), sortColumn, options.SortDirection == SortDirection.Asc);
                    result.TotalRecords = totalRecords;
                    result.Items        = test;
                }

                return(result);
            })
                                       );
            #endregion

            #region " The Raid Page Grid "
            // The Raid page
            MVCGridDefinitionTable.Add("RaidRoster", new MVCGridBuilder <Models.Character>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add().WithColumnName("Role")
                .WithHeaderText("Role")
                .WithSorting(true)
                .WithValueExpression(i => i.Role);
                cols.Add().WithColumnName("Name")
                .WithHeaderText("Name")
                .WithSorting(true)
                .WithValueTemplate("<a href='{Value}'>{Model.Name}</a>", false)
                .WithValueExpression((p, c) => c.UrlHelper.Action("Character", "WGO", new { name = p.Name, realm = p.Realm }));
                cols.Add().WithColumnName("Level")
                .WithHeaderText("Level")
                .WithSorting(true)
                .WithValueExpression(i => i.Level.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Level) ? "table-success" : "");
                cols.Add().WithColumnName("Class")
                .WithSorting(true)
                .WithValueExpression(i => i.Class);
                cols.Add().WithColumnName("AchievementPoints")
                .WithHeaderText("Achievement Points")
                .WithSorting(true)
                .WithValueExpression(i => i.AchievementPoints.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_AchievementPoints) ? "table-success" : "");
                cols.Add().WithColumnName("MaxiLevel")
                .WithHeaderText("Max iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Max_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Max_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("EquippediLevel")
                .WithHeaderText("Equipped iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Equipped_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Equipped_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("LastModified")
                .WithHeaderText("Last Modified")
                .WithSorting(true)
                .WithValueExpression(i => i.LastUpdated.ToString());
                cols.Add("Recan").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Rescan", "WGO", new { name = p.Name, realm = p.Realm, role = p.Role }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button' onclick=$.blockUI()>Rescan</a>");
                cols.Add("Delete").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Delete", "WGO", new { name = p.Name, realm = p.Realm, role = p.Role }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-danger' role='button' onclick=$.blockUI()>Delete</a>");
            })
                                       .WithPreloadData(false)
                                       .WithSorting(sorting: true, defaultSortColumn: "EquippediLevel", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(true, 20)
                                       .WithClientSideLoadingCompleteFunctionName("hideLoading")
                                       .WithRetrieveDataMethod((context) =>
            {
                var options         = context.QueryOptions;
                string globalSearch = options.GetAdditionalQueryOptionString("search");
                string sortColumn   = options.GetSortColumnData <string>();
                var result          = new QueryResult <Models.Character>();

                // Get the current data now...
                using (var db = new Models.WGODBContext())
                {
                    // Get the data
                    var query = db.Characters.AsQueryable().Where(s => s.Roster == WGOConstants.RaidRoster);

                    // Sort the data
                    switch (options.SortColumnName.ToLower())
                    {
                    case "role":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;

                    case "name":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Name) : query.OrderByDescending(p => p.Name);
                        break;

                    case "level":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Level) : query.OrderByDescending(p => p.Level);
                        break;

                    case "class":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Class) : query.OrderByDescending(p => p.Class);
                        break;

                    case "achievementpoints":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.AchievementPoints) : query.OrderByDescending(p => p.AchievementPoints);
                        break;

                    case "maxilevel":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Max_iLevel).ThenBy(p => p.Name);
                        break;

                    case "equippedilevel":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;

                    case "lastmodified":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.LastUpdated) : query.OrderByDescending(p => p.LastUpdated);
                        break;

                    default:
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;
                    }

                    // Get the full record count, before the paging
                    result.TotalRecords = query.Count();

                    // Paging
                    if (options.GetLimitOffset().HasValue)
                    {
                        query = query.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                    }

                    // Done!
                    result.Items = query.ToList();
                }

                return(result);
            })
                                       );
            #endregion

            #region " The My Roster Page Grid "
            // The Raid page
            MVCGridDefinitionTable.Add("MyRoster", new MVCGridBuilder <Models.Character>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add().WithColumnName("Role")
                .WithHeaderText("Role")
                .WithSorting(true)
                .WithValueExpression(i => i.Role);
                cols.Add().WithColumnName("Name")
                .WithHeaderText("Name")
                .WithSorting(true)
                .WithValueTemplate("<a href='{Value}'>{Model.Name}</a>", false)
                .WithValueExpression((p, c) => c.UrlHelper.Action("Character", "WGO", new { name = p.Name, realm = p.Realm }));
                cols.Add().WithColumnName("Level")
                .WithHeaderText("Level")
                .WithSorting(true)
                .WithValueExpression(i => i.Level.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Level) ? "table-success" : "");
                cols.Add().WithColumnName("Class")
                .WithSorting(true)
                .WithValueExpression(i => i.Class);
                cols.Add().WithColumnName("AchievementPoints")
                .WithHeaderText("Achievement Points")
                .WithSorting(true)
                .WithValueExpression(i => i.AchievementPoints.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_AchievementPoints) ? "table-success" : "");
                cols.Add().WithColumnName("MaxiLevel")
                .WithHeaderText("Max iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Max_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Max_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("EquippediLevel")
                .WithHeaderText("Equipped iLevel")
                .WithSorting(true)
                .WithValueExpression(i => i.Equipped_iLevel.ToString())
                .WithCellCssClassExpression(p => DateModifiedLately(p.Modified_Equipped_iLevel) ? "table-success" : "");
                cols.Add().WithColumnName("LastModified")
                .WithHeaderText("Last Modified")
                .WithSorting(true)
                .WithValueExpression(i => i.LastUpdated.ToString());
                cols.Add("Recan").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Rescan", "WGO", new { name = p.Name, realm = p.Realm, role = p.Role }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button' onclick=$.blockUI()>Rescan</a>");
                cols.Add("Delete").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Delete", "WGO", new { name = p.Name, realm = p.Realm, role = p.Role }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-danger' role='button' onclick=$.blockUI()>Delete</a>");
            })
                                       .WithPreloadData(false)
                                       .WithSorting(sorting: true, defaultSortColumn: "EquippediLevel", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(true, 20)
                                       .WithClientSideLoadingCompleteFunctionName("hideLoading")
                                       .WithRetrieveDataMethod((context) =>
            {
                var options         = context.QueryOptions;
                string globalSearch = options.GetAdditionalQueryOptionString("search");
                string sortColumn   = options.GetSortColumnData <string>();
                var result          = new QueryResult <Models.Character>();

                // Get the current data now...
                using (var db = new Models.WGODBContext())
                {
                    // Get the data
                    var query = db.Characters.AsQueryable().Where(s => s.Roster == WGOConstants.MyRoster);

                    // Sort the data
                    switch (options.SortColumnName.ToLower())
                    {
                    case "role":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;

                    case "name":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Name) : query.OrderByDescending(p => p.Name);
                        break;

                    case "level":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Level) : query.OrderByDescending(p => p.Level);
                        break;

                    case "class":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.Class) : query.OrderByDescending(p => p.Class);
                        break;

                    case "achievementpoints":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.AchievementPoints) : query.OrderByDescending(p => p.AchievementPoints);
                        break;

                    case "maxilevel":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Max_iLevel).ThenBy(p => p.Name);
                        break;

                    case "equippedilevel":
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;

                    case "lastmodified":
                        query = options.SortDirection == SortDirection.Asc ? query.OrderBy(p => p.LastUpdated) : query.OrderByDescending(p => p.LastUpdated);
                        break;

                    default:
                        query = query.OrderByDescending(p => p.Role).ThenByDescending(p => p.Level).ThenByDescending(p => p.Equipped_iLevel).ThenBy(p => p.Name);
                        break;
                    }

                    // Get the full record count, before the paging
                    result.TotalRecords = query.Count();

                    // Paging
                    if (options.GetLimitOffset().HasValue)
                    {
                        query = query.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                    }

                    // Done!
                    result.Items = query.ToList();
                }

                return(result);
            })
                                       );
            #endregion
        }
Exemple #22
0
        public async Task <ActionResult> Index(long?ntId)
        {
            if (ntId.HasValue)
            {
                InsuranceBusiness.BusinessLayer.MarkNotificationAsRead(ntId.Value);
            }

            UsersManagementViewModel model = new UsersManagementViewModel();

            if (null != this.User && this.User.Identity.IsAuthenticated)
            {
                var UserManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                var user        = await UserManager.FindByNameAsync(this.User.Identity.Name);

                if (null != user)
                {
                    FillModel(model, user.Id, false);
                    //model.Profile = InsuranceBusiness.BusinessLayer.GetUserProfile(user.Id);
                }
                else
                {
                    return(RedirectToAction("LogOff", "Account"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            try
            {
                var grid = MVCGridDefinitionTable.GetDefinition <UserProfileModelObject>("UsersManagementGrid");
            }
            catch (Exception)
            {
                MVCGridDefinitionTable.Add("UsersManagementGrid", new MVCGridBuilder <UserProfileModelObject>()
                                           .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                           //.WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                           .AddColumns(cols =>
                {
                    // Add your columns here
                    cols.Add().WithColumnName("FirstName")
                    .WithHeaderText(Resources.Resources.FirstName)
                    .WithValueExpression(i => i.FirstName)
                    .WithAllowChangeVisibility(true)
                    .WithFiltering(true)
                    .WithSorting(true)
                    .WithVisibility(true, true);     // use the Value Expression to return the cell text for this column
                    cols.Add().WithColumnName("LastName")
                    .WithHeaderText(Resources.Resources.LastName)
                    .WithValueExpression(i => i.LastName)
                    .WithAllowChangeVisibility(true)
                    .WithFiltering(true)
                    .WithSorting(true)
                    .WithVisibility(true, true);     // use the Value Expression to return the cell text for this column
                    cols.Add().WithColumnName("Username")
                    .WithHeaderText(Resources.Resources.Email)
                    .WithValueExpression(i => i.User.UserName)
                    .WithAllowChangeVisibility(true)
                    .WithFiltering(true)
                    .WithSorting(true)
                    .WithVisibility(true, true);     // use the Value Expression to return the cell text for this column
                    cols.Add().WithColumnName("ProfessionalNumber")
                    .WithHeaderText(Resources.Resources.ProfessionalNumber)
                    .WithValueExpression(i => i.ProfessionalNumber)
                    .WithAllowChangeVisibility(true)
                    .WithFiltering(true)
                    .WithSorting(true)
                    .WithVisibility(true, true);     // use the Value Expression to return the cell text for this column
                    cols.Add("CreateDate")
                    .WithSorting(true)
                    .WithHeaderText(Resources.Resources.RegisterDate)
                    .WithCellCssClassExpression(p => "dateCell")
                    .WithValueExpression(p => p.CreateDate.ToString("dd-MM-yyyy"))
                    .WithVisibility(true, true);
                    cols.Add("Active").WithHtmlEncoding(false)
                    .WithSorting(true)
                    .WithHeaderText(Resources.Resources.Active)
                    .WithValueExpression((p, c) => !p.User.LockoutEndDateUtc.HasValue ? "checked" : "")
                    .WithValueTemplate("<input type=\"checkbox\" disabled=\"disabled\" {Value}>")
                    .WithCellCssClassExpression(p => "mvcgrid-cell")
                    .WithVisibility(true, true);
                    cols.Add("Edit").WithHtmlEncoding(false)
                    .WithSorting(false)
                    .WithHeaderText(" ")
                    .WithValueExpression((p, c) => c.UrlHelper.Action("Edit", "UsersManagement", new { id = p.ID }))
                    .WithValueTemplate("<a href='{Value}' class='btn btn-warning lnkEdit'>" + Resources.Resources.Edit + "</a>")
                    .WithVisibility(true, false);
                    cols.Add("Delete").WithHtmlEncoding(false)
                    .WithSorting(false)
                    .WithHeaderText(" ")
                    .WithValueExpression((p, c) => c.UrlHelper.Action("Delete", "UsersManagement", new { id = p.ID }))
                    .WithValueTemplate("<a href='{Value}' class='btn btn-danger lnkDelete' role='button'>" + Resources.Resources.Delete + "</a>")
                    .WithVisibility(true, false);
                })
                                           .WithAdditionalQueryOptionNames("Search")
                                           .WithSorting(true, "FirstName")
                                           .WithPaging(paging: true, itemsPerPage: 100, allowChangePageSize: true, maxItemsPerPage: 100)
                                           .WithProcessingMessage(Resources.Resources.Loading)
                                           .WithNextButtonCaption(Resources.Resources.Next)
                                           .WithPreviousButtonCaption(Resources.Resources.Previous)
                                           .WithSummaryMessage(Resources.Resources.ShowingGridEntries)
                                           .WithRetrieveDataMethod((context) =>
                {
                    // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                    // Use Entity Framework, a module from your IoC Container, or any other method.
                    // Return QueryResult object containing IEnumerable<YouModelItem>

                    var options = context.QueryOptions;
                    var result  = new QueryResult <UserProfileModelObject>();
                    var query   = BusinessItemsLists.GetUsers();
                    if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                    {
                        switch (options.SortColumnName.ToLower())
                        {
                        case "firstname":
                            if (options.SortDirection == SortDirection.Asc ||
                                options.SortDirection == SortDirection.Unspecified)
                            {
                                query = query.OrderBy(p => p.FirstName).ToList();
                            }
                            else
                            {
                                query = query.OrderByDescending(p => p.FirstName).ToList();
                            }

                            break;

                        case "lastname":
                            if (options.SortDirection == SortDirection.Asc ||
                                options.SortDirection == SortDirection.Unspecified)
                            {
                                query = query.OrderBy(p => p.LastName).ToList();
                            }
                            else
                            {
                                query = query.OrderByDescending(p => p.LastName).ToList();
                            }

                            break;

                        case "username":
                            if (options.SortDirection == SortDirection.Asc ||
                                options.SortDirection == SortDirection.Unspecified)
                            {
                                query = query.OrderBy(p => p.User.UserName).ToList();
                            }
                            else
                            {
                                query = query.OrderByDescending(p => p.User.UserName).ToList();
                            }

                            break;

                        case "active":
                            if (options.SortDirection == SortDirection.Asc ||
                                options.SortDirection == SortDirection.Unspecified)
                            {
                                query = query.OrderBy(p => p.Active).ToList();
                            }
                            else
                            {
                                query = query.OrderByDescending(p => p.Active).ToList();
                            }

                            break;

                        case "createdate":
                            if (options.SortDirection == SortDirection.Asc ||
                                options.SortDirection == SortDirection.Unspecified)
                            {
                                query = query.OrderBy(p => p.CreateDate).ToList();
                            }
                            else
                            {
                                query = query.OrderByDescending(p => p.CreateDate).ToList();
                            }

                            break;
                        }
                    }

                    string globalSearch = options.GetAdditionalQueryOptionString("Search");
                    if (null != globalSearch)
                    {
                        query = query.Where(i =>
                                            (null != i.FirstName && i.FirstName.ToLower().Contains(globalSearch.ToLower())) ||
                                            (null != i.LastName && i.LastName.ToLower().Contains(globalSearch.ToLower())) ||
                                            (null != i.User && null != i.User.UserName && i.User.UserName.ToLower().Contains(globalSearch.ToLower()))
                                            //|| (null != i.ContactEmail && i.ContactEmail.Contains(globalSearch))
                                            ).ToList();
                    }

                    result.TotalRecords = query.Count();

                    if (options.GetLimitOffset().HasValue)
                    {
                        query = query
                                .Skip(options.GetLimitOffset().Value)
                                .Take(options.GetLimitRowcount().Value)
                                .ToList();
                    }

                    result.Items = query;

                    return(result);

                    //return new QueryResult<UserProfileModelObject>()
                    //{
                    //    Items = query,
                    //    TotalRecords = query.Count // if paging is enabled, return the total number of records of all pages
                    //};
                })
                                           );
            }

            return(View(model));
        }
        public static void RegisterGrids()
        {
            try
            {
                ColumnDefaults colDefauls = new ColumnDefaults()
                {
                    EnableSorting = true
                };

                MVCGridDefinitionTable.Add("PresidentsGrid", new MVCGridBuilder <PresidentModel>(colDefauls)
                                           .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                           .AddColumns(cols =>
                {
                    cols.Add("Id").WithSorting(false)
                    .WithHeaderText("Id").WithValueExpression(i => i.id.ToString());
                    cols.Add("Name").WithHeaderText("President")
                    .WithValueExpression(i => i.Name);
                    cols.Add("Birthday").WithSorting(false)
                    .WithHeaderText("Birth Day").WithValueExpression(i => i.Birthday);
                    cols.Add("Birthplace").WithSorting(false)
                    .WithHeaderText("Birth Place").WithValueExpression(i => i.Birthplace);
                    cols.Add("Deathday").WithSorting(false)
                    .WithHeaderText("Death Day").WithValueExpression(i => i.Deathday);
                    cols.Add("Deathplace").WithSorting(false)
                    .WithHeaderText("Death Place").WithValueExpression(i => i.Deathplace);
                })
                                           .WithSorting(true, "Name")
                                           .WithRetrieveDataMethod((context) =>
                {
                    List <PresidentModel> presidents = HomeController.GetAllPresident();

                    var options = context.QueryOptions;
                    var result  = new QueryResult <PresidentModel>();

                    if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                    {
                        if (options.SortDirection.ToString() == "Asc")
                        {
                            presidents = presidents.OrderBy(x => x.Name).ToList();
                        }
                        else if (options.SortDirection.ToString() == "Dsc")
                        {
                            presidents = presidents.OrderByDescending(x => x.Name).ToList();
                        }

                        result.Items = presidents;
                    }
                    else
                    {
                        result.Items = presidents;
                    }

                    result.TotalRecords = presidents.Count;

                    return(result);
                })
                                           );
            }
            catch (Exception ex)
            {
            }
        }
Exemple #24
0
        public static void RegisterGrids()
        {
            /*
             * var fullNameColumn = new GridColumn<Player>()
             * {
             *  ColumnName = "FullName",
             *  HeaderText = "Full Name",
             *  HtmlEncode = false,
             *  ValueExpression = (p, c) => p.FullName.ToString()
             * };
             *
             * MVCGridDefinitionTable.Add("PlayersGrid", new MVCGridBuilder<Player>());
             *
             * GridDefinition<Player> def = MVCGridDefinitionTable.GetDefinition<Player>("PlayersGrid");
             *
             * def.RetrieveData = (options) =>
             * {
             *  DRDRepository repo = new DRDRepository();
             *  List<Player> listModels = repo.ListPlayers().ToList();
             *  var result = new QueryResult<Player>();
             *  var query = listModels.AsQueryable();
             *
             *  result.TotalRecords = query.Count();
             *  result.Items = query.ToList();
             *  return result;
             * };
             *
             * def.AddColumn(fullNameColumn);
             */

            //Func<GridContext, QueryResult<Player>> loadDate = (context) =>
            //{
            //    var result = new QueryResult<Player>();
            //    DRDRepository repo = new DRDRepository();
            //    result.Items = repo.ListPlayers(context.GridName);
            //    return result;
            //};

            //MVCGridDefinitionTable.Add("PlayersGrid", new MVCGridBuilder<Player>()
            //    .AddColumn(fullNameColumn).WithRet

            //);



            MVCGridDefinitionTable.Add("PlayersGrid", new MVCGridBuilder <Player>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous).WithPaging(false)
                                       .WithSorting(sorting: true, defaultSortColumn: "PlayerPID", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(true, 100, true, 100)
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add("PlayerPID").WithValueExpression(p => p.PlayerPID.ToString());
                cols.Add().WithValueExpression(p => p.FullName)
                .WithColumnName("Full Name")
                .WithHeaderText("Full Name")
                .WithAllowChangeVisibility(true)
                //.WithFiltering(true)
                .WithSorting(true);
                cols.Add().WithValueExpression(p => p.FirstName)
                .WithColumnName("firstname")
                .WithHeaderText("First Name")
                .WithAllowChangeVisibility(true)
                //.WithFiltering(true)
                .WithSorting(true);
                //cols.Add().WithValueExpression(p => p.LastName);
                //cols.Add().WithValueExpression(p => p.PositionEID.ToString()).WithColumnName("Position");
                //cols.Add().WithValueExpression(p => p.ABs.ToString()).WithColumnName("ABs");
                //cols.Add().WithValueExpression(p => p.IPs.ToString()).WithColumnName("IPs");


                // use the Value Expression to return the cell text for this column
                //cols.Add().WithColumnName("UrlExample")
                //    .WithHeaderText("Edit")
                //    .WithValueExpression((i, c) => c.UrlHelper.Action("detail", "demo", new { id = i.Id }));
            })
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                int totalRecords;

                string globalSearch = options.GetAdditionalQueryOptionString("search");

                string globalSearch2 = options.GetFilterString("firstname");

                string sortColumn = options.GetSortColumnData <string>();

                IDRDRepository repo = new DRDRepository();
                //List<Player> listModels = repo.ListPlayers().ToList();
                //var result = new QueryResult<Player>();
                //var query = listModels.AsQueryable();

                //var items = repo.GetData(out totalRecords,
                //                            globalSearch,
                //                            options.GetLimitOffset(),
                //                            options.GetLimitRowcount(),
                //                            options.GetSortColumnData<string>(),
                //                            //"firstname",
                //                            options.SortDirection == SortDirection.Dsc);

                var items = repo.GetData(out totalRecords, globalSearch, null, null, "firstname", options.SortDirection == SortDirection.Dsc);


                return(new QueryResult <Player>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
Exemple #25
0
        public static void RegisterGrids()
        {
            ColumnDefaults colDefaults = new ColumnDefaults()
            {
                EnableSorting = true
            };

            //          MVCGridDefinitionTable.Add("Vehicles", new MVCGridBuilder<Vehicle>(colDefaults)
            //              .WithAuthorizationType(AuthorizationType.AllowAnonymous)
            //              .AddColumns(cols =>
            //              {
            //                  cols.Add("Id").WithSorting(false)
            //                      .WithValueExpression(p => p.Id.ToString());
            //                  cols.Add("Vin").WithHeaderText("Vin")
            //                      .WithValueExpression(p => p.Vin);
            //                  cols.Add("Make").WithHeaderText("Make")
            //                      .WithValueExpression(p => p.Make);
            //                  cols.Add("Model").WithHeaderText("Model")
            //                      .WithValueExpression(p => p.Model);
            //                  cols.Add("Year").WithHeaderText("Year")
            //                      .WithValueExpression(p => p.Year);
            //                  cols.Add("CurrentMileage").WithHeaderText("Current Mileage")
            //                      .WithValueExpression(p => p.CurrentMileage);
            //              })
            ////              .WithSorting(true, "Make")
            //              .WithPaging(true, 2)
            //              .WithRetrieveDataMethod((context) =>
            //              {
            //                  var options = context.QueryOptions;
            //                  var result = new QueryResult<Vehicle>();


            //                      var query = Repository.getVehicles().AsQueryable();
            //                      result.TotalRecords = query.Count();
            //                      //if (!String.IsNullOrWhiteSpace(options.SortColumnName))
            //                      //{
            //                      //    switch (options.SortColumnName.ToLower())
            //                      //    {
            //                      //        case "vin":
            //                      //            query = query.OrderBy(p => p.Vin, options.SortDirection);
            //                      //            break;
            //                      //        case "make":
            //                      //            query = query.OrderBy(p => p.Make, options.SortDirection);
            //                      //            break;
            //                      //    }
            //                      //}
            //                      if (options.GetLimitOffset().HasValue)
            //                      {
            //                          query = query.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
            //                      }
            //                      result.Items = query.ToList();

            //                  return result;
            //              })
            //          );

            MVCGridDefinitionTable.Add("Vehicles", new MVCGridBuilder <Vehicle>(colDefaults)
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                       .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)
                                       .WithAdditionalQueryOptionNames("search")
                                       .AddColumns(cols =>
            {
                cols.Add("Id").WithValueExpression((p, c) => c.UrlHelper.Action("detail", "demo", new { id = p.Id }))
                .WithValueTemplate("<a href='{Value}'>{Model.Id}</a>", false)
                .WithPlainTextValueExpression(p => p.Id.ToString());
                cols.Add("Make").WithHeaderText("Make")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Make);
                cols.Add("Model").WithHeaderText("Model")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Model);
                cols.Add("Year").WithHeaderText("Year")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Year);
                cols.Add("Vin").WithHeaderText("Vin")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.Vin);
                cols.Add("CurrentMileage").WithHeaderText("Current Mileage")
                .WithVisibility(true, true)
                .WithValueExpression(p => p.CurrentMileage);
            })
                                       //.WithAdditionalSetting(MVCGrid.Rendering.BootstrapRenderingEngine.SettingNameTableClass, "notreal") // Example of changing table css class
                                       .WithRetrieveDataMethod((context) =>
            {
                var options = context.QueryOptions;

                int totalRecords;
                var repo = DependencyResolver.Current.GetService <VehicleRepository>();

                string globalSearch = options.GetAdditionalQueryOptionString("search");

                string sortColumn = options.GetSortColumnData <string>();

                var items = repo.GetData(out totalRecords, globalSearch, options.GetLimitOffset(), options.GetLimitRowcount(),
                                         sortColumn, options.SortDirection == SortDirection.Dsc);

                return(new QueryResult <Vehicle>()
                {
                    Items = items,
                    TotalRecords = totalRecords
                });
            })
                                       );
        }
Exemple #26
0
        public static void RegisterGrids()
        {
            // #################################################################################################################
            // #
            // #    GridView for Conditional Access backups
            // #
            // #################################################################################################################

            MVCGridDefinitionTable.Add("CABackups", new MVCGridBuilder <listcabackupconfig>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("Id").WithValueExpression(p => p.RowKey.ToString()).WithVisibility(false);
                cols.Add("BackupType").WithHeaderText("Type")
                .WithFiltering(true)
                .WithValueExpression(p => p.PartitionKey);
                cols.Add("Policy").WithHeaderText("Policy")
                .WithFiltering(true)
                .WithValueExpression(p => p.Policy);
                cols.Add("BackupDate").WithHeaderText("Date")
                .WithValueExpression(p => p.BackupDate);
                cols.Add("Details").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("BackupDetails", "Backups", new { rowkey = p.RowKey, partitionkey = p.PartitionKey }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-info' role='button'>Details</a>");
                cols.Add("Restore").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => Convert.ToBoolean(p.BackupRestoreing) ? "btn-light disabled" : "btn-warning")
                .WithValueTemplate("<a href='BackupRestore?rowkey={Model.RowKey}&partitionkey={Model.PartitionKey}' class='btn {Value}' role='button'>Restore</a>");
            })
                                       .WithFiltering(true)
                                       .WithPaging(true, 7)
                                       .WithRetrieveDataMethod((context) =>
            {
                var result = new QueryResult <listcabackupconfig>();
                CA_Backup_Model backuplist = new CA_Backup_Model(CABackupFrontend.MvcApplication.Connectionstring);

                var options             = context.QueryOptions;
                var deffilterbackuptype = options.GetFilterString("BackupType");
                var deffilterpolicy     = options.GetFilterString("Policy");

                IEnumerable <listcabackupconfig> filteredbackup;
                if (deffilterbackuptype != null && deffilterpolicy != null)
                {
                    filteredbackup = backuplist.GetBackups()
                                     .Where(o => (o.PartitionKey == deffilterbackuptype) &&
                                            (o.Policy.ToLower().Contains(deffilterpolicy.ToLower()))).AsQueryable();
                }
                else if (deffilterbackuptype != null)
                {
                    filteredbackup = backuplist.GetBackups()
                                     .Where(o => (o.PartitionKey == deffilterbackuptype)).AsQueryable();
                }
                else if (deffilterpolicy != null)
                {
                    filteredbackup = backuplist.GetBackups()
                                     .Where(o => (o.Policy.ToLower().Contains(deffilterpolicy.ToLower()))).AsQueryable();
                }
                else
                {
                    filteredbackup = backuplist.GetBackups().AsQueryable();
                }

                result.TotalRecords = filteredbackup.Count();

                if (options.GetLimitOffset().HasValue)
                {
                    filteredbackup = filteredbackup.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                }

                result.Items = filteredbackup.ToList();

                return(result);
            })
                                       );

            // #################################################################################################################
            // #
            // #    GridView for backup translation settings
            // #
            // #################################################################################################################

            MVCGridDefinitionTable.Add("CABackupsTranslation", new MVCGridBuilder <listcabackuptranslation>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("PartitionKey").WithValueExpression(p => p.PartitionKey.ToString()).WithVisibility(false);
                cols.Add("Section").WithHeaderText("Section")
                .WithValueExpression(p => p.Section);
                cols.Add("Function").WithHeaderText("Function")
                .WithValueExpression(p => p.Function);
                cols.Add("Setting").WithHeaderText("Setting")
                .WithValueExpression(p => p.Setting);
                cols.Add("Value").WithHeaderText("Value")
                .WithValueExpression(p => p.RowKey);
                cols.Add("Translation").WithHeaderText("Translation")
                .WithValueExpression(p => p.Translation);
                cols.Add("Delete").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("TranslationDelete", "Settings", new { rowkey = p.RowKey, partitionkey = p.PartitionKey }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-warning' role='button'>Delete</a>");
            })
                                       .WithFiltering(true)
                                       .WithPaging(true, 5)
                                       .WithRetrieveDataMethod((context) =>
            {
                var result = new QueryResult <listcabackuptranslation>();
                CA_Backup_Model backuptranslationlist = new CA_Backup_Model(CABackupFrontend.MvcApplication.Connectionstring);

                var options = context.QueryOptions;

                IEnumerable <listcabackuptranslation> filteredbackup;

                filteredbackup = backuptranslationlist.GetBackupTranslations().AsQueryable();

                result.TotalRecords = filteredbackup.Count();

                if (options.GetLimitOffset().HasValue)
                {
                    filteredbackup = filteredbackup.Skip(options.GetLimitOffset().Value).Take(options.GetLimitRowcount().Value);
                }

                result.Items = filteredbackup.ToList();

                return(result);
            })
                                       );
        }
Exemple #27
0
        public async Task <ActionResult> Index()
        {
            BannersManagementViewModel model = new BannersManagementViewModel();

            if (null != this.User && this.User.Identity.IsAuthenticated)
            {
                var UserManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                var user        = await UserManager.FindByNameAsync(this.User.Identity.Name);

                if (null != user)
                {
                    model.Profile = InsuranceBusiness.BusinessLayer.GetUserProfile(user.Id);
                }
                else
                {
                    return(RedirectToAction("LogOff", "Account"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Account"));
            }

            try
            {
                var grid = MVCGridDefinitionTable.GetDefinition <BannerModelObject>("BannersManagementGrid");
            }
            catch (Exception)
            {
                //InsuranceBusiness.BusinessLayer.GetRoles

                MVCGridDefinitionTable.Add("BannersManagementGrid", new MVCGridBuilder <BannerModelObject>()
                                           .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                           //.WithSorting(sorting: true, defaultSortColumn: "Id", defaultSortDirection: SortDirection.Dsc)
                                           .AddColumns(cols =>
                {
                    // Add your columns here
                    cols.Add().WithColumnName("Description")
                    .WithHeaderText(Resources.Resources.Description)
                    .WithValueExpression(i => i.Description)
                    .WithAllowChangeVisibility(true)
                    .WithFiltering(true)
                    .WithSorting(true)
                    .WithVisibility(true, true);             // use the Value Expression to return the cell text for this column
                    cols.Add("Type")
                    .WithHeaderText(Resources.Resources.Type)
                    .WithValueExpression(i => i.ID_Banner_Type.ToString());
                    cols.Add("StartDate")
                    .WithHeaderText(Resources.Resources.StartDate)
                    .WithCellCssClassExpression(p => "dateCell")
                    .WithValueExpression(p => p.StartDate.ToString("dd-MM-yyyy"));
                    cols.Add("DueDate")
                    .WithHeaderText(Resources.Resources.DueDate)
                    .WithCellCssClassExpression(p => "dateCell")
                    .WithValueExpression(p => p.DueDate.HasValue ? p.DueDate.Value.ToString("dd-MM-yyyy") : "");
                    cols.Add("Edit").WithHtmlEncoding(false)
                    .WithSorting(false)
                    .WithHeaderText(" ")
                    .WithValueExpression((p, c) => c.UrlHelper.Action("Edit", "BannersManagement", new { id = p.ID }))
                    .WithValueTemplate("<a href='{Value}' class='btn btn-warning lnkEdit'>" + Resources.Resources.Edit + "</a>");
                    cols.Add("Delete").WithHtmlEncoding(false)
                    .WithSorting(false)
                    .WithHeaderText(" ")
                    .WithValueExpression((p, c) => c.UrlHelper.Action("Delete", "BannersManagement", new { id = p.ID }))
                    .WithValueTemplate("<a href='{Value}' class='btn btn-danger lnkDelete' role='button'>" + Resources.Resources.Delete + "</a>");
                })
                                           .WithAdditionalQueryOptionNames("Search")
                                           .WithSorting(true, "CreateDate")
                                           .WithPaging(paging: true, itemsPerPage: 10, allowChangePageSize: true, maxItemsPerPage: 100)
                                           .WithRetrieveDataMethod((context) =>
                {
                    // Query your data here. Obey Ordering, paging and filtering parameters given in the context.QueryOptions.
                    // Use Entity Framework, a module from your IoC Container, or any other method.
                    // Return QueryResult object containing IEnumerable<YouModelItem>

                    var options = context.QueryOptions;
                    var result  = new QueryResult <BannerModelObject>();
                    var query   = BusinessItemsLists.GetBanners();
                    if (!String.IsNullOrWhiteSpace(options.SortColumnName))
                    {
                        switch (options.SortColumnName.ToLower())
                        {
                        case "firstname":
                            //if (options.SortDirection == SortDirection.Asc
                            //    || options.SortDirection == SortDirection.Unspecified)
                            //{
                            //    query = query.OrderBy(p => p.FirstName).ToList();
                            //}
                            //else
                            //{
                            //    query = query.OrderByDescending(p => p.FirstName).ToList();
                            //}

                            break;

                        case "lastname":
                            //query = query.OrderBy(p => p.LastName, options.SortDirection);
                            break;
                        }
                    }

                    string globalSearch = options.GetAdditionalQueryOptionString("Search");
                    if (null != globalSearch)
                    {
                        query = query.Where(i =>
                                            i.Description.ToLower().Contains(globalSearch.ToLower())
                                            //|| i.LastName.Contains(globalSearch)
                                            //|| i.User.UserName.Contains(globalSearch)
                                            //|| i.ContactEmail.Contains(globalSearch)
                                            ).ToList();
                    }

                    result.TotalRecords = query.Count();

                    if (options.GetLimitOffset().HasValue)
                    {
                        query = query
                                .Skip(options.GetLimitOffset().Value)
                                .Take(options.GetLimitRowcount().Value)
                                .ToList();
                    }

                    result.Items = query;

                    return(result);
                })
                                           );
            }

            return(View(model));
        }
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("ManageUsersGrid", new MVCGridBuilder <ManagePersonVm>()
                                       .WithAuthorizationType(AuthorizationType.Authorized)
                                       .WithPaging(true, 15, true, 50)
                                       .AddColumns(cols =>
            {
                cols.Add("Key").WithValueExpression(p => p.Key).WithVisibility(false).WithFiltering(true);
                cols.Add("FullName").WithHeaderText("Name").WithValueExpression(p => p.FullName).WithFiltering(true);
                cols.Add("Address")
                .WithHeaderText("Address")
                .WithValueExpression(p => p.Address)
                .WithFiltering(true);
                cols.Add("Phone").WithHeaderText("Phone").WithValueExpression(p => p.Phone).WithFiltering(true);
                cols.Add("PhoneConfirmed")
                .WithHeaderText("Phone Confirmed")
                .WithValueExpression(p => p.PhoneConfirmed ? "Yes" : "No")
                .WithCellCssClassExpression(p => p.PhoneConfirmed ? "success" : "warning");
                cols.Add("Email").WithHeaderText("Email").WithValueExpression(p => p.Email).WithFiltering(true);
                cols.Add("EmailConfirmed")
                .WithHeaderText("Email Confirmed")
                .WithValueExpression(p => p.EmailConfirmed ? "Yes" : "No")
                .WithCellCssClassExpression(p => p.EmailConfirmed ? "success" : "warning");
                cols.Add("Gender").WithHeaderText("Gender").WithValueExpression(p => p.Gender);
            })
                                       .WithFiltering(true)
                                       .WithRetrieveDataMethod(context =>
            {
                var service = DependencyResolver.Current.GetService <IUserService>();
                var options = context.QueryOptions;
                var result  = new QueryResult <ManagePersonVm>();

                if (!options.GetLimitOffset().HasValue)
                {
                    return(result);
                }

                var query = service.GetFilteredUsers().AsQueryable();

                var limitOffset   = options.GetLimitOffset();
                var limitRowcount = options.GetLimitRowcount();

                if (!string.IsNullOrWhiteSpace(options.GetFilterString("Key")))
                {
                    query =
                        query.Where(
                            p =>
                            $"{p.FullName ?? string.Empty} {p.Address ?? string.Empty} {p.Email ?? string.Empty} {p.Phone ?? string.Empty}"
                            .IndexOf(options.GetFilterString("Key").ToString(),
                                     StringComparison.InvariantCultureIgnoreCase) >= 0);
                }

                result.TotalRecords = query.Count();

                if (limitOffset != null && limitRowcount != null)
                {
                    query = query.Skip(limitOffset.Value).Take(limitRowcount.Value);
                }

                result.Items = query.ToList();

                return(result);
            }
                                                               ));
        }
Exemple #29
0
        public static void RegisterGrids()
        {
            MVCGridDefinitionTable.Add("InOutUserGrid", new MVCGridBuilder <vst_InOut>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)

                                       .AddColumns(cols =>
            {
                // Add your columns here
                cols.Add("Fecha").WithColumnName(Resources.Descripciones.GridGastoFecha)
                .WithFiltering(false)
                .WithHeaderText(" ")
                //.WithHeaderText(Resources.Descripciones.GridGastoFecha)
                .WithCellCssClassExpression(p => "col-sm-1")
                //.WithValueExpression(i => i.Fecha.HasValue ? i.Fecha.Value.ToShortDateString() : "");
                .WithValueExpression(i => i.Fecha.ToShortDateString());

                cols.Add("TipoGasto") //.WithColumnName(Resources.Descripciones.GridTipoGasto)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-2")
                //.WithHeaderText(Resources.Descripciones.GridTipoGasto)
                .WithValueExpression(i => i.Descripcion); // use the Value Expression to return the cell text for this column

                cols.Add("SubTipoGasto")                  //.WithColumnName(Resources.Descripciones.GridTipoGasto)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-2")
                //.WithHeaderText(Resources.Descripciones.GridTipoGasto)
                .WithValueExpression(i => i.Descripcion_Subtipo);     // use the Value Expression to return the cell text for this column


                cols.Add("Concepto").WithColumnName(Resources.Descripciones.GridGastoConcepto)
                .WithCellCssClassExpression(p => "col-sm-4")
                .WithHeaderText(" ")
                //.WithHeaderText(Resources.Descripciones.GridGastoConcepto)
                .WithValueExpression(i => i.Concepto)   // use the Value Expression to return the cell text for this column
                .WithFiltering(true);


                cols.Add("Precio").WithColumnName(Resources.Descripciones.GridGastoImporte)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-1")
                //.WithHeaderText(Resources.Descripciones.GridGastoImporte)
                .WithValueExpression(i => i.Precio.ToString());   // use the Value Expression to return the cell text for this column

                /*
                 * cols.Add("Delete").WithHtmlEncoding(false)
                 * .WithFiltering(false)
                 * .WithSorting(false)
                 * .WithHeaderText(" ")
                 * .WithCellCssClassExpression(p => "col-sm-2")
                 * .WithValueExpression(i => i.idGasto.ToString())
                 * .WithValueTemplate("<a href = '/Gastos/Edit/{value}'><img src='/Img/iconos/edit.png'></a>"
                 + " <a href = '/Gastos/Del/{value}'><img src='/Img/iconos/delete24.png'</a>"
                 + " <a href = '/Gastos/Copy/{value}'><img src='/Img/iconos/copy.png'</a>"
                 + );
                 */
                cols.Add("Butons").WithHtmlEncoding(false)
                .WithFiltering(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-2")
                .WithValueExpression(i => i.idGasto.ToString())
                .WithValueExpression((p, c) =>
                {
                    StringBuilder sb = new StringBuilder();


                    if (bool.Parse(p.GastoEditable.GetValueOrDefault().ToString()))
                    {
                        string Action = c.UrlHelper.Action("Edit", "Gastos", new { id = p.idGasto });
                        string href   = " href= " + Action + " class=approve >";
                        sb.Append(" <a  ");
                        //  sb.Append(target);
                        sb.Append(href);
                        sb.Append("<img src = '/Img/iconos/edit.png' >");
                        sb.Append("</a> ");

                        Action = c.UrlHelper.Action("Delete", "Gastos", new { id = p.idGasto });
                        href   = " href= " + Action + " class=approve >";
                        sb.Append(" <a  ");
                        //  sb.Append(target);
                        sb.Append(href);
                        sb.Append("<img src = '/Img/iconos/Delete24.png' >");
                        sb.Append("</a> ");


                        //sb.Append("<img src = \"/Img/iconos/Delete24.png\" style=\"cursor: hand; cursor: pointer\" name = \"image\" data-toggle = \"modal\" data-target = \"#myModalDelGasto\" data-id = \"" + p.idGasto + "\" data-datos = \"" + p.Concepto + "\" />");


                        if (p.GastoRecurrente == false)
                        {
                            Action = c.UrlHelper.Action("Copy", "Gastos", new { id = p.idGasto });
                            href   = " href= " + Action + " class=approve >";
                            sb.Append(" <a  ");
                            sb.Append(href);
                            sb.Append("<img src = '/Img/iconos/copy.png' >");
                            sb.Append("</a> ");
                        }

                        //sb.Append("<img src = \"/Img/iconos/ver.png\" style=\"cursor: hand; cursor: pointer\" name = \"image\" data-toggle = \"modal\" data-target = \"#myModalVerGasto\" data-id = \"" + p.idGasto + "\" data-datos = \"" + p.Concepto + "|" + p.Descripcion + "|" + p.Precio + "|" + p.Fecha + "|" + p.GrupoGasto + "|" + p.GastoComputable + "\" />");
                    }
                    else
                    {
                        //sb.Append("<img src = \"/Img/iconos/ver.png\" style=\"cursor: hand; cursor: pointer\" name = \"image\" data-toggle = \"modal\" data-target = \"#myModalVerGasto\" data-id = \"" + p.idGasto + "\" data-datos = \"" + p.Concepto + "|" + p.Descripcion + "|" + p.Precio + "|" + p.Fecha + "|" + p.GrupoGasto + "|" + p.GastoComputable + "\" />");
                        string Action = c.UrlHelper.Action("Ver", "Gastos", new { id = p.idGasto });
                        string href   = " href= " + Action + " class=approve >";
                        sb.Append(" <a  ");
                        //sb.Append(target);
                        sb.Append(href);
                        sb.Append("<img src = '/Img/iconos/ver.png' >");
                        sb.Append("</a> ");

                        Action = c.UrlHelper.Action("Copy", "Gastos", new { id = p.idGasto });
                        href   = " href= " + Action + " class=approve >";
                        sb.Append(" <a  ");
                        sb.Append(href);
                        sb.Append("<img src = '/Img/iconos/copy.png' >");
                        sb.Append("</a> ");
                    }


                    return(sb.ToString());
                });
            })
                                       .WithPageParameterNames("user")
                                       .WithPaging(true, 10)
                                       //.WithSorting(true, "Concepto", SortDirection.Dsc)
                                       .WithRowCssClassExpression(x => (x.GastoRecurrente == true) ? "info" : (x.Precio > 300) ? "danger" : "")
                                       .WithSummaryMessage(" {0} - {1}  ({2})")
                                       .WithFiltering(true)
                                       .WithProcessingMessage("....")
                                       .WithNextButtonCaption("")
                                       .WithPreviousButtonCaption("")
                                       .WithRetrieveDataMethod((options) =>
            {
                string _pEmail  = options.QueryOptions.GetPageParameterString("user");
                string _pIdioma = System.Threading.Thread.CurrentThread.CurrentCulture.ToString().Substring(0, 2);

                var result = new QueryResult <vst_InOut>();
                using (var context = new ExpensesEF.Entities())
                {
                    int _idioma = context.Idiomas.Where(x => x.codigo == _pIdioma).FirstOrDefault().idIdioma;
                    //string _user = context.AspNetUsers.Where(x => x.Email == _pEmail).FirstOrDefault().Id.ToString();

                    AspNetUsers _usuario      = context.AspNetUsers.Where(x => x.Email == _pEmail).FirstOrDefault();
                    string _user              = _usuario.Id.ToString();
                    bool _GastoSinRecurrentes = _usuario.VerGastosSinOConRecurrentes.GetValueOrDefault();


                    string _concepto = "";

                    if (options.QueryOptions.Filters.Count > 0)
                    {
                        _concepto = ((options.QueryOptions.GetFilterString("Concepto") == null) ? "" : options.QueryOptions.GetFilterString("Concepto").ToString());
                    }
                    System.Linq.IQueryable <vst_InOut> query;

                    if (_GastoSinRecurrentes)
                    {
                        //query = (context.vst_InOut.Where(x => x.idIdioma == _idioma && (x.IdIdiomaSubTipo == _idioma || x.IdIdiomaSubTipo == null) && x.idUserGasto == _user && (x.Concepto.Contains(_concepto) && x.Descripcion.Contains(_TipoGasto))).OrderByDescending(x => x.Fecha).ThenByDescending(x => x.idGasto).AsQueryable());
                        query = (context.vst_InOut.Where(x => x.idIdioma == _idioma && (x.IdIdiomaSubTipo == _idioma || x.IdIdiomaSubTipo == null) && x.idUserGasto == _user && (x.Concepto.Contains(_concepto) || x.Descripcion.Contains(_concepto) || x.Descripcion_Subtipo.Contains(_concepto))).OrderByDescending(x => x.Fecha).ThenByDescending(x => x.idGasto).AsQueryable());
                    }
                    else
                    {
                        //query = (context.vst_InOut.Where(x =>  x.GastoRecurrente == false &&  x.idIdioma == _idioma && (x.IdIdiomaSubTipo == _idioma || x.IdIdiomaSubTipo == null) && x.idUserGasto == _user && (x.Concepto.Contains(_concepto) && x.Descripcion.Contains(_TipoGasto))).OrderByDescending(x => x.Fecha).ThenByDescending(x => x.idGasto).AsQueryable());
                        query = (context.vst_InOut.Where(x => x.GastoRecurrente == false && x.idIdioma == _idioma && (x.IdIdiomaSubTipo == _idioma || x.IdIdiomaSubTipo == null) && x.idUserGasto == _user && (x.Concepto.Contains(_concepto) || x.Descripcion.Contains(_concepto) || x.Descripcion_Subtipo.Contains(_concepto))).OrderByDescending(x => x.Fecha).ThenByDescending(x => x.idGasto).AsQueryable());
                    }



                    result.TotalRecords = query.Count();


                    if (options.QueryOptions.GetLimitOffset().HasValue)
                    {
                        query = query.Skip(options.QueryOptions.GetLimitOffset().Value).Take(options.QueryOptions.GetLimitRowcount().Value);
                    }
                    result.Items = query.ToList();
                }
                return(result);
            }
                                                               )
                                       //.WithRowCssClassExpression(new ExpensesEF.Entities().AspNetUsers.Where(x=>) ? "info" : (x.Precio > 300) ? "danger" : "")

                                       );


            MVCGridDefinitionTable.Add("GastosRecurrentesGrid", new MVCGridBuilder <vst_GastosRecurrentes>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)

                                       .AddColumns(cols =>
            {
                cols.Add("Concepto").WithColumnName(Resources.Descripciones.GridGastoConcepto)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-3")
                .WithValueExpression(i => i.Concepto.ToString());

                cols.Add("Precio").WithColumnName(Resources.Descripciones.GridGastoImporte)
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-1")
                .WithValueExpression(i => i.Precio.ToString());

                cols.Add("Periodicidad")
                .WithFiltering(true)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-1")
                .WithValueExpression(i => i.Descripcion.ToString());

                cols.Add("Activo")
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-1")
                .WithValueExpression(i => i.TextoActivo.ToString());

                cols.Add("Computable")
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-2")
                .WithValueExpression(i => i.TextoComputable.ToString());

                cols.Add("Fecha").WithColumnName(Resources.Descripciones.GridGastoFecha)
                .WithFiltering(false)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-1")
                .WithValueExpression(i => i.SiguienteEjecucion.ToShortDateString());

                cols.Add("Butons").WithHtmlEncoding(false)
                .WithFiltering(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithCellCssClassExpression(p => "col-sm-2")
                .WithValueExpression(i => i.idGastoRecurrente.ToString())
                .WithValueExpression((p, c) =>
                {
                    StringBuilder sb = new StringBuilder();

                    /*
                     * string Action = c.UrlHelper.Action("EditRecurrente", "Gastos", new { id = p.idGastoRecurrente });
                     * string href = " href= " + Action + " class=approve >";
                     * sb.Append(" <a  ");
                     * //  sb.Append(target);
                     * sb.Append(href);
                     * sb.Append("<img src = '/Img/iconos/edit.png' >");
                     * sb.Append("</a> ");
                     *
                     *
                     * Action = c.UrlHelper.Action("DelRecurrente", "Gastos", new { id = p.idGastoRecurrente });
                     * href = " href= " + Action + " class=approve >";
                     * sb.Append(" <a  ");
                     *
                     * sb.Append(href);
                     * sb.Append("<img src = '/Img/iconos/delete24.png' >");
                     * sb.Append("</a> ");
                     */
                    //class=\"btn btn-primary btn-lg\"

                    //"<img src = '/Img/iconos/delete24.png' >" + "
                    //string _text = "<button type = \"button\"  data-toggle=\"modal\" data-target=\"#myModal\" data-myvalue=\"" + p.idGastoRecurrente + "\">" + "dassd"  +  "</button>";

                    //string _text = "<button type = \"button\"   data-toggle=\"modal\" data-target=\"#myModal\" data-myvalue=\"" + p.idGastoRecurrente + "\" data-myvalue2=\"" + "ver" + "\" >" + "edit" + "</button>";


                    string _text = "<input type = \"image\" src = \"/Img/iconos/edit.png\" name = \"image\" data-toggle = \"modal\" data-target = \"#myModalEdit\" data-id = \"" + p.idGastoRecurrente + "\" data-datos = \"" + p.Concepto + "|" + p.idTipoPago + "|" + p.idtipoGastoRecurrente + "|" + p.Periocidad + "|" + p.Precio + "|" + p.GastoComputable + "|" + p.Activo + "|" + p.Descripcion_SubTipo + "\" />";
                    _text       += "<input type = \"image\" src = \"/Img/iconos/Delete24.png\" name = \"image\" data-toggle = \"modal\" data-target = \"#myModalDel\" data-id = \"" + p.idGastoRecurrente + "\" data-datos = \"" + p.Concepto + "\" />";
                    sb.Append(_text);



                    return(sb.ToString());
                });
            })
                                       .WithPageParameterNames("user")
                                       .WithPaging(true, 20)
                                       .WithSorting(true, "Concepto", SortDirection.Dsc)
                                       .WithSummaryMessage(" {0} - {1}  ({2})")
                                       .WithFiltering(true)
                                       .WithProcessingMessage("....")
                                       .WithNextButtonCaption("")
                                       .WithPreviousButtonCaption("")

                                       .WithRetrieveDataMethod((options) =>
            {
                string _pEmail  = options.QueryOptions.GetPageParameterString("user");
                string _pIdioma = System.Threading.Thread.CurrentThread.CurrentCulture.ToString().Substring(0, 2);

                var result = new QueryResult <vst_GastosRecurrentes>();

                using (var context = new ExpensesEF.Entities())
                {
                    int _idioma  = context.Idiomas.Where(x => x.codigo == _pIdioma).FirstOrDefault().idIdioma;
                    string _user = context.AspNetUsers.Where(x => x.Email == _pEmail).FirstOrDefault().Id.ToString();

                    var query = (context.vst_GastosRecurrentes.Where(x => x.idIdioma == _idioma && (x.IdIdiomaSubTipo == _idioma || x.IdIdiomaSubTipo == null) && x.idUserGastoRecurrente == _user).OrderByDescending(x => x.SiguienteEjecucion).ThenByDescending(x => x.idGastoRecurrente).AsQueryable());

                    result.TotalRecords = query.Count();


                    if (options.QueryOptions.GetLimitOffset().HasValue)
                    {
                        query = query.Skip(options.QueryOptions.GetLimitOffset().Value).Take(options.QueryOptions.GetLimitRowcount().Value);
                    }
                    result.Items = query.ToList();
                }
                return(result);
            }
                                                               )
                                       );
        }
        public static void RegisterGrids()
        {
            var vrcon = new VRContext();

            MVCGridDefinitionTable.Add("SGrid", new MVCGridBuilder <Vehicle>()
                                       .WithAuthorizationType(AuthorizationType.AllowAnonymous)
                                       .AddColumns(cols =>
            {
                cols.Add("StudentID").WithHeaderText("REG ID")
                .WithValueExpression(p => p.StudentID.ToString());
                cols.Add("MatricNumber").WithHeaderText("Matric Number")
                .WithValueExpression(p => p.Student.MatricNumber.ToString());
                cols.Add("Department").WithHeaderText("Department")
                .WithValueExpression(p => p.Student.Department ?? "CSE");
                cols.Add("PlateNumber").WithHeaderText("Plate Number")
                .WithValueExpression(p => p.Plate_number.ToString());
                cols.Add("Make").WithHeaderText("Vehicle Make")
                .WithValueExpression(p => p.Make ?? "Toyota Corolla");
                cols.Add("Color").WithHeaderText("Vehicle Color")
                .WithValueExpression(p => p.Color ?? "Red");
                cols.Add("Edit").WithHtmlEncoding(false).WithHeaderText("Actions")
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("detail", "demo", new { id = p.StudentID }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-primary' role='button'>Edit</a>");
                cols.Add("Delete").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("Details", "Admin", new { id = p.StudentID }))
                .WithValueTemplate("<a href='{Value}' class='btn btn-danger' role='button'>Delete</a>");
                cols.Add("View").WithHtmlEncoding(false)
                .WithSorting(false)
                .WithHeaderText(" ")
                .WithValueExpression((p, c) => c.UrlHelper.Action("DetailsPage", "Admin", new { id = p.StudentID }))
                .WithValueTemplate("<button type='button' class='btn btn-warning' onClick='viewRecord({Model.StudentID})' data-toggle='modal' data-target='#myModal'>View</button>");
            })
                                       .WithSorting(true, "MatricNumber")
                                       .WithPaging(true, 10)
                                       .WithAdditionalQueryOptionNames("Search")
                                       .WithAdditionalSetting("RenderLoadingDiv", false)
                                       .WithRetrieveDataMethod((options) =>
            {
                //var options = context.QueryOptions;
                //int totalRecords;
                //var repo = DependencyResolver.Current.GetService<IPersonRepository>();
                //string globalSearch = options.GetAdditionalQueryOptionString("Search");
                //var items = repo.GetData(out totalRecords, globalSearch, options.GetLimitOffset(), options.GetLimitRowcount(),
                //    options.SortColumnName, options.SortDirection == SortDirection.Dsc);
                //return new QueryResult<Vehicle>()
                //{
                //    Items = items,
                //    TotalRecords = totalRecords
                //};


                //var result = new QueryResult<Student>();
                //var result2 = new QueryResult<Vehicle>();
                //string globalSearch = options.GetAdditionalQueryOptionString("Search");

                //using (var db = new VRContext())
                //{
                //    //db.Vehicles.Any(m => m.Color == "rr");
                //    //result.Items = db.Students.ToList();
                //    ////result.Items = db.Students.Where(p => p.StudentID == 2).ToList();
                //    //result2.Items = db.Vehicles.Include("Student").ToList();
                //    //return result2;


                //    var con = options.QueryOptions;
                //    var queryResult = new QueryResult<Vehicle>();


                //    return queryResult;
                //}

                using (var dbf = new VRContext())
                {
                    var con         = options.QueryOptions;
                    var queryResult = new QueryResult <Vehicle>();

                    var context              = options.QueryOptions;
                    string globalSearch      = con.GetAdditionalQueryOptionString("Search");
                    var query                = dbf.Vehicles.Include("Student").AsQueryable();
                    var repo                 = DependencyResolver.Current.GetService <StudentRepository>();
                    queryResult.TotalRecords = query.Count();
                    if (!String.IsNullOrWhiteSpace(con.SortColumnName))
                    {
                        switch (con.SortColumnName.ToLower())
                        {
                        case "matricnumber":
                            if (con.SortDirection == SortDirection.Asc)
                            {
                                query = query.OrderBy(c => c.Student.MatricNumber);
                            }
                            else if (con.SortDirection == SortDirection.Dsc)
                            {
                                query = query.OrderByDescending(c => c.Student.MatricNumber);
                            }
                            break;

                        case "department":
                            if (con.SortDirection == SortDirection.Asc)
                            {
                                query = query.OrderBy(c => c.Student.Department);
                            }
                            else if (con.SortDirection == SortDirection.Dsc)
                            {
                                query = query.OrderByDescending(c => c.Student.Department);
                            }
                            break;
                        }
                    }
                    if (con.GetLimitOffset().HasValue)
                    {
                        query = query.OrderBy(i => i.Student.MatricNumber).Skip(con.GetLimitOffset().Value).Take(con.GetLimitRowcount().Value);
                    }

                    if (!String.IsNullOrWhiteSpace(globalSearch))
                    {
                        //query = query.OrderBy(i => i.Student.MatricNumber).Skip(con.GetLimitOffset().Value).Take(con.GetLimitRowcount().Value);
                        query = query.Where(i => i.Student.Department.Contains(globalSearch));
                    }

                    queryResult.Items = query.ToList();

                    return(queryResult);
                }
            })
                                       );
        }