protected async override Task BuildViews(List <IModule> activeModules, int pageIndex, int pageSize, FolderModel folder, PathIdentifier identifier, string userTimeZone)
        {
            this.page.Views = new List <Models.Responses.IViewModel>();

            /*var instructions = new DataViewModel
             * {
             *  DataModel = null,
             *  DataSchema = new ManagerFieldObject()
             *  {
             *      IsCollapsed = false,
             *      Properties = new Dictionary<string, ManagerFieldBaseSchema>() {
             *              { "Instructions", new ManagerFieldNull() {
             *                  Description = @"<p>
             *                                    Some stuff here maybe?
             *                                  </p>",
             *                  IsReadOnly = true,
             *                  Order = 0,
             *                  Title = "Log Reader Info"
             *              }
             *          },
             *      }
             *  },
             *  AllowedOperations = null
             * };
             *
             * this.page.Views.Add(instructions);*/

            var logs = await LogReaderService.ReadLog(identifier);

            var grid = new GridViewModel
            {
                Rows        = new List <IItemQueryResponse>(),
                PageIndex   = pageIndex,
                PageSize    = pageSize,
                Title       = "Audit Log",
                GridColumns = new List <GridColumnSpecification>()
                {
                    new GridColumnSpecification()
                    {
                        IsSortable = true, KeyName = "generated", Label = "Generated"
                    },
                    new GridColumnSpecification()
                    {
                        IsSortable = true, KeyName = "action", Label = "Action"
                    },
                    new GridColumnSpecification()
                    {
                        IsSortable = true, KeyName = "initiator", Label = "User"
                    },
                    new GridColumnSpecification()
                    {
                        IsSortable = true, KeyName = "description", Label = "Description"
                    },
                },
            };

            grid.TotalRows  = logs.Rows.Count();
            grid.RowsInPage = Math.Min(grid.TotalRows, grid.PageSize);
            grid.PageCount  = (grid.TotalRows / grid.PageSize)
                              + (
                (grid.TotalRows % grid.PageSize == 0)
                        ? 0
                        : 1
                );
            grid.IsLastPage = (grid.PageIndex == grid.PageCount - 1);

            // Here we're calculating paging, and sending that back on the grid view.
            grid.Rows = logs.Rows
                        .OrderByDescending(f => f.Generated)
                        .Skip(grid.PageSize * grid.PageIndex)
                        .Take(grid.PageSize)
                        .Select(l => new LogEntryModel
            {
                Name        = "Name",
                Key         = "Key",
                Action      = l.ActionType,
                Generated   = l.Generated.ConvertToLocal(userTimeZone),
                Initiator   = l.InitiatorUserIdentifier?.UserKey,
                Description = l.Description
            });

            this.page.Views.Add(grid);
        }