/* * @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); }
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)); }
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); }