private QuerySortType GetListSortTypeId(string name)
        {
            QuerySortType type = QuerySortType.Ascending;

            Enum.TryParse(name, true, out type);
            return(type);
        }
示例#2
0
        public IActionResult OnGet()
        {
            var initResult = Init();

            if (initResult != null)
            {
                return(initResult);
            }

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            //var appServ = new AppService();

            //var apps = appServ.GetAllApplications();
            //TotalCount = apps.Count;

            //ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));
            #endregion

            #region << Create Columns >>

            Columns = new List <WvGridColumnMeta>()
            {
                new WvGridColumnMeta()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label = "name",
                    Name  = "name",
                    Width = "200px"
                },
                new WvGridColumnMeta()
                {
                    Label = "description",
                    Name  = "description"
                }
            };

            #endregion

            #region << Records >>
            var eql = " SELECT * FROM role ";
            List <EqlParameter> eqlParams = new List <EqlParameter>();
            Records    = new EqlCommand(eql, eqlParams).Execute();
            TotalCount = Records.TotalCount;
            #endregion

            BeforeRender();
            return(Page());
        }
示例#3
0
        public void InitPageData()
        {
            #region << InitPage >>

            HeaderToolbar.AddRange(AdminPageUtils.GetJobAdminSubNav("job"));

            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;


            #endregion

            #region << Create Columns >>

            Columns = new List <WvGridColumnMeta>()
            {
                new WvGridColumnMeta()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label = "created on",
                    Name  = "created_on",
                    Width = "150px"
                },
                new WvGridColumnMeta()
                {
                    Label = "started on",
                    Name  = "started_on",
                    Width = "150px"
                },
                new WvGridColumnMeta()
                {
                    Label = "finished on",
                    Name  = "finished_on",
                    Width = "150px"
                },
                new WvGridColumnMeta()
                {
                    Label = "type name",
                    Name  = "type_name",
                },
                new WvGridColumnMeta()
                {
                    Label = "complete class name",
                    Name  = "complete_class_name",
                    Width = "400px"
                },
                new WvGridColumnMeta()
                {
                    Label = "status",
                    Name  = "status",
                    Width = "100px"
                }
            };

            #endregion

            #region << Records >>

            var    submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            string typeName         = null;
            Guid?  typeId           = null;
            if (submittedFilters.Count > 0)
            {
                var whereClauseList = new List <string>();
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "type_name":
                        typeName = filter.Value;
                        break;

                    case "type_id":
                        if (Guid.TryParse(filter.Value, out Guid outGuid))
                        {
                            typeId = outGuid;
                        }
                        break;
                    }
                }
            }

            int totalCount;
            Records    = JobManager.Current.GetJobs(out totalCount, null, null, null, null, typeName, null, null, typeId, Pager, PagerSize);
            TotalCount = totalCount;

            #endregion
        }
示例#4
0
        public void OnGet()
        {
            Init();

            #region << InitPage >>

            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label    = "email",
                    Name     = "email",
                    Sortable = true,
                    Width    = "120px"
                },
                new GridColumn()
                {
                    Label    = "username",
                    Name     = "username",
                    Sortable = true
                },
                new GridColumn()
                {
                    Label    = "role",
                    Name     = "role",
                    Sortable = false
                }
            };

            #endregion

            #region << Records >>
            var eql = " SELECT id,email,username,$user_role.name FROM user ";
            List <EqlParameter> eqlParams = new List <EqlParameter>();

            //Apply sort
            if (!String.IsNullOrWhiteSpace(SortBy) && (new List <string>()
            {
                "email", "username"
            }).Contains(SortBy))
            {
                eqlParams.Add(new EqlParameter("@sortBy", SortBy));
                if (SortOrder == QuerySortType.Descending)
                {
                    eqlParams.Add(new EqlParameter("@sortOrder", "Desc"));
                }
                else
                {
                    eqlParams.Add(new EqlParameter("@sortOrder", "Asc"));
                }
                eql += " ORDER BY @sortBy @sortOrder ";
            }
            else
            {
                eql += " ORDER BY email Asc ";
            }
            eql += " PAGE @page ";
            eql += " PAGESIZE @pageSize ";
            eqlParams.Add(new EqlParameter("@page", Pager));
            eqlParams.Add(new EqlParameter("@pageSize", PagerSize));

            Records    = new EqlCommand(eql, eqlParams).Execute();
            TotalCount = Records.TotalCount;
            #endregion

            BeforeRender();
        }
示例#5
0
        public IActionResult OnGet()
        {
            var initResult = Init();

            if (initResult != null)
            {
                return(initResult);
            }

            var entMan = new EntityManager();

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            var allEntities = entMan.ReadEntities().Object;
            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        if (filter.Type == FilterType.CONTAINS)
                        {
                            allEntities = allEntities.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        }
                        break;
                    }
                }
            }
            #endregion
            allEntities = allEntities.OrderBy(x => x.Name).ToList();

            TotalCount = allEntities.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);

            var searchKey = "q_name_v";
            if (HttpContext.Request.Query.ContainsKey(searchKey) && !String.IsNullOrWhiteSpace(HttpContext.Request.Query[searchKey]))
            {
                SearchString = (string)HttpContext.Request.Query[searchKey];
            }
            #endregion


            #region << Create Columns >>

            Columns = new List <WvGridColumnMeta>()
            {
                new WvGridColumnMeta()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label = "Icon",
                    Name  = "icon",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new WvGridColumnMeta()
                {
                    Label = "# fields",
                    Name  = "fields",
                    Width = "80px"
                }
            };

            #endregion

            #region << Records >>
            //Apply sort
            if (!String.IsNullOrWhiteSpace(SortBy))
            {
                switch (SortBy)
                {
                case "name":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        allEntities = allEntities.OrderByDescending(x => x.Name).ToList();
                    }
                    else
                    {
                        allEntities = allEntities.OrderBy(x => x.Name).ToList();
                    }
                    break;

                default:
                    break;
                }
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            allEntities = allEntities.Skip(skipPages).Take(PagerSize).ToList();

            foreach (var entity in allEntities)
            {
                var record = new EntityRecord();
                record["action"] = $"<a class='btn btn-sm btn-outline-secondary' title='Entity details' href='/sdk/objects/entity/r/{entity.Id}?returnUrl={ReturnUrlEncoded}'><span class='fa fa-eye'></span></a>";
                record["icon"]   = $"<div class='badge badge-pill' style='font-size:18px;color:{(String.IsNullOrWhiteSpace(entity.Color) ? "#999999" : entity.Color)};'><span class='{entity.IconName}'></span></div>";
                record["name"]   = entity.Name;
                record["fields"] = entity.Fields.Count.ToString();
                Records.Add(record);
            }
            #endregion

            #region << Actions >>
            HeaderActions.AddRange(new List <string>()
            {
                $"<a href='/sdk/objects/entity/c?returnUrl={ReturnUrlEncoded}' class='btn btn-white btn-sm'><span class='fa fa-plus go-green'></span> Create Entity</a>"
            });

            #endregion

            ErpRequestContext.PageContext = PageContext;

            BeforeRender();
            return(Page());
        }
示例#6
0
        public IActionResult OnGet()
        {
            var initResult = Init();

            if (initResult != null)
            {
                return(initResult);
            }

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;
            #endregion

            #region << Create Columns >>

            Columns = new List <WvGridColumnMeta>()
            {
                new WvGridColumnMeta()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label = "date",
                    Name  = "Date",
                    Width = "150px"
                },
                new WvGridColumnMeta()
                {
                    Label = "type",
                    Name  = "Type",
                    Width = "40px"
                },
                new WvGridColumnMeta()
                {
                    Label = "source",
                    Name  = "Source"
                },
                new WvGridColumnMeta()
                {
                    Label = "message",
                    Name  = "Message"
                },
                new WvGridColumnMeta()
                {
                    Label = "status",
                    Name  = "Status",
                    Width = "40px"
                },
            };

            #endregion

            #region << Records >>

            string querySource  = null;
            string queryMessage = null;

            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                var whereClauseList = new List <string>();
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "source":
                        querySource = filter.Value;
                        break;

                    case "message":
                        queryMessage = filter.Value;
                        break;
                    }
                }
            }

            Records    = new Diagnostics.Log().GetLogs(Pager, PagerSize, querySource, queryMessage);
            TotalCount = Records.TotalCount;
            #endregion
            BeforeRender();
            return(Page());
        }
示例#7
0
        public IActionResult OnGet()
        {
            Init();

            var entMan = new EntityManager();
            var recMan = new RecordManager();

            #region << InitPage >>
            int           pager     = 1;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object;

            if (ErpEntity == null)
            {
                return(NotFound());
            }

            ReadAccess   = SecurityContext.HasEntityPermission(EntityPermission.Read, ErpEntity);
            CreateAccess = SecurityContext.HasEntityPermission(EntityPermission.Create, ErpEntity);
            UpdateAccess = SecurityContext.HasEntityPermission(EntityPermission.Update, ErpEntity);
            DeleteAccess = SecurityContext.HasEntityPermission(EntityPermission.Delete, ErpEntity);

            if (string.IsNullOrWhiteSpace(ReturnUrl))
            {
                ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/";
            }

            Fields = ErpEntity.Fields.OrderBy(x => x.Name).ToList();
            var idField = Fields.Single(x => x.Name == "id");
            Fields.Remove(idField);
            Fields = Fields.OrderBy(x => x.Name).ToList();
            Fields.Insert(0, idField);

            List <QueryObject> filterQueries = new List <QueryObject>();

            #region << Process filters >>

            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    if (!ErpEntity.Fields.Any(x => x.Name == filter.Name))
                    {
                        continue;
                    }

                    switch (filter.Type)
                    {
                    case FilterType.EQ:
                        filterQueries.Add(EntityQuery.QueryEQ(filter.Name, filter.Value));
                        break;

                    case FilterType.CONTAINS:
                        filterQueries.Add(EntityQuery.QueryContains(filter.Name, filter.Value));
                        break;

                    case FilterType.FTS:
                        filterQueries.Add(EntityQuery.QueryFTS(filter.Name, filter.Value));
                        break;

                    case FilterType.STARTSWITH:
                        filterQueries.Add(EntityQuery.QueryStartsWith(filter.Name, filter.Value));
                        break;

                    case FilterType.REGEX:
                        filterQueries.Add(EntityQuery.QueryRegex(filter.Name, filter.Value));
                        break;
                    }
                }
            }
            #endregion


            #region << Process Sort >>

            var sort = new List <QuerySortObject> {
                new QuerySortObject("id", QuerySortType.Ascending)
            };
            if (!String.IsNullOrWhiteSpace(SortBy) && Fields.Any(x => x.Name == SortBy))
            {
                sort = new List <QuerySortObject> {
                    new QuerySortObject(SortBy, SortOrder == QuerySortType.Ascending ? QuerySortType.Ascending : QuerySortType.Descending)
                }
            }
            ;

            #endregion

            if (!ReadAccess)
            {
                Records    = new List <EntityRecord>();
                TotalCount = 0;

                Validation.Message = "You have no permissions to view records.";
                Validation.Errors.Add(new ValidationError("", "You have no permissions to view records."));
            }
            else
            {
                EntityQuery enQuery = null;

                if (filterQueries.Any())
                {
                    enQuery = new EntityQuery(ErpEntity.Name, query: EntityQuery.QueryAND(filterQueries.ToArray()), sort: sort.ToArray(), skip: (pager - 1) * PagerSize, limit: PagerSize);
                }
                else
                {
                    enQuery = new EntityQuery(ErpEntity.Name, sort: sort.ToArray(), skip: (pager - 1) * PagerSize, limit: PagerSize);
                }

                var queryResponse = recMan.Find(enQuery);
                if (!queryResponse.Success)
                {
                    throw new Exception(queryResponse.Message);
                }

                Records    = queryResponse.Object.Data;
                TotalCount = (int)recMan.Count(enQuery).Object;
            }

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));
            PageDescription  = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);
            HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "data"));

            #endregion

            #region << Create Columns >>

            Columns.Add(new GridColumn()
            {
                Name       = "",
                Label      = "",
                Width      = "90px",
                Sortable   = false,
                Searchable = false
            });

            foreach (var field in Fields)
            {
                var fieldAccess            = GetFieldAccess(field);
                var searchAndSortAvailable = field.Searchable && (fieldAccess == FieldAccess.Full || fieldAccess == FieldAccess.ReadOnly);
                var column = new GridColumn()
                {
                    Name       = field.Name,
                    Label      = field.Label,
                    Sortable   = searchAndSortAvailable,
                    Searchable = searchAndSortAvailable
                };

                if (field.GetFieldType() == FieldType.GuidField)
                {
                    column.Width = "1%";
                }

                Columns.Add(column);
            }

            #endregion

            #region << Filters >>

            foreach (var field in Fields)
            {
                //remove fields with no access from search
                var fieldAccess = GetFieldAccess(field);
                var searchable  = field.Searchable && (fieldAccess == FieldAccess.Full || fieldAccess == FieldAccess.ReadOnly);
                if (!searchable)
                {
                    continue;
                }

                if (field.Name == "id")
                {
                    dynamic filterObj = new ExpandoObject();
                    filterObj.Name         = field.Name;
                    filterObj.Label        = field.Label;
                    filterObj.Type         = FilterType.EQ;
                    filterObj.AllowedTypes = new List <FilterType> {
                        FilterType.EQ
                    };
                    Filters.Add(filterObj);
                }
                else if (field.Searchable)
                {
                    dynamic filterObj = new ExpandoObject();
                    filterObj.Name         = field.Name;
                    filterObj.Label        = field.Label;
                    filterObj.Type         = FilterType.EQ;
                    filterObj.AllowedTypes = new List <FilterType> {
                        FilterType.EQ, FilterType.NOT
                    };

                    var fieldType = field.GetFieldType();
                    if (fieldType == FieldType.TextField || fieldType == FieldType.MultiLineTextField ||
                        fieldType == FieldType.UrlField || fieldType == FieldType.EmailField || fieldType == FieldType.HtmlField ||
                        fieldType == FieldType.SelectField || fieldType == FieldType.MultiSelectField)
                    {
                        filterObj.AllowedTypes.Add(FilterType.REGEX);
                        filterObj.AllowedTypes.Add(FilterType.FTS);
                        filterObj.AllowedTypes.Add(FilterType.STARTSWITH);
                        filterObj.AllowedTypes.Add(FilterType.CONTAINS);
                    }

                    Filters.Add(filterObj);
                }
            }

            #endregion

            return(Page());
        }
示例#8
0
 public QuerySortObject( string fieldName, QuerySortType sortType )
 {
     FieldName = fieldName;
     SortType = sortType;
 }
示例#9
0
 public QuerySortObject(string fieldName, QuerySortType sortType)
 {
     FieldName = fieldName;
     SortType  = sortType;
 }
示例#10
0
        public void OnGet()
        {
            Init();

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            var appServ = new AppService();

            var apps = appServ.GetAllApplications().OrderBy(x => x.Name).ToList();
            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        if (filter.Type == FilterType.CONTAINS)
                        {
                            apps = apps.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        }
                        break;
                    }
                }
            }
            #endregion


            TotalCount = apps.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);
            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label = "Icon",
                    Name  = "icon",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label      = "Label",
                    Name       = "label",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label = "Description",
                    Name  = "description"
                }
            };

            #endregion

            #region << Records >>
            //Apply sort
            if (!String.IsNullOrWhiteSpace(SortBy))
            {
                switch (SortBy)
                {
                case "name":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        apps = apps.OrderByDescending(x => x.Name).ToList();
                    }
                    else
                    {
                        apps = apps.OrderBy(x => x.Name).ToList();
                    }
                    break;

                case "label":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        apps = apps.OrderByDescending(x => x.Label).ToList();
                    }
                    else
                    {
                        apps = apps.OrderBy(x => x.Label).ToList();
                    }
                    break;

                default:
                    break;
                }
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            apps = apps.Skip(skipPages).Take(PagerSize).ToList();

            foreach (var app in apps)
            {
                var record = new EntityRecord();
                record["action"]      = $"<a class='btn btn-sm btn-white' title='App details' href='/sdk/objects/application/r/{app.Id}?returnUrl={ReturnUrlEncoded}'><span class='ti-eye'></span></a>";
                record["name"]        = app.Name;
                record["label"]       = app.Label;
                record["icon"]        = $"<div class='badge badge-pill' style='font-size:18px;color:{app.Color};'><span class='{app.IconClass}'></span></div>";
                record["description"] = app.Description;
                Records.Add(record);
            }
            #endregion

            ErpRequestContext.PageContext = PageContext;
        }
示例#11
0
        public IActionResult OnGet()
        {
            Init();

            var entMan = new EntityManager();

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object;

            if (ErpEntity == null)
            {
                return(NotFound());
            }

            if (String.IsNullOrWhiteSpace(ReturnUrl))
            {
                ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/";
            }

            var allFields = ErpEntity.Fields;

            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        if (filter.Type == FilterType.CONTAINS)
                        {
                            allFields = allFields.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        }
                        break;
                    }
                }
            }
            #endregion

            allFields  = allFields.OrderBy(x => x.Name).ToList();
            TotalCount = allFields.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);
            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label = "Type",
                    Name  = "type",
                    Width = "120px"
                },
                new GridColumn()
                {
                    Label = "System",
                    Name  = "system",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label = "Required",
                    Name  = "required",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label = "Unique",
                    Name  = "unique",
                    Width = "80px"
                },
                new GridColumn()
                {
                    Label = "Searchable",
                    Name  = "searchable",
                    Width = "1%"
                },
            };

            #endregion

            #region << Records >>
            //Apply sort
            if (!String.IsNullOrWhiteSpace(SortBy))
            {
                switch (SortBy)
                {
                case "name":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        allFields = allFields.OrderByDescending(x => x.Name).ToList();
                    }
                    else
                    {
                        allFields = allFields.OrderBy(x => x.Name).ToList();
                    }
                    break;

                default:
                    break;
                }
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            allFields = allFields.Skip(skipPages).Take(PagerSize).ToList();

            foreach (var field in allFields)
            {
                var record = new EntityRecord();
                record["action"]     = $"<a class='btn btn-sm btn-white' title='App details' href='/sdk/objects/entity/r/{ErpEntity.Id}/rl/fields/r/{field.Id}?returnUrl={ReturnUrlEncoded}'><span class='ti-eye'></span></a>";
                record["name"]       = field.Name;
                record["type"]       = field.GetFieldType().ToString();
                record["system"]     = field.System;
                record["required"]   = field.Required;
                record["unique"]     = field.Unique;
                record["searchable"] = field.Searchable;
                Records.Add(record);
            }
            #endregion

            #region << Actions >>
            HeaderActions.AddRange(new List <string>()
            {
                $"<a href='/sdk/objects/entity/r/{(ErpEntity != null ? ErpEntity.Id : Guid.Empty)}/rl/fields/c/select?returnUrl={ReturnUrlEncoded}' class='btn btn-white btn-sm'><span class='fa fa-plus go-green'></span> Create Field</a>",
                $"<button type='button' onclick='ErpEvent.DISPATCH(\"WebVella.Erp.Web.Components.PcDrawer\",\"open\")' class='btn btn-white btn-sm'><span class='fa fa-search'></span> Search</a>"
            });
            HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "fields"));
            #endregion


            ErpRequestContext.PageContext = PageContext;
            return(Page());
        }
示例#12
0
        public IActionResult OnGet()
        {
            var initResult = Init();

            if (initResult != null)
            {
                return(initResult);
            }

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            ErpEntity = new EntityManager().ReadEntity(ParentRecordId ?? Guid.Empty).Object;

            if (ErpEntity == null)
            {
                return(NotFound());
            }

            if (String.IsNullOrWhiteSpace(ReturnUrl))
            {
                ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/";
            }


            var pageSer = new PageService();
            var entMan  = new EntityManager();
            var appServ = new AppService();

            var pages    = pageSer.GetAll();
            var entities = entMan.ReadEntities().Object;
            var apps     = appServ.GetAllApplications();

            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            foreach (var filter in submittedFilters)
            {
                switch (filter.Name)
                {
                default:
                case "label":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        pages = pages.FindAll(x => x.Label.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                    }
                    break;

                case "name":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        pages = pages.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                    }
                    break;

                case "app":
                    if (filter.Type == FilterType.EQ)
                    {
                        var app = apps.FirstOrDefault(x => x.Name.ToLowerInvariant() == filter.Value.ToLowerInvariant());
                        if (app != null)
                        {
                            pages = pages.FindAll(x => x.AppId == app.Id).ToList();
                        }
                        else
                        {
                            pages = new List <ErpPage>();
                        }
                    }
                    break;

                case "entity":
                    if (filter.Type == FilterType.EQ)
                    {
                        var entity = entities.FirstOrDefault(x => x.Name.ToLowerInvariant() == filter.Value.ToLowerInvariant());
                        if (entity != null)
                        {
                            pages = pages.FindAll(x => x.EntityId == entity.Id).ToList();
                        }
                        else
                        {
                            pages = new List <ErpPage>();
                        }
                    }
                    break;

                case "type":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        foreach (var typeEnum in Enum.GetValues(typeof(PageType)).Cast <PageType>())
                        {
                            var enumDescription = typeEnum.GetLabel();
                            if (!enumDescription.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant()))
                            {
                                pages = pages.FindAll(x => x.Type != typeEnum).ToList();
                            }
                        }
                        //pages = pages.FindAll(x => x.Type == entity.Id).ToList();
                    }
                    break;

                case "system":
                    if (filter.Type == FilterType.EQ)
                    {
                        if (filter.Value == "true")
                        {
                            pages = pages.FindAll(x => x.System).ToList();
                        }
                        else if (filter.Value == "false")
                        {
                            pages = pages.FindAll(x => !x.System).ToList();
                        }
                    }
                    break;

                case "customized":
                    if (filter.Type == FilterType.EQ)
                    {
                        if (filter.Value == "true")
                        {
                            pages = pages.FindAll(x => x.IsRazorBody).ToList();
                        }
                        else if (filter.Value == "false")
                        {
                            pages = pages.FindAll(x => !x.IsRazorBody).ToList();
                        }
                    }
                    break;
                }
            }
            #endregion

            TotalCount = pages.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageContext.HttpContext.Request.Path + PageContext.HttpContext.Request.QueryString);

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);

            HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "pages"));
            #endregion

            #region << Create Columns >>

            Columns = new List <WvGridColumnMeta>()
            {
                new WvGridColumnMeta()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new WvGridColumnMeta()
                {
                    Label      = "Label",
                    Name       = "label",
                    Sortable   = true,
                    Searchable = true
                },
                new WvGridColumnMeta()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new WvGridColumnMeta()
                {
                    Label = "App",
                    Name  = "app",
                    Width = "140px"
                },
                new WvGridColumnMeta()
                {
                    Label = "Entity",
                    Name  = "entity",
                    Width = "140px"
                },
                new WvGridColumnMeta()
                {
                    Label    = "Type",
                    Name     = "type",
                    Sortable = true,
                    Width    = "120px"
                },
                new WvGridColumnMeta()
                {
                    Label    = "system",
                    Name     = "system",
                    Sortable = true,
                    Width    = "80px"
                },
                new WvGridColumnMeta()
                {
                    Label    = "Customized",
                    Name     = "customized",
                    Sortable = true,
                    Width    = "80px"
                }
            };

            #endregion

            #region << Records >>
            pages = pages.FindAll(x => x.EntityId == ErpEntity.Id).ToList();
            switch (SortBy)
            {
            default:
            case "label":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Label).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Label).ToList();
                }
                break;

            case "name":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Name).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Name).ToList();
                }
                break;

            case "type":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Type).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Type).ToList();
                }
                break;

            case "system":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.System).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.System).ToList();
                }
                break;

            case "customized":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.IsRazorBody).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.IsRazorBody).ToList();
                }
                break;
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            pages = pages.Skip(skipPages).Take(PagerSize).ToList();

            foreach (var page in pages)
            {
                var record = new EntityRecord();
                record["action"] = $"<a class='btn btn-sm btn-outline-secondary' target='_blank' href='/sdk/objects/page/r/{page.Id}'><span class='fa fa-eye'></span></a>";
                record["label"]  = page.Label;
                record["name"]   = page.Name;
                record["app"]    = page.AppId != null?apps.First(x => x.Id == page.AppId).Name : "";

                record["entity"]     = page.EntityId != null?entities.First(x => x.Id == page.EntityId).Name : "";;
                record["type"]       = $"{page.Type.GetLabel()}";
                record["system"]     = page.System;
                record["customized"] = page.IsRazorBody;
                Records.Add(record);
            }
            #endregion


            BeforeRender();
            return(Page());
        }
示例#13
0
        public void OnGet()
        {
            Init();

            DataSourceManager dsMan = new DataSourceManager();

            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;

            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Page             = pager;
            SortBy           = sortBy;
            SortOrder        = sortOrder;
            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));

            var allDataSources = dsMan.GetAll().OrderBy(x => x.Name).ToList();

            foreach (var ds in allDataSources)
            {
                if (ds is DatabaseDataSource)
                {
                    var record   = new EntityRecord();
                    var recordId = ds.Id;
                    record["action"]           = $"<a class='btn btn-sm btn-outline-secondary' title='Data source details' href='/sdk/objects/data_source/r/{recordId}?returnUrl={ReturnUrlEncoded}'><span class='fa fa-eye'></span></a>";
                    record["icon"]             = PageUtils.GetDataSourceIconBadge(DataSourceType.DATABASE);
                    record["name"]             = ds.Name;
                    record["target"]           = ds.EntityName;
                    record["type_description"] = DataSourceType.DATABASE.GetLabel();
                    record["type"]             = DataSourceType.DATABASE;
                    record["model"]            = ds.ResultModel;
                    record["param_count"]      = ds.Parameters.Count;
                    Records.Add(record);
                }
                else
                {
                    var record   = new EntityRecord();
                    var recordId = ds.Id;
                    record["action"]           = $"<a class='btn btn-sm btn-outline-secondary' title='Data source details' href='/sdk/objects/data_source/r/{recordId}?returnUrl={ReturnUrlEncoded}'><span class='fa fa-eye'></span></a>";
                    record["icon"]             = PageUtils.GetDataSourceIconBadge(DataSourceType.CODE);
                    record["name"]             = ds.Name;
                    record["target"]           = ds.GetType().FullName;
                    record["type_description"] = DataSourceType.CODE.GetLabel();
                    record["type"]             = DataSourceType.CODE;
                    record["model"]            = ds.ResultModel;
                    record["param_count"]      = 0;
                    Records.Add(record);
                }
            }

            TotalCount      = Records.Count;
            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);

            #region << Filters >>

            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        Records = Records.FindAll(x => x["name"].ToString().ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        break;

                    case "model":
                        Records = Records.FindAll(x => x["model"].ToString().ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        break;

                    case "target":
                        Records = Records.FindAll(x => x["target"].ToString().ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        break;

                    case "type":
                        Records = Records.FindAll(x => ((int)x["type"]).ToString().Equals(filter.Value)).ToList();
                        break;
                    }
                }
            }

            #endregion

            #region << Sort >>

            if (!String.IsNullOrWhiteSpace(SortBy))
            {
                switch (SortBy)
                {
                case "name":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        Records = Records.OrderByDescending(x => x["name"].ToString()).ToList();
                    }
                    else
                    {
                        Records = Records.OrderBy(x => x["name"].ToString()).ToList();
                    }
                    break;

                case "type":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        Records = Records.OrderByDescending(x => x["type"].ToString()).ToList();
                    }
                    else
                    {
                        Records = Records.OrderBy(x => x["type"].ToString()).ToList();
                    }
                    break;

                case "target":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        Records = Records.OrderByDescending(x => x["target"].ToString()).ToList();
                    }
                    else
                    {
                        Records = Records.OrderBy(x => x["target"].ToString()).ToList();
                    }
                    break;

                default:
                    break;
                }
            }

            #endregion

            #region << Create Columns >>
            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Label = "",
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label = "Icon",
                    Name  = "icon",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label    = "Name",
                    Name     = "name",
                    Width    = "220px",
                    Sortable = true
                },
                new GridColumn()
                {
                    Label    = "Type",
                    Name     = "type",
                    Width    = "120px",
                    Sortable = true
                },
                new GridColumn()
                {
                    Label    = "target",
                    Name     = "Target",
                    Sortable = true
                },
                new GridColumn()
                {
                    Label = "Returned Model",
                    Name  = "model",
                    Width = "220px"
                },
                new GridColumn()
                {
                    Label = "Params",
                    Name  = "param_count",
                    Width = "40px"
                },
            };
            #endregion

            #region << Actions >>
            HeaderActions.AddRange(new List <string>()
            {
                $"<a href='/sdk/objects/data_source/c/create?returnUrl={ReturnUrlEncoded}' class='btn btn-white btn-sm'><span class='fa fa-plus go-green'></span> Add Data Source</a>",
                $"<button type='button' onclick='ErpEvent.DISPATCH(\"WebVella.Erp.Web.Components.PcDrawer\",\"open\")' class='btn btn-white btn-sm'><span class='fa fa-search'></span> Search</a>"
            });

            #endregion


            var skipPages = (Page - 1) * PageSize;
            Records = Records.Skip(skipPages).Take(PageSize).ToList();


            ErpRequestContext.PageContext = PageContext;

            BeforeRender();
        }
示例#14
0
        public IActionResult OnGet()
        {
            Init();

            var entMan = new EntityManager();
            var relMan = new EntityRelationManager();

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object;

            if (ErpEntity == null)
            {
                return(NotFound());
            }

            if (string.IsNullOrWhiteSpace(ReturnUrl))
            {
                ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/";
            }

            var entityRelations = relMan.Read().Object.Where(x => x.TargetEntityId == ErpEntity.Id || x.OriginEntityId == ErpEntity.Id).ToList();

            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        if (filter.Type == FilterType.CONTAINS)
                        {
                            entityRelations = entityRelations.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        }
                        break;
                    }
                }
            }
            #endregion

            entityRelations = entityRelations.OrderBy(x => x.Name).ToList();
            TotalCount      = entityRelations.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageUtils.GetCurrentUrl(PageContext.HttpContext));

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);
            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label      = "Origin",
                    Name       = "origin",
                    Sortable   = false,
                    Searchable = false,
                    Width      = "25%"
                },
                new GridColumn()
                {
                    Label      = "Target",
                    Name       = "target",
                    Sortable   = false,
                    Searchable = false,
                    Width      = "25%",
                },
            };

            #endregion

            #region << Records >>
            //Apply sort
            if (!String.IsNullOrWhiteSpace(SortBy))
            {
                switch (SortBy)
                {
                case "name":
                    if (SortOrder == QuerySortType.Descending)
                    {
                        entityRelations = entityRelations.OrderByDescending(x => x.Name).ToList();
                    }
                    else
                    {
                        entityRelations = entityRelations.OrderBy(x => x.Name).ToList();
                    }
                    break;

                default:
                    break;
                }
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            entityRelations = entityRelations.Skip(skipPages).Take(PagerSize).ToList();

            const string OneToOne   = " <span class='badge badge-primary badge-inverse' title='One to One' style='margin-left:5px;'>1 : 1</span>";
            const string OneToMany  = " <span class='badge badge-primary badge-inverse' title='One to Many' style='margin-left:5px;'>1 : N</span>";
            const string ManyToMany = " <span class='badge badge-primary badge-inverse' title='Many to Many' style='margin-left:5px;'>N : N</span>";

            foreach (var relation in entityRelations)
            {
                var nameColumnText = relation.Name + (relation.System ? " <i class='fa fa-fw fa-lock'></i>" : "");
                switch (relation.RelationType)
                {
                case EntityRelationType.OneToOne:
                    nameColumnText = nameColumnText + OneToOne;
                    break;

                case EntityRelationType.OneToMany:
                    nameColumnText = nameColumnText + OneToMany;
                    break;

                case EntityRelationType.ManyToMany:
                    nameColumnText = nameColumnText + ManyToMany;
                    break;
                }


                var originColumnText = $"<div><span class='go-gray'>Entity: </span> {relation.OriginEntityName}</div><div><span class='go-gray'>Field: </span> {relation.OriginFieldName}</div>";
                var targetColumnText = $"<div><span class='go-gray'>Entity: </span> {relation.TargetEntityName}</div><div><span class='go-gray'>Field: </span> {relation.TargetFieldName}</div>";

                var record = new EntityRecord();
                record["action"] = $"<a class='btn btn-sm btn-white' title='view relation details' href='/sdk/objects/entity/r/{ErpEntity.Id}/rl/relations/r/{relation.Id}?returnUrl={ReturnUrlEncoded}'><span class='ti-eye'></span></a>";
                record["name"]   = nameColumnText;
                record["origin"] = originColumnText;
                record["target"] = targetColumnText;
                Records.Add(record);
            }
            #endregion

            HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "relations"));

            ErpRequestContext.PageContext = PageContext;

            return(Page());
        }
示例#15
0
        public void OnGet()
        {
            Init();

            #region << InitPage >>
            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;

            var pageSer = new PageService();
            var entMan  = new EntityManager();
            var appServ = new AppService();

            var pages    = pageSer.GetAll();
            var entities = entMan.ReadEntities().Object;
            var apps     = appServ.GetAllApplications();

            #region << Apply filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            foreach (var filter in submittedFilters)
            {
                switch (filter.Name)
                {
                default:
                case "label":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        pages = pages.FindAll(x => x.Label.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                    }
                    break;

                case "name":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        pages = pages.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                    }
                    break;

                case "app":
                    if (filter.Type == FilterType.EQ)
                    {
                        var app = apps.FirstOrDefault(x => x.Name.ToLowerInvariant() == filter.Value.ToLowerInvariant());
                        if (app != null)
                        {
                            pages = pages.FindAll(x => x.AppId == app.Id).ToList();
                        }
                        else
                        {
                            pages = new List <ErpPage>();
                        }
                    }
                    break;

                case "entity":
                    if (filter.Type == FilterType.EQ)
                    {
                        var entity = entities.FirstOrDefault(x => x.Name.ToLowerInvariant() == filter.Value.ToLowerInvariant());
                        if (entity != null)
                        {
                            pages = pages.FindAll(x => x.EntityId == entity.Id).ToList();
                        }
                        else
                        {
                            pages = new List <ErpPage>();
                        }
                    }
                    break;

                case "type":
                    if (filter.Type == FilterType.CONTAINS)
                    {
                        foreach (var typeEnum in Enum.GetValues(typeof(PageType)).Cast <PageType>())
                        {
                            var enumDescription = typeEnum.GetLabel();
                            if (!enumDescription.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant()))
                            {
                                pages = pages.FindAll(x => x.Type != typeEnum).ToList();
                            }
                        }
                        //pages = pages.FindAll(x => x.Type == entity.Id).ToList();
                    }
                    break;

                case "system":
                    if (filter.Type == FilterType.EQ)
                    {
                        if (filter.Value == "true")
                        {
                            pages = pages.FindAll(x => x.System).ToList();
                        }
                        else if (filter.Value == "false")
                        {
                            pages = pages.FindAll(x => !x.System).ToList();
                        }
                    }
                    break;

                case "customized":
                    if (filter.Type == FilterType.EQ)
                    {
                        if (filter.Value == "true")
                        {
                            pages = pages.FindAll(x => x.IsRazorBody).ToList();
                        }
                        else if (filter.Value == "false")
                        {
                            pages = pages.FindAll(x => !x.IsRazorBody).ToList();
                        }
                    }
                    break;
                }
            }
            #endregion

            TotalCount = pages.Count;

            ReturnUrlEncoded = HttpUtility.UrlEncode(PageContext.HttpContext.Request.Path + PageContext.HttpContext.Request.QueryString);

            PageDescription = PageUtils.GenerateListPageDescription(PageContext.HttpContext, "", TotalCount);
            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "1%"
                },
                new GridColumn()
                {
                    Label      = "Label",
                    Name       = "label",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label      = "Name",
                    Name       = "name",
                    Sortable   = true,
                    Searchable = true
                },
                new GridColumn()
                {
                    Label = "App",
                    Name  = "app",
                    Width = "140px"
                },
                new GridColumn()
                {
                    Label = "Entity",
                    Name  = "entity",
                    Width = "140px"
                },
                new GridColumn()
                {
                    Label    = "Type",
                    Name     = "type",
                    Sortable = true,
                    Width    = "120px"
                },
                new GridColumn()
                {
                    Label    = "system",
                    Name     = "system",
                    Sortable = true,
                    Width    = "80px"
                },
                new GridColumn()
                {
                    Label    = "Customized",
                    Name     = "customized",
                    Sortable = true,
                    Width    = "80px"
                }
            };

            #endregion

            #region << Records >>

            switch (SortBy)
            {
            default:
            case "label":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Label).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Label).ToList();
                }
                break;

            case "name":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Name).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Name).ToList();
                }
                break;

            case "type":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.Type).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.Type).ToList();
                }
                break;

            case "system":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.System).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.System).ToList();
                }
                break;

            case "customized":
                if (SortOrder == QuerySortType.Descending)
                {
                    pages = pages.OrderByDescending(x => x.IsRazorBody).ToList();
                }
                else
                {
                    pages = pages.OrderBy(x => x.IsRazorBody).ToList();
                }
                break;
            }

            //Apply pager
            var skipPages = (Pager - 1) * PagerSize;
            pages = pages.Skip(skipPages).Take(PagerSize).ToList();

            foreach (var page in pages)
            {
                //The entity of the page could be deleted. In this case show its id as name
                var pageEntityName = "";
                if (page.EntityId != null)
                {
                    pageEntityName = page.EntityId.Value.ToString();
                }

                var pageEntity = entities.FirstOrDefault(x => x.Id == page.EntityId);
                if (pageEntity != null)
                {
                    pageEntityName = pageEntity.Name;
                }

                var record = new EntityRecord();
                record["id"]    = page.Id;
                record["label"] = page.Label;
                record["name"]  = page.Name;
                record["app"]   = page.AppId != null?apps.First(x => x.Id == page.AppId).Name : "";

                record["entity"]     = pageEntityName;
                record["type"]       = $"{page.Type.GetLabel()}";
                record["system"]     = page.System;
                record["customized"] = page.IsRazorBody;
                Records.Add(record);
            }
            #endregion
        }
示例#16
0
        public void OnGet()
        {
            Init();

            #region << InitPage >>

            HeaderToolbar.AddRange(AdminPageUtils.GetJobAdminSubNav("plan"));

            int           pager     = 0;
            string        sortBy    = "";
            QuerySortType sortOrder = QuerySortType.Ascending;
            PageUtils.GetListQueryParams(PageContext.HttpContext, out pager, out sortBy, out sortOrder);
            Pager     = pager;
            SortBy    = sortBy;
            SortOrder = sortOrder;


            #endregion

            #region << Create Columns >>

            Columns = new List <GridColumn>()
            {
                new GridColumn()
                {
                    Name  = "action",
                    Width = "140px"
                },
                new GridColumn()
                {
                    Label = "",
                    Name  = "status",
                    Width = "30px"
                },
                new GridColumn()
                {
                    Label = "name",
                    Name  = "name"
                },
                new GridColumn()
                {
                    Label = "type",
                    Name  = "type",
                    Width = "100px"
                },
                new GridColumn()
                {
                    Label = "last trigger",
                    Name  = "last_trigger",
                    Width = "140px"
                },
                new GridColumn()
                {
                    Label = "next trigger",
                    Name  = "next_trigger",
                    Width = "140px"
                },
            };

            #endregion

            #region << Records >>
            Records = ScheduleManager.Current.GetSchedulePlans().MapTo <OutputSchedulePlan>();
            Records = Records.OrderBy(x => x.Name).ThenByDescending(x => x.CreatedOn).ToList();

            #region << Apply Filters >>
            var submittedFilters = PageUtils.GetPageFiltersFromQuery(PageContext.HttpContext);
            if (submittedFilters.Count > 0)
            {
                foreach (var filter in submittedFilters)
                {
                    switch (filter.Name)
                    {
                    case "name":
                        if (filter.Type == FilterType.CONTAINS)
                        {
                            Records = Records.FindAll(x => x.Name.ToLowerInvariant().Contains(filter.Value.ToLowerInvariant())).ToList();
                        }
                        break;

                    default:
                        break;
                    }
                }
            }
            #endregion

            TotalCount = Records.Count;
            Records    = Records.Skip((Pager - 1) * PagerSize).Take(PagerSize).ToList();
            #endregion
        }