private void CheckLayout(CreatePageDTO dto, long pageCategory) { if (string.IsNullOrEmpty(dto.Layout)) { string baseType = Unit.PageCategoryRepository.GetSingleValue(d => d.BaseComponent, d => d.Id == pageCategory); if (baseType == "Edit") { dto.Layout = "Layout/EditLayout"; } else if (baseType == "List") { dto.Layout = "Layout/ListLayout"; } else if (baseType == "Tree") { dto.Layout = "Layout/DefaultLayout"; } else if (baseType == "Select") { dto.Layout = "Layout/SelectLayout"; } else { dto.Layout = "Layout/EmptyLayout"; } } }
public void Create_Using(string tenant, string viewPath, string template, string resource, string actionType, string navGroup, int rows) { RunScoped(p => { CreatePageDTO dto = new CreatePageDTO { TenantCode = tenant, ComponentPath = viewPath, TemplatePath = template, Resource = resource, ActionType = actionType, Usage = "R", NavigationGroup = navGroup, Apps = new[] { "Admin" } }; var service = p.GetService <PagesService>(); var unit = p.GetService <IConfigUnit>(); Page page = null; unit.Saving += (u, lst) => { page = (Page)lst.Added.Where(d => d is Page).FirstOrDefault(); }; var res = service.Create(dto); var existingDomains = unit.DomainRepository.GetValues(d => d.Id).ToList(); TestContext.WriteLine(res.Message); Assert.AreEqual(rows, res.AffectedRows, "Affected rows is incorrect"); if (rows > 0) { Assert.IsNotNull(page); Assert.AreEqual("\"Admin\"", page.Apps); } }); }
public async Task <ApiResponseAsync <Guid> > CreatePage(CreatePageDTO dto) { Guid pId = Guid.NewGuid(); var rev = await this._notes.CreatePage(dto.NotesId, dto.Id, pId, dto.Body, ""); await this._body.Create(dto.NotesId, dto.Id, pId, ""); return(ApiRes.OK(rev.CurrentSection.CurrentPage.Page.Id)); }
public IActionResult Put([FromBody] CreatePageDTO dto) { SubmitResult = _service.UpdatePage(dto); if (SubmitResult.IsSuccess && SubmitResult.Data.TryGetValue("MoveRequest", out object req)) { var r = (MovePageRequest)req; cust.MoveHtmlTemplate(r); scr.MoveScript(r); scr.GenerateDomainModule(r.TenantCode, r.FromPath.GetBeforeLast("/")); scr.GenerateDomainModule(r.TenantCode, r.ToPath.GetBeforeLast("/")); scr.GenerateRoutes(r.TenantCode); } return(Respond()); }
public SubmitResult UpdatePage(CreatePageDTO dto) { bool pathChanged = false; string oldPath = null; var page = Unit.PageRepository.FindSingle(dto.Id); page.AppendProperties(dto, true, new[] { "Resource", "Apps", "ViewParams" }); page.Apps = GetApps(dto.Apps); if (IsDefaultAction(dto.ActionType)) { page.PrivilegeType = dto.ActionType; } var dom = Unit.DomainRepository.GetOrCreatePath(dto.ComponentDomain); dom.Pages.Add(page); page.SourceCollectionId = dto.CollectionId; page.HasRoute = dto.Usage.Contains("R"); page.CanEmbed = dto.Usage.Contains("E"); if (page.ViewPath != dto.ComponentPath) { oldPath = page.ViewPath; page.ViewPath = dto.ComponentPath; pathChanged = true; } page.Name = dto.ComponentName; var result = Update(page); if (result.IsSuccess && pathChanged) { result.Data["ReferenceUpdateResult"] = UpdatePageRefeneces(dto.Id, dto.TenantId); result.Data["MoveRequest"] = new MovePageRequest { DomainId = page.DomainId, FromPath = oldPath, ToPath = page.ViewPath, PageId = page.Id, TenantCode = dto.TenantCode }; } return(result); }
public async Task <ActionResult <PageLightDTO> > PostAsync([FromBody] CreatePageDTO dto) { var item = await _pages.CreateAsync(dto.OwnerId, dto.Title, dto.Slug, dto.Description, dto.Content); return(Created($"api/spaces/{item.Id}", Mappers.GetPageLightDTO(item))); }
public SubmitResult Create(CreatePageDTO dto) { string domainPath = dto.ComponentPath.GetBeforeLast("/"); var domain = Unit.DomainRepository.GetOrCreatePath(domainPath); if (dto.Usage == null) { return(new SubmitResult((int)HttpStatusCode.BadRequest, "Usage cannot be null (R: routable,E: embeddable,RE: both)")); } long pageCategory = 0; if (dto.CategoryId == null) { pageCategory = Unit.PageCategoryRepository.GetSingleValue(d => d.Id, e => e.ViewPath == dto.TemplatePath); } else if (Unit.PageCategoryRepository.Exist(e => e.Id == dto.CategoryId.Value)) { pageCategory = dto.CategoryId.Value; } if (pageCategory == 0) { return(new SubmitResult((int)HttpStatusCode.BadRequest, "No Template " + dto.TemplatePath + " or id " + dto.CategoryId)); } Tenant tenant = Unit.TenantRepository.FindSingle(d => d.Code == dto.TenantCode); if (tenant == null) { return(new SubmitResult((int)HttpStatusCode.BadRequest, "Invalid tenant : " + dto.TenantCode)); } string folder = dto.TemplatePath.GetBeforeLast("/"); CheckLayout(dto, pageCategory); Page p = new Page { Id = Utils.GenerateID(), Name = dto.ComponentPath.GetAfterLast("/"), PageCategoryId = pageCategory, RouteParameters = dto.RouteParameters, ViewPath = dto.ComponentPath, SpecialPermission = !string.IsNullOrEmpty(dto.SpecialPermission) ? dto.SpecialPermission : null, Layout = !string.IsNullOrEmpty(dto.Layout) ? dto.Layout : null, SourceCollectionId = dto.CollectionId, DefaultAccessibility = dto.DefaultAccessibility ?? 2, HasRoute = dto.Usage.Contains("R"), CanEmbed = dto.Usage.Contains("E") }; if (Unit.PageRepository.Exist(d => d.Name == p.Name && d.DomainId == domain.Id && d.TenantId == tenant.Id)) { return(new SubmitResult((int)HttpStatusCode.Conflict, "this page already exists " + dto.TenantCode + "/" + p.ViewPath)); } if (!p.HasRoute && !p.CanEmbed) { return(new SubmitResult((int)HttpStatusCode.BadRequest, "Invalid usage (R: routable, E: embeddable, RE: both)")); } p.Apps = GetApps(dto.Apps); Resource res = null; if (dto.ResourceId.HasValue) { p.ResourceId = dto.ResourceId; res = Unit.ResourceRepository.FindSingle(dto.ResourceId); } else if (!string.IsNullOrEmpty(dto.Resource)) { string serviceName = null; string _res = dto.Resource; if (dto.Resource.Contains("/")) { serviceName = dto.Resource.GetBeforeFirst("/"); _res = dto.Resource.GetAfterFirst("/"); } res = Unit.ResourceRepository.GetResource(_res, serviceName); if (res == null) { return(new SubmitResult((int)HttpStatusCode.BadRequest, "No such Resource " + dto.Resource)); } if (string.IsNullOrEmpty(dto.ActionType) && string.IsNullOrEmpty(dto.SpecialPermission)) { return(new SubmitResult(1, "Action type or SpecialPermission is required if resource is not null")); } res.Pages.Add(p); } if (!string.IsNullOrEmpty(dto.ActionType) && res != null) { if (IsDefaultAction(dto.ActionType)) { p.PrivilegeType = dto.ActionType; } else { var ra = res.ResourceActions.Where(d => d.Name.ToLower() == dto.ActionType.ToLower() && d.TenantId == tenant.Id).FirstOrDefault(); if (ra == null) { ra = new ResourceAction { Id = Utils.GenerateID(), Name = dto.ActionType, TenantId = tenant.Id }; res.ResourceActions.Add(ra); } ra.Pages.Add(p); } } if (!string.IsNullOrEmpty(dto.NavigationGroup)) { AddToNavigation(p, dto.NavigationGroup); } tenant.Pages.Add(p); domain.Pages.Add(p); dto.DomainId = domain.Id; var nn = Unit.SaveChanges(); nn.Data["Id"] = p.Id; return(nn); }
public IActionResult Post([FromBody] CreatePageDTO obj) { SubmitResult = _service.Create(obj); return(Respond()); }