Esempio n. 1
0
 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);
                }
            });
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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)));
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
 public IActionResult Post([FromBody] CreatePageDTO obj)
 {
     SubmitResult = _service.Create(obj);
     return(Respond());
 }