Пример #1
0
        /*
         * @brief Article factory pattern
         * @param string $title Article title
         * @param string $url Article url
         * @param string $imgSrc Article img src
         * @return Task<Article> new article from Article constructor
         */
        async public static Task <Article> makeArticleAsync(string title, string url, string imgSrc)
        {
            var alias = await UrlAlias.makeAlias(url);

            var newArticle = new Article(title, alias, imgSrc);

            return(newArticle);
        }
Пример #2
0
        public void Create(UrlAlias urlAlias)
        {
            if (urlAlias == null)
            {
                throw new ArgumentNullException(nameof(urlAlias));
            }

            _context.UrlAliases.Add(urlAlias);
        }
        internal UrlAlias[] GetUrlAlias(IPublishedContent content)
        {
            UrlAlias[] urlAlias = new UrlAlias[0];

            if (content.HasProperty(Core.Constants.Conventions.Content.UrlAlias) &&
                content.HasValue(Core.Constants.Conventions.Content.UrlAlias))
            {
                urlAlias = content.GetPropertyValue <UrlAlias[]>(Core.Constants.Conventions.Content.UrlAlias);
            }

            return(urlAlias ?? new UrlAlias[0]);
        }
        internal string GetUrlName(IPublishedContent content, UrlAlias urlAlias, out bool isLocalized)
        {
            isLocalized = false;

            if (content == null)
            {
                return(string.Empty);
            }

            if (urlAlias == null)
            {
                return(content.UrlName);
            }
            else
            {
                isLocalized = (IsEmptyUrlName(urlAlias: urlAlias) == false);

                return(isLocalized
                                                ? urlAlias.Url
                                                : content.UrlName);
            }
        }
 private bool IsEmptyUrlName(UrlAlias urlAlias)
 {
     return(string.IsNullOrWhiteSpace(urlAlias.Url) || string.IsNullOrWhiteSpace(urlAlias.Url.ToUrlSegment()));
 }
        internal string GetUrlNameByISOCode(IPublishedContent content, string isoCode, out bool isLocalized)
        {
            UrlAlias urlAlias = GetUrlAlias(content: content, isoCode: isoCode);

            return(GetUrlName(content, urlAlias, out isLocalized));
        }
Пример #7
0
        public override RepositoryResponse <bool> SaveSubModels(
            SiocProduct parent
            , SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool>()
            {
                IsSucceed = true
            };

            try
            {
                // Save Template
                var saveTemplate = View.SaveModel(false, _context, _transaction);
                result.IsSucceed = result.IsSucceed && saveTemplate.IsSucceed;
                if (saveTemplate.IsSucceed)
                {
                    result.Errors.AddRange(saveTemplate.Errors);
                    result.Exception = saveTemplate.Exception;
                }
                // Save url alias
                if (result.IsSucceed)
                {
                    UrlAlias.IsClone  = IsClone;
                    UrlAlias.Cultures = Cultures;
                    UrlAlias.Type     = SWCmsConstants.UrlAliasType.Product;
                    UrlAlias.SourceId = parent.Id.ToString();
                    var saveUrl = UrlAlias.SaveModel(false, _context, _transaction);
                    result.Errors.AddRange(saveUrl.Errors);
                    result.Exception = saveUrl.Exception;
                    result.IsSucceed = saveUrl.IsSucceed;
                }

                if (result.IsSucceed)
                {
                    // Save Parent Category
                    foreach (var item in Categories)
                    {
                        item.ProductId = parent.Id;
                        if (item.IsActived)
                        {
                            var saveResult = item.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                        else
                        {
                            var saveResult = item.RemoveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                if (result.IsSucceed)
                {
                    // Save Parent Modules
                    foreach (var item in Modules)
                    {
                        item.ProductId = parent.Id;
                        if (item.IsActived)
                        {
                            var saveResult = item.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                        else
                        {
                            var saveResult = item.RemoveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                if (result.IsSucceed)
                {
                    // Save Children Category
                    foreach (var item in ModuleNavs)
                    {
                        item.ProductId = parent.Id;
                        if (item.IsActived)
                        {
                            var saveResult = item.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                        else
                        {
                            var saveResult = item.RemoveModel(true, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                //save submodules data
                if (result.IsSucceed)
                {
                    foreach (var module in ActivedModules)
                    {
                        module.Data.Items = new List <InfoModuleDataViewModel>();
                        foreach (var data in module.Data.JsonItems)
                        {
                            SiocModuleData model = new SiocModuleData()
                            {
                                Id              = data.Value <string>("id") ?? Guid.NewGuid().ToString(),
                                Specificulture  = module.Specificulture,
                                ProductId       = parent.Id,
                                ModuleId        = module.Id,
                                Fields          = module.Fields,
                                CreatedDateTime = DateTime.UtcNow,
                                UpdatedDateTime = DateTime.UtcNow
                            };

                            List <ModuleFieldViewModel> cols = module.Columns;
                            JObject val = new JObject();

                            foreach (JProperty prop in data.Properties())
                            {
                                var col = cols.FirstOrDefault(c => c.Name == prop.Name);
                                if (col != null)
                                {
                                    JObject fieldVal = new JObject
                                    {
                                        new JProperty("dataType", col.DataType),
                                        new JProperty("value", prop.Value)
                                    };
                                    val.Add(new JProperty(prop.Name, fieldVal));
                                }
                            }
                            model.Value = val.ToString(Newtonsoft.Json.Formatting.None);

                            var vmData = new InfoModuleDataViewModel(model);

                            var saveResult = vmData.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                if (result.IsSucceed)
                {
                    foreach (var navMedia in MediaNavs)
                    {
                        navMedia.ProductId      = parent.Id;
                        navMedia.Specificulture = parent.Specificulture;

                        if (navMedia.IsActived)
                        {
                            var saveResult = navMedia.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                        else
                        {
                            var saveResult = navMedia.RemoveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                if (result.IsSucceed)
                {
                    foreach (var navProduct in ProductNavs)
                    {
                        navProduct.SourceId       = parent.Id;
                        navProduct.Specificulture = parent.Specificulture;
                        if (navProduct.IsActived)
                        {
                            var saveResult = navProduct.SaveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                        else
                        {
                            var saveResult = navProduct.RemoveModel(false, _context, _transaction);
                            result.IsSucceed = saveResult.IsSucceed;
                            if (!result.IsSucceed)
                            {
                                result.Exception = saveResult.Exception;
                                Errors.AddRange(saveResult.Errors);
                            }
                        }
                    }
                }

                return(result);
            }
            catch (Exception ex) // TODO: Add more specific exeption types instead of Exception only
            {
                result.IsSucceed = false;
                result.Exception = ex;
                return(result);
            }
        }
        public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(SiocCategory parent, SiocCmsContext _context = null, IDbContextTransaction _transaction = null)
        {
            var result = new RepositoryResponse <bool> {
                IsSucceed = true
            };
            var saveTemplate = await View.SaveModelAsync(true, _context, _transaction);

            result.IsSucceed = result.IsSucceed && saveTemplate.IsSucceed;
            if (saveTemplate.IsSucceed)
            {
                result.Errors.AddRange(saveTemplate.Errors);
                result.Exception = saveTemplate.Exception;
            }

            // Save url alias
            if (result.IsSucceed)
            {
                UrlAlias.IsClone  = IsClone;
                UrlAlias.Cultures = Cultures;
                UrlAlias.Type     = SWCmsConstants.UrlAliasType.Page;
                UrlAlias.SourceId = parent.Id.ToString();
                var saveUrl = await UrlAlias.SaveModelAsync(false, _context, _transaction);

                result.Errors.AddRange(saveUrl.Errors);
                result.Exception = saveUrl.Exception;
                result.IsSucceed = saveUrl.IsSucceed;
            }

            if (result.IsSucceed)
            {
                foreach (var item in ModuleNavs)
                {
                    item.CategoryId = parent.Id;

                    if (item.IsActived)
                    {
                        var saveResult = await item.SaveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                    else
                    {
                        var saveResult = await item.RemoveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                }
            }

            if (result.IsSucceed)
            {
                foreach (var item in PositionNavs)
                {
                    item.CategoryId = parent.Id;
                    if (item.IsActived)
                    {
                        var saveResult = await item.SaveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                    else
                    {
                        var saveResult = await item.RemoveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                }
            }

            if (result.IsSucceed)
            {
                foreach (var item in ParentNavs)
                {
                    item.Id = parent.Id;
                    if (item.IsActived)
                    {
                        var saveResult = await item.SaveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                    else
                    {
                        var saveResult = await item.RemoveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                }
            }

            if (result.IsSucceed)
            {
                foreach (var item in ChildNavs)
                {
                    item.ParentId = parent.Id;
                    if (item.IsActived)
                    {
                        var saveResult = await item.SaveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                    else
                    {
                        var saveResult = await item.RemoveModelAsync(false, _context, _transaction);

                        result.IsSucceed = saveResult.IsSucceed;
                        if (!result.IsSucceed)
                        {
                            result.Exception = saveResult.Exception;
                            Errors.AddRange(saveResult.Errors);
                        }
                    }
                }
            }
            return(result);
        }