protected async Task <RepositoryResponse <Lib.ViewModels.FileViewModel> > ExportListAsync(Expression <Func <TModel, bool> > predicate, string type) { var getData = await DefaultModelRepository <TDbContext, TModel> .Instance.GetModelListByAsync(predicate, _context); Lib.ViewModels.FileViewModel file = null; if (getData.IsSucceed) { string exportPath = $"Exports/Structures/{typeof(TModel).Name}"; string filename = $"{type.ToString()}_{DateTime.UtcNow.ToString("ddMMyyyy")}"; var objContent = new JObject( new JProperty("type", type.ToString()), new JProperty("data", JArray.FromObject(getData.Data)) ); file = new Lib.ViewModels.FileViewModel() { Filename = filename, Extension = ".json", FileFolder = exportPath, Content = objContent.ToString() }; // Copy current templates file Lib.Repositories.FileRepository.Instance.SaveWebFile(file); } UnitOfWorkHelper <TDbContext> .HandleTransaction(getData.IsSucceed, true, _transaction); return(new RepositoryResponse <Lib.ViewModels.FileViewModel>() { IsSucceed = true, Data = file, }); }
//public override List<Task> GenerateRelatedData(MixCmsContext context, IDbContextTransaction transaction) //{ // var tasks = new List<Task>(); // //var attrDatas = context.MixAttributeSetData.Include(m => m.MixRelatedAttributeData).Where(m => m.MixRelatedAttributeData // // .Any(d => d.Specificulture == Specificulture && d.Id == Id)); // var relatedData = context.MixRelatedAttributeData.Include(m => m.MixAttributeSetData).Where(m => m.Specificulture == Specificulture && (m.Id == Id || m.ParentId == Id)); // foreach (var item in relatedData) // { // tasks.Add(Task.Run(() => // { // ReadViewModel.Repository.RemoveCache(item.MixAttributeSetData, context, transaction); // MixRelatedAttributeDatas.ReadViewModel.Repository.RemoveCache(item, context, transaction); // })); // } // foreach (var item in Values) // { // tasks.Add(Task.Run(() => // { // item.RemoveCache(item.Model); // })); // } // return tasks; //} private void HandleEdm(MixCmsContext _context, IDbContextTransaction _transaction) { var getAttrSet = Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName || m.Id == AttributeSetId, _context, _transaction); if (!string.IsNullOrEmpty(getAttrSet.Data.EdmSubject)) { var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture); if (getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) { string body = getEdm.Data.Content; foreach (var prop in Fields) { var val = GetValue(prop.Name); body = body.Replace($"[[{prop.Name}]]", val.StringValue); } var edmFile = new Lib.ViewModels.FileViewModel() { Content = body, Extension = ".html", FileFolder = "edms", Filename = $"{getAttrSet.Data.EdmSubject}-{Id}" }; if (FileRepository.Instance.SaveWebFile(edmFile)) { var val = GetValue("edm"); if (val != null) { val.StringValue = edmFile.WebPath; } } } } }
public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { RepositoryResponse <bool> result = new RepositoryResponse <bool>() { IsSucceed = true }; if (string.IsNullOrEmpty(TemplateAsset.Filename)) { TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default_blank", Extension = MixFileExtensions.Zip, FileFolder = MixFolders.ImportFolder }; } result = await ImportThemeAsync(parent, _context, _transaction); // Actived Theme if (IsActived) { result = await ActivedThemeAsync(_context, _transaction); } return(result); }
public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { RepositoryResponse <bool> result = new RepositoryResponse <bool>() { IsSucceed = true }; //Import From existing Theme (zip) if (string.IsNullOrEmpty(TemplateAsset.Filename)) { TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default_blank", Extension = ".zip", FileFolder = "Imports/Themes" }; } if (IsCloneFromCurrentTheme) { if (result.IsSucceed) { RepositoryResponse <bool> saveTemplate = await SaveTemplatesAsync(parent, TemplateFolder, _context, _transaction); ViewModelHelper.HandleResult(saveTemplate, ref result); } } result = await ImportThemeAsync(parent, _context, _transaction); // Import Assets if (result.IsSucceed && !string.IsNullOrEmpty(Asset.Filename)) { result = ImportAssetsAsync(_context, _transaction); } //// New themes without import existing theme => create from default folder //if (result.IsSucceed && !Directory.Exists(TemplateFolder) && string.IsNullOrEmpty(TemplateAsset.Filename)) //{ // result = await CreateDefaultThemeTemplatesAsync(_context, _transaction); //} // Actived Theme if (IsActived) { result = await ActivedThemeAsync(_context, _transaction); } return(result); }
public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { Id = Repository.Max(m => m.Id, _context, _transaction).Data + 1; Name = SeoHelper.GetSEOString(Title); CreatedDateTime = DateTime.UtcNow; //Import From existing Theme (zip) if (string.IsNullOrEmpty(TemplateAsset.Filename)) { TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default_blank", Extension = MixFileExtensions.Zip, FileFolder = MixFolders.ImportFolder }; } } return(base.ParseModel(_context, _transaction)); }
public override MixAttributeSetData ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(Id)) { Id = Guid.NewGuid().ToString(); CreatedDateTime = DateTime.UtcNow; Priority = Repository.Count(m => m.AttributeSetName == AttributeSetName && m.Specificulture == Specificulture, _context, _transaction).Data + 1; } if (string.IsNullOrEmpty(AttributeSetName)) { AttributeSetName = _context.MixAttributeSet.First(m => m.Id == AttributeSetId)?.Name; } if (AttributeSetId == 0) { AttributeSetId = _context.MixAttributeSet.First(m => m.Name == AttributeSetName)?.Id ?? 0; } Values = Values ?? Lib.ViewModels.MixAttributeSetValues.UpdateViewModel .Repository.GetModelListBy(a => a.DataId == Id && a.Specificulture == Specificulture, _context, _transaction).Data.OrderBy(a => a.Priority).ToList(); Fields = Lib.ViewModels.MixAttributeFields.UpdateViewModel.Repository.GetModelListBy(f => f.AttributeSetId == AttributeSetId, _context, _transaction).Data; foreach (var field in Fields.OrderBy(f => f.Priority)) { var val = Values.FirstOrDefault(v => v.AttributeFieldId == field.Id); if (val == null) { val = new Lib.ViewModels.MixAttributeSetValues.UpdateViewModel( new MixAttributeSetValue() { AttributeFieldId = field.Id, AttributeFieldName = field.Name, } , _context, _transaction) { StringValue = field.DefaultValue, Priority = field.Priority, Field = field }; Values.Add(val); } val.Priority = field.Priority; val.AttributeSetName = AttributeSetName; if (Data[val.AttributeFieldName] != null) { if (val.Field.DataType == Lib.MixEnums.MixDataType.Reference) { var arr = Data[val.AttributeFieldName].Value <JArray>(); if (arr != null) { foreach (JObject objData in arr) { string id = objData["id"]?.Value <string>(); // if have id => update data, else add new if (!string.IsNullOrEmpty(id)) { //var getData = Repository.GetSingleModel(m => m.Id == id && m.Specificulture == Specificulture, _context, _transaction); //if (getData.IsSucceed) //{ // getData.Data.Data = objData; // RefData.Add(getData.Data); //} } else { RefData.Add(new FormViewModel() { Specificulture = Specificulture, AttributeSetId = field.ReferenceId.Value, Data = objData }); } } } } else { ParseModelValue(Data[val.AttributeFieldName], val); } } else { Data.Add(ParseValue(val)); } } // Save Edm html var getAttrSet = Mix.Cms.Lib.ViewModels.MixAttributeSets.ReadViewModel.Repository.GetSingleModel(m => m.Name == AttributeSetName, _context, _transaction); var getEdm = Lib.ViewModels.MixTemplates.UpdateViewModel.GetTemplateByPath(getAttrSet.Data.EdmTemplate, Specificulture); var edmField = Values.FirstOrDefault(f => f.AttributeFieldName == "edm"); if (edmField != null && getEdm.IsSucceed && !string.IsNullOrEmpty(getEdm.Data.Content)) { string body = getEdm.Data.Content; foreach (var prop in Data.Properties()) { body = body.Replace($"[[{prop.Name}]]", Data[prop.Name].Value <string>()); } var edmFile = new Lib.ViewModels.FileViewModel() { Content = body, Extension = ".html", FileFolder = "edms", Filename = $"{getAttrSet.Data.EdmSubject}-{Id}" }; if (FileRepository.Instance.SaveWebFile(edmFile)) { Data["edm"] = edmFile.WebPath; edmField.StringValue = edmFile.WebPath; } } //End save edm return(base.ParseModel(_context, _transaction));; }