public IActionResult OnGet() { Init(); var entMan = new EntityManager(); var recMan = new RecordManager(); #region << InitPage >> ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; if (ErpEntity == null) { return(NotFound()); } if (string.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/"; } DomainRoot = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host; EntityMetaUrlRoot = "/api/v3/en_US/meta/entity/"; EntityRecordUrlRoot = "/api/v3/en_US/record/"; EQLUrlRoot = "/api/v3/en_US/eql"; if (ErpEntity.Fields.Any()) { SampleFieldId = ErpEntity.Fields[0].Id; } HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "web-api")); #endregion BeforeRender(); return(Page()); }
public void PageInit() { Init(); ApiUrlRoot = PageContext.HttpContext.Request.Scheme + "://" + PageContext.HttpContext.Request.Host; #region << Init App >> var appServ = new AppService(); App = appServ.GetApplication(RecordId ?? Guid.Empty); #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/application/l/list"; } #region << Actions >> HeaderToolbar.AddRange(AdminPageUtils.GetAppAdminSubNav(App, "sitemap")); #endregion }
public IActionResult OnGet() { var initResult = Init(); if (initResult != null) { return(initResult); } InitPage(); if (ErpEntity == null) { return(NotFound()); } HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "fields")); ErpRequestContext.PageContext = PageContext; BeforeRender(); return(Page()); }
public void PageInit() { #region << Init App >> var appServ = new AppService(); App = appServ.GetApplication(RecordId ?? Guid.Empty); if (App != null) { Name = App.Name; Label = App.Label; Description = App.Description; IconClass = App.IconClass; Author = App.Author; Color = App.Color; Weight = App.Weight; if (App.Access != null && App.Access.Count > 0) { Access = App.Access.Select(x => x.ToString()).ToList(); } } #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/application/l/list"; } #region << Init User Role Options >> var roles = new SecurityManager().GetAllRoles().OrderBy(x => x.Name).ToList(); foreach (var role in roles) { RoleOptions.Add(new SelectOption() { Value = role.Id.ToString(), Label = role.Name }); } #endregion LocalNav = AdminPageUtils.GetAppAdminSubNav(App, "details"); }
public void PageInit() { var entMan = new EntityManager(); var recMan = new RecordManager(); ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; if (ErpEntity == null) { return; } if (!SecurityContext.HasEntityPermission(EntityPermission.Create, ErpEntity)) { ErpEntity = null; return; } 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); if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/rl/data/l/"; } HeaderActions.AddRange(new List <string>() { PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Save Record", formId: "CreateRecord"), PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: $"/sdk/objects/entity/r/{ErpEntity.Id}/rl/data/l/") }); HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "data")); }
public void PageInit() { Init(); ApiUrlRoot = PageContext.HttpContext.Request.Scheme + "://" + PageContext.HttpContext.Request.Host; #region << Init Page >> var pageServ = new PageService(); ErpPage = pageServ.GetPage(RecordId ?? Guid.Empty); #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/page/l/list"; } HeaderToolbar.AddRange(AdminPageUtils.GetPageAdminSubNav(ErpPage, "generated-body")); if (ErpPage != null) { PagePublicUrl = PageUtils.CalculatePageUrl(ErpPage.Id); } }
public void PageInit() { Init(); #region << Init App >> var appServ = new AppService(); App = appServ.GetApplication(RecordId ?? Guid.Empty); #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/application/l/list"; } #region << Actions >> HeaderActions.Add($"<a href='/sdk/objects/page/c/create?returnUrl={HttpUtility.UrlEncode(CurrentUrl)}&Type=Application&AppId={(App != null ? App.Id.ToString() : "")}' class='btn btn-white btn-sm'><i class='fa fa-plus go-green'></i> CreatePage</a>"); #endregion #region << Actions >> HeaderToolbar.AddRange(AdminPageUtils.GetAppAdminSubNav(App, "pages")); #endregion }
public void PageInit() { Init(); #region << Init Page >> var pageServ = new PageService(); ErpPage = pageServ.GetPage(RecordId ?? Guid.Empty); if (ErpPage != null) { IsRazorBody = ErpPage.IsRazorBody; RazorBody = ErpPage.RazorBody; } #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/page/l/list"; } HeaderToolbar.AddRange(AdminPageUtils.GetPageAdminSubNav(ErpPage, "custom-body")); PagePublicUrl = PageUtils.CalculatePageUrl(ErpPage.Id); }
public void PageInit() { Init(); var entMan = new EntityManager(); var relMan = new EntityRelationManager(); ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; if (ErpEntity == null) { return; } var entityRelations = relMan.Read().Object.Where(x => x.TargetEntityId == ErpEntity.Id || x.OriginEntityId == ErpEntity.Id).ToList(); Relation = entityRelations.SingleOrDefault(x => x.Id == RecordId); if (Relation == null) { return; } if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/rl/relations/r/{Relation.Id}/"; } HeaderActions.AddRange(new List <string>() { PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Save Relation", formId: "ManageRecord"), PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: $"/sdk/objects/entity/r/{ErpEntity.Id}/rl/relations/r/{Relation.Id}/") }); HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "relations")); TypeOptions = ModelExtensions.GetEnumAsSelectOptions <EntityRelationType>().FindAll(x => x.Value != "1").ToList(); }
public void PageInit() { Init(); #region << Init Page >> var pageServ = new PageService(); ErpPage = pageServ.GetPage(RecordId ?? Guid.Empty); if (ErpPage != null) { Weight = ErpPage.Weight; Label = ErpPage.Label; LabelTranslations = ErpPage.LabelTranslations; Name = ErpPage.Name; IconClass = ErpPage.IconClass; System = ErpPage.System; Type = ErpPage.Type; AppId = ErpPage.AppId; EntityId = ErpPage.EntityId; AreaId = ErpPage.AreaId; NodeId = ErpPage.NodeId; IsRazorBody = ErpPage.IsRazorBody; Body = ErpPage.Body; Layout = ErpPage.Layout; } #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/page/l/list"; } HeaderToolbar.AddRange(AdminPageUtils.GetPageAdminSubNav(ErpPage, "details")); PagePublicUrl = PageUtils.CalculatePageUrl(ErpPage.Id); }
public void PageInit() { Init(); if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = "/sdk/objects/entity/l/list"; } #region << Init Entity >> var entMan = new EntityManager(); ErpEntity = entMan.ReadEntity(RecordId ?? Guid.Empty).Object; if (ErpEntity == null) { return; } if (ErpEntity.RecordScreenIdField != null) { var screenField = ErpEntity.Fields.FirstOrDefault(x => x.Id == ErpEntity.RecordScreenIdField); if (screenField != null) { RecordScreenIdFieldName = screenField.Name; } } #endregion #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("create", "create"), new SelectOption("read", "read"), new SelectOption("update", "update"), new SelectOption("delete", "delete") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; if (ErpEntity.RecordPermissions.CanCreate.Contains(role.Id)) { keyValuesObj.Values.Add("create"); } if (ErpEntity.RecordPermissions.CanRead.Contains(role.Id)) { keyValuesObj.Values.Add("read"); } if (ErpEntity.RecordPermissions.CanUpdate.Contains(role.Id)) { keyValuesObj.Values.Add("update"); } if (ErpEntity.RecordPermissions.CanDelete.Contains(role.Id)) { keyValuesObj.Values.Add("delete"); } valueGrid.Add(keyValuesObj); } RecordPermissions = JsonConvert.SerializeObject(valueGrid); #endregion #region << Actions >> if (ErpEntity.System) { HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.Disabled, label: "Delete locked", formId: "DeleteRecord", btnClass: "btn btn-white btn-sm", iconClass: "ti-trash", titleText: "System objects cannot be deleted")); } else { HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.ConfirmAndSubmitForm, label: "Delete Entity", formId: "DeleteRecord", btnClass: "btn btn-white btn-sm", iconClass: "ti-trash go-red")); }; HeaderActions.Add($"<a href='/sdk/objects/entity/m/{(ErpEntity != null ? ErpEntity.Id : Guid.Empty)}/manage?returnUrl={HttpUtility.UrlEncode(CurrentUrl)}' class='btn btn-white btn-sm'><i class='ti-settings go-orange'></i> Manage</a>"); HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "details")); #endregion }
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()); }
public void InitPage() { Init(); var entMan = new EntityManager(); ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; if (ErpEntity == null) { return; } Field = ErpEntity.Fields.FirstOrDefault(x => x.Id == RecordId); if (Field == null) { return; } var allCards = AdminPageUtils.GetFieldCards(); FieldCard = allCards.First(x => (string)x["type"] == ((int)Field.GetFieldType()).ToString()); #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("read", "read"), new SelectOption("update", "update") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; if (Field.Permissions.CanRead.Contains(role.Id)) { keyValuesObj.Values.Add("read"); } if (Field.Permissions.CanUpdate.Contains(role.Id)) { keyValuesObj.Values.Add("update"); } valueGrid.Add(keyValuesObj); } FieldPermissions = JsonConvert.SerializeObject(valueGrid); #endregion #region << Actions >> if (Field.System) { HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.Disabled, label: "Delete Locked", formId: "DeleteRecord", iconClass: "ti-trash", titleText: "System objects cannot be deleted")); } else { HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.ConfirmAndSubmitForm, label: "Delete Field", formId: "DeleteRecord", btnClass: "btn btn-white btn-sm", iconClass: "ti-trash go-red")); }; HeaderActions.Add($"<a href='/sdk/objects/entity/r/{(ErpEntity != null ? ErpEntity.Id : Guid.Empty)}/rl/fields/m/{Field.Id}' class='btn btn-white btn-sm'><i class='ti-settings go-orange'></i> Manage</a>"); #endregion ApiUrlFieldInlineEdit = ErpSettings.ApiUrlTemplateFieldInlineEdit.Replace("{entityName}", ErpEntity.Name).Replace("{recordId}", (RecordId ?? Guid.Empty).ToString()); }
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 }
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()); }
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()); }
public IActionResult OnPost() { if (!ModelState.IsValid) { throw new Exception("Antiforgery check failed."); } InitPage(); if (ErpEntity == null) { return(NotFound()); } if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = $"/sdk/objects/entity/r/{RecordId}/rl/fields/c/select"; } //empty html input is not posted, so we init it with string.empty if (DefaultValue == null) { DefaultValue = string.Empty; } var entMan = new EntityManager(); try { var newFieldId = Guid.NewGuid(); if (Id != null) { newFieldId = Id.Value; } var response = new FieldResponse(); InputField input = null; switch (Type) { case FieldType.AutoNumberField: { decimal defaultDecimal = 1; if (Decimal.TryParse(DefaultValue, out decimal result)) { defaultDecimal = result; } input = new InputAutoNumberField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultDecimal, StartingNumber = StartingNumber, DisplayFormat = DisplayFormat, EnableSecurity = EnableSecurity }; } break; case FieldType.CheckboxField: { bool?defaultValue = null; if (Boolean.TryParse(DefaultValue, out bool result)) { defaultValue = result; } input = new InputCheckboxField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity }; } break; case FieldType.CurrencyField: { decimal?defaultDecimal = null; if (Decimal.TryParse(DefaultValue, out decimal result)) { defaultDecimal = result; } input = new InputCurrencyField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultDecimal, EnableSecurity = EnableSecurity, MinValue = MinValue, MaxValue = MaxValue, Currency = Helpers.GetCurrencyType(CurrencyCode) }; } break; case FieldType.DateField: { DateTime?defaultValue = null; if (DateTime.TryParse(DefaultValue, out DateTime result)) { defaultValue = result; } input = new InputDateField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, Format = Format, UseCurrentTimeAsDefaultValue = UseCurrentTimeAsDefaultValue }; } break; case FieldType.DateTimeField: { DateTime?defaultValue = null; if (DateTime.TryParse(DefaultValue, out DateTime result)) { defaultValue = result; } input = new InputDateTimeField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, Format = Format, UseCurrentTimeAsDefaultValue = UseCurrentTimeAsDefaultValue }; } break; case FieldType.EmailField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputEmailField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, MaxLength = MaxLength }; } break; case FieldType.FileField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputFileField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity }; } break; case FieldType.HtmlField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputHtmlField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity }; } break; case FieldType.ImageField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputImageField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity }; } break; case FieldType.MultiLineTextField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputMultiLineTextField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, MaxLength = MaxLength }; } break; case FieldType.MultiSelectField: { var selectOptions = (SelectOptions ?? string.Empty).Split(Environment.NewLine); var defaultOptions = (DefaultValue ?? string.Empty).Split(Environment.NewLine); var multiSelectOptions = new List <SelectOption>(); var defaultValues = new List <string>(); foreach (var option in selectOptions) { if (!String.IsNullOrWhiteSpace(option)) { var optionArray = option.Split(','); var key = ""; var value = ""; var iconClass = ""; var color = ""; if (optionArray.Length > 0 && !String.IsNullOrWhiteSpace(optionArray[0])) { key = optionArray[0].Trim().ToLowerInvariant(); } if (optionArray.Length > 1 && !String.IsNullOrWhiteSpace(optionArray[1])) { value = optionArray[1].Trim(); } else if (optionArray.Length > 0 && !String.IsNullOrWhiteSpace(optionArray[0])) { value = key; } if (optionArray.Length > 2 && !String.IsNullOrWhiteSpace(optionArray[2])) { iconClass = optionArray[2].Trim(); } if (optionArray.Length > 3 && !String.IsNullOrWhiteSpace(optionArray[3])) { color = optionArray[3].Trim(); } if (!String.IsNullOrWhiteSpace(key) && !String.IsNullOrWhiteSpace(value)) { multiSelectOptions.Add(new SelectOption() { Value = key, Label = value, IconClass = iconClass, Color = color }); } } } foreach (var option in defaultOptions) { var fixedOption = option.Trim().ToLowerInvariant(); if (!String.IsNullOrWhiteSpace(option) && multiSelectOptions.Any(x => x.Value == fixedOption)) { defaultValues.Add(fixedOption); } else if (!String.IsNullOrWhiteSpace(option) && !multiSelectOptions.Any(x => x.Value == fixedOption)) { Validation.Errors.Add(new ValidationError("DefaultValue", "one or more of the default values are not found as select options")); throw Validation; } } input = new InputMultiSelectField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, EnableSecurity = EnableSecurity, Options = multiSelectOptions, DefaultValue = defaultValues }; } break; case FieldType.NumberField: { decimal?defaultDecimal = null; if (Decimal.TryParse(DefaultValue, out decimal result)) { defaultDecimal = result; } input = new InputNumberField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultDecimal, EnableSecurity = EnableSecurity, MinValue = MinValue, MaxValue = MaxValue, DecimalPlaces = DecimalPlaces }; } break; case FieldType.PasswordField: { input = new InputPasswordField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, MinLength = MinLength, Encrypted = Encrypted, EnableSecurity = EnableSecurity, MaxLength = MaxLength }; } break; case FieldType.PercentField: { decimal?defaultDecimal = null; if (Decimal.TryParse(DefaultValue, out decimal result)) { defaultDecimal = result; } input = new InputNumberField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultDecimal, EnableSecurity = EnableSecurity, MinValue = MinValue, MaxValue = MaxValue, DecimalPlaces = DecimalPlaces }; } break; case FieldType.PhoneField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputPhoneField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, MaxLength = MaxLength }; } break; case FieldType.GuidField: { Guid?defaultGuid = null; if (Guid.TryParse(DefaultValue, out Guid result)) { defaultGuid = result; } input = new InputGuidField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultGuid, EnableSecurity = EnableSecurity, GenerateNewId = GenerateNewId }; } break; case FieldType.SelectField: { var selectOptions = SelectOptions.Split(Environment.NewLine); var modelSelectOptions = new List <SelectOption>(); foreach (var option in selectOptions) { if (!String.IsNullOrWhiteSpace(option)) { var optionArray = option.Split(','); var key = ""; var value = ""; var iconClass = ""; var color = ""; if (optionArray.Length > 0 && !String.IsNullOrWhiteSpace(optionArray[0])) { key = optionArray[0].Trim().ToLowerInvariant(); } if (optionArray.Length > 1 && !String.IsNullOrWhiteSpace(optionArray[1])) { value = optionArray[1].Trim(); } else if (optionArray.Length > 0 && !String.IsNullOrWhiteSpace(optionArray[0])) { value = key; } if (optionArray.Length > 2 && !String.IsNullOrWhiteSpace(optionArray[2])) { iconClass = optionArray[2].Trim(); } if (optionArray.Length > 3 && !String.IsNullOrWhiteSpace(optionArray[3])) { color = optionArray[3].Trim(); } if (!String.IsNullOrWhiteSpace(key) && !String.IsNullOrWhiteSpace(value)) { modelSelectOptions.Add(new SelectOption() { Value = key, Label = value, IconClass = iconClass, Color = color }); } } } DefaultValue = DefaultValue.Trim().ToLowerInvariant(); if (!String.IsNullOrWhiteSpace(DefaultValue) && !modelSelectOptions.Any(x => x.Value == DefaultValue)) { Validation.Errors.Add(new ValidationError("DefaultValue", "one or more of the default values are not found as select options")); throw Validation; } input = new InputSelectField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = DefaultValue, EnableSecurity = EnableSecurity, Options = modelSelectOptions }; } break; case FieldType.UrlField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputUrlField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, MaxLength = MaxLength, OpenTargetInNewWindow = OpenTargetInNewWindow }; } break; case FieldType.TextField: { string defaultValue = null; if (DefaultValue.ToLowerInvariant() != "null") { defaultValue = DefaultValue; } input = new InputTextField() { Id = newFieldId, Name = Name, Label = Label, Required = Required, Description = Description, Unique = Unique, HelpText = HelpText, System = System, PlaceholderText = PlaceholderText, Searchable = Searchable, DefaultValue = defaultValue, EnableSecurity = EnableSecurity, MaxLength = MaxLength }; } break; default: throw new Exception("Field Type not recognized"); } var recordPermissionsKeyValues = JsonConvert.DeserializeObject <List <KeyStringList> >(FieldPermissions); input.Permissions = new FieldPermissions(); input.Permissions.CanRead = new List <Guid>(); input.Permissions.CanUpdate = new List <Guid>(); foreach (var role in recordPermissionsKeyValues) { var roleId = Guid.Empty; if (Guid.TryParse(role.Key, out Guid result)) { roleId = result; } if (roleId != Guid.Empty) { if (role.Values.Contains("read")) { input.Permissions.CanRead.Add(roleId); } if (role.Values.Contains("update")) { input.Permissions.CanUpdate.Add(roleId); } } } response = entMan.CreateField(ErpEntity.Id, input); if (!response.Success) { var exception = new ValidationException(response.Message); exception.Errors = response.Errors.MapTo <ValidationError>(); throw exception; } // because of https://github.com/aspnet/Mvc/issues/6711, i added TempDataExtensions int // WebVella.Erp.Web.Utils and using Put and Get<> instead of // TempData["ScreenMessage"] = new ScreenMessage() { Message = "Field created successfully" }; TempData.Put("ScreenMessage", new ScreenMessage() { Message = "Field created successfully" }); return(Redirect($"/sdk/objects/entity/r/{ErpEntity.Id}/rl/fields/l")); } catch (ValidationException ex) { Validation.Message = ex.Message; Validation.Errors = ex.Errors; } catch (Exception ex) { Validation.Message = ex.Message; Validation.Errors.Add(new ValidationError("", ex.Message, isSystem: true)); } HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "fields")); ErpRequestContext.PageContext = PageContext; BeforeRender(); return(Page()); }
public IActionResult OnGet() { var initResult = Init(); if (initResult != null) { return(initResult); } InitPage(); ErpRequestContext.PageContext = PageContext; EntityManager entMan = new EntityManager(); Label = ExistingEntity.Label; LabelPlural = ExistingEntity.LabelPlural; Color = ExistingEntity.Color; IconName = ExistingEntity.IconName; this.System = ExistingEntity.System; #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("create", "create"), new SelectOption("read", "read"), new SelectOption("update", "update"), new SelectOption("delete", "delete") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; if (ExistingEntity.RecordPermissions.CanCreate.Contains(role.Id)) { keyValuesObj.Values.Add("create"); } if (ExistingEntity.RecordPermissions.CanRead.Contains(role.Id)) { keyValuesObj.Values.Add("read"); } if (ExistingEntity.RecordPermissions.CanUpdate.Contains(role.Id)) { keyValuesObj.Values.Add("update"); } if (ExistingEntity.RecordPermissions.CanDelete.Contains(role.Id)) { keyValuesObj.Values.Add("delete"); } valueGrid.Add(keyValuesObj); } RecordPermissions = JsonConvert.SerializeObject(valueGrid); #endregion BeforeRender(); return(Page()); }
public void PageInit() { #region << Init Entity >> var entMan = new EntityManager(); ErpEntity = entMan.ReadEntity(RecordId ?? Guid.Empty).Object; if (ErpEntity != null && PageContext.HttpContext.Request.Method == "GET") { Name = ErpEntity.Name; Label = ErpEntity.Label; LabelPlural = ErpEntity.LabelPlural; System = ErpEntity.System; IconName = ErpEntity.IconName; Color = ErpEntity.Color; RecordScreenIdField = ErpEntity.RecordScreenIdField; foreach (var field in ErpEntity.Fields) { FieldOptions.Add(new SelectOption() { Value = field.Id.ToString(), Label = field.Name }); } } #endregion if (String.IsNullOrWhiteSpace(ReturnUrl)) { ReturnUrl = $"/sdk/objects/entity/r/{ErpEntity.Id}/"; } #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("create", "create"), new SelectOption("read", "read"), new SelectOption("update", "update"), new SelectOption("delete", "delete") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; if (ErpEntity.RecordPermissions.CanCreate.Contains(role.Id)) { keyValuesObj.Values.Add("create"); } if (ErpEntity.RecordPermissions.CanRead.Contains(role.Id)) { keyValuesObj.Values.Add("read"); } if (ErpEntity.RecordPermissions.CanUpdate.Contains(role.Id)) { keyValuesObj.Values.Add("update"); } if (ErpEntity.RecordPermissions.CanDelete.Contains(role.Id)) { keyValuesObj.Values.Add("delete"); } valueGrid.Add(keyValuesObj); } if (HttpContext.Request.Method == "GET") { RecordPermissions = JsonConvert.SerializeObject(valueGrid); } #endregion #region << Actions >> HeaderActions.AddRange(new List <string>() { PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Save Entity", formId: "ManageRecord"), PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: ReturnUrl, btnClass: "btn btn-sm btn-outline-secondary ml-1") }); HeaderToolbar.AddRange(AdminPageUtils.GetEntityAdminSubNav(ErpEntity, "details")); #endregion }
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()); }
public void InitPage() { Init(); var entMan = new EntityManager(); ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; var allCards = AdminPageUtils.GetFieldCards(); if (FieldTypeId > 19 || FieldTypeId < 1) { FieldTypeId = 18; } FieldCard = allCards.First(x => (string)x["type"] == FieldTypeId.ToString()); if (Enum.TryParse <FieldType>(FieldTypeId.ToString(), out FieldType result)) { Type = result; } #region << Field Type init >> switch (Type) { case FieldType.AutoNumberField: DisplayFormat = "{0}"; break; case FieldType.CurrencyField: CurrencyOptions = Helpers.GetAllCurrency().MapTo <SelectOption>(); break; case FieldType.DateTimeField: Format = "yyyy-MMM-dd HH:mm"; break; default: break; } #endregion #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("read", "read"), new SelectOption("update", "update") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; } #endregion #region << Actions >> HeaderActions.AddRange(new List <string>() { PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Create Field", formId: "CreateRecord", btnClass: "btn btn-green btn-sm", iconClass: "ti-plus"), PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: ReturnUrl) }); #endregion }
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 }
public void InitPage(bool isGet = true) { IsPostgisInstalled = DbRepository.IsPostgisInstalled(); var entMan = new EntityManager(); ErpEntity = entMan.ReadEntity(ParentRecordId ?? Guid.Empty).Object; var allCards = AdminPageUtils.GetFieldCards(); if (FieldTypeId == 20) //RelationField { throw new Exception("RelationField is unsupported field type"); } FieldCard = allCards.First(x => (string)x["type"] == FieldTypeId.ToString()); if (Enum.TryParse <FieldType>(FieldTypeId.ToString(), out FieldType result)) { Type = result; } if (isGet) { #region << Field Type init >> switch (Type) { case FieldType.AutoNumberField: DisplayFormat = "{0}"; break; case FieldType.CurrencyField: CurrencyOptions = Helpers.GetAllCurrency().MapTo <SelectOption>(); break; case FieldType.DateTimeField: Format = "yyyy-MMM-dd HH:mm"; break; case FieldType.GeographyField: { foreach (int format in Enum.GetValues(typeof(GeographyFieldFormat))) { string value = format.ToString(); string name = ((GeographyFieldFormat)format).ToString(); GeographyFormats.Add(new SelectOption(value, name)); } } break; default: break; } #endregion #region << Init RecordPermissions >> var valueGrid = new List <KeyStringList>(); PermissionOptions = new List <SelectOption>() { new SelectOption("read", "read"), new SelectOption("update", "update") }; var roles = AdminPageUtils.GetUserRoles(); //Special order is applied foreach (var role in roles) { RoleOptions.Add(new SelectOption(role.Id.ToString(), role.Name)); var keyValuesObj = new KeyStringList() { Key = role.Id.ToString(), Values = new List <string>() }; } #endregion } #region << Actions >> if (Type != FieldType.GeographyField) { HeaderActions.AddRange(new List <string>() { PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Create Field", formId: "CreateRecord", btnClass: "btn btn-green btn-sm", iconClass: "fa fa-plus"), PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: ReturnUrl) }); } else if (Type == FieldType.GeographyField) { if (IsPostgisInstalled) { HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.SubmitForm, label: "Create Field", formId: "CreateRecord", btnClass: "btn btn-green btn-sm", iconClass: "fa fa-plus")); } HeaderActions.Add(PageUtils.GetActionTemplate(PageUtilsActionType.Cancel, returnUrl: ReturnUrl)); } #endregion }