public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { base.Validate(_context, _transaction); FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}"; if (MediaFile?.FileStream != null) { MediaFile.Filename = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}"; MediaFile.FileFolder = FileFolder; var isSaved = MixFileRepository.Instance.SaveWebFile(MediaFile); if (isSaved) { Extension = MediaFile.Extension.ToLower(); FileName = MediaFile.Filename; FileFolder = MediaFile.FileFolder; if (string.IsNullOrEmpty(Title)) { Title = FileName; } } else { IsValid = false; } } else { if (File != null) { FileName = $"{SeoHelper.GetSEOString(File.FileName[..File.FileName.LastIndexOf('.')]).ToLower()}-{ DateTime.UtcNow.Ticks}";
public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { Id = 1; Name = SeoHelper.GetSEOString(Title); CreatedDateTime = DateTime.UtcNow; return(base.ParseModel(_context, _transaction)); }
/// <summary> /// Step 4 /// - Init default theme /// </summary> /// <param name="siteName"></param> /// <param name="_context"></param> /// <param name="_transaction"></param> /// <returns></returns> public async Task <RepositoryResponse <bool> > InitThemesAsync(string siteName , MixCmsContext _context = null, IDbContextTransaction _transaction = null) { UnitOfWorkHelper <MixCmsContext> .InitTransaction(_context, _transaction, out MixCmsContext context, out IDbContextTransaction transaction, out bool isRoot); var result = new RepositoryResponse <bool>() { IsSucceed = true }; var getThemes = ViewModels.MixThemes.InitViewModel.Repository.GetModelList(_context: context, _transaction: transaction); if (!context.MixTheme.Any()) { ViewModels.MixThemes.InitViewModel theme = new ViewModels.MixThemes.InitViewModel(new MixTheme() { Id = 1, Title = siteName, Name = SeoHelper.GetSEOString(siteName), CreatedDateTime = DateTime.UtcNow, CreatedBy = "Admin", Status = (int)MixContentStatus.Published, }, context, transaction); var saveResult = await theme.SaveModelAsync(true, context, transaction); ViewModelHelper.HandleResult(saveResult, ref result); } UnitOfWorkHelper <MixCmsContext> .HandleTransaction(result.IsSucceed, isRoot, transaction); return(new RepositoryResponse <bool>() { IsSucceed = result.IsSucceed }); }
public override void Validate(SioCmsContext _context = null, IDbContextTransaction _transaction = null) { if (MediaFile?.FileStream != null) { MediaFile.Filename = SeoHelper.GetSEOString(MediaFile.Filename) + Guid.NewGuid().ToString("N"); MediaFile.FileFolder = CommonHelper.GetFullPath(new[] { //SioService.GetConfig<string>("UploadFolder"), SioService.GetTemplateUploadFolder(Specificulture), DateTime.UtcNow.ToString("yyyy-MM") });; var isSaved = FileRepository.Instance.SaveWebFile(MediaFile); if (isSaved) { Extension = MediaFile.Extension; FileName = MediaFile.Filename; FileFolder = MediaFile.FileFolder; } else { IsValid = false; } } FileType = FileType ?? "image"; base.Validate(_context, _transaction); }
protected static void InitPages(string culture, MixCmsContext context, IDbContextTransaction transaction) { /* Init Languages */ var pages = FileRepository.Instance.GetFile(MixConstants.CONST_FILE_PAGES, "data", true, "{}"); var obj = JObject.Parse(pages.Content); var arrPage = obj["data"].ToObject <List <MixPage> >(); foreach (var page in arrPage) { page.Specificulture = culture; page.SeoTitle = page.Title.ToLower(); page.SeoName = SeoHelper.GetSEOString(page.Title); page.SeoDescription = page.Title.ToLower(); page.SeoKeywords = page.Title.ToLower(); page.CreatedDateTime = DateTime.UtcNow; page.CreatedBy = "SuperAdmin"; context.Entry(page).State = EntityState.Added; var alias = new MixUrlAlias() { Id = page.Id, SourceId = page.Id.ToString(), Type = (int)UrlAliasType.Page, Specificulture = culture, CreatedDateTime = DateTime.UtcNow, Alias = page.Title.ToLower(), Status = (int)MixContentStatus.Published }; context.Entry(alias).State = EntityState.Added; } }
public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { this.set_Id(1); this.set_Name(SeoHelper.GetSEOString(this.get_Title(), '-')); this.set_CreatedDateTime(DateTime.get_UtcNow()); return this.ParseModel(_context, _transaction); }
private void GenerateSEO() { if (string.IsNullOrEmpty(this.SeoName)) { this.SeoName = SeoHelper.GetSEOString(this.Title); } int i = 1; string name = SeoName; while (Repository.CheckIsExists(a => a.SeoName == name && a.Specificulture == Specificulture && a.Id != Id)) { name = SeoName + "_" + i; i++; } SeoName = name; if (string.IsNullOrEmpty(this.SeoTitle)) { this.SeoTitle = SeoHelper.GetSEOString(this.Title); } if (string.IsNullOrEmpty(this.SeoDescription)) { this.SeoDescription = SeoHelper.GetSEOString(this.Title); } if (string.IsNullOrEmpty(this.SeoKeywords)) { this.SeoKeywords = SeoHelper.GetSEOString(this.Title); } }
protected static void InitPages(string culture, MixCmsContext context, IDbContextTransaction transaction) { V_0 = JObject.Parse(FileRepository.get_Instance().GetFile("pages.json", "data", true, "{}").get_Content()).get_Item("data").ToObject <List <MixPage> >().GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = V_0.get_Current(); V_1.set_Specificulture(culture); V_1.set_SeoTitle(V_1.get_Title().ToLower()); V_1.set_SeoName(SeoHelper.GetSEOString(V_1.get_Title(), '-')); V_1.set_SeoDescription(V_1.get_Title().ToLower()); V_1.set_SeoKeywords(V_1.get_Title().ToLower()); V_1.set_CreatedDateTime(DateTime.get_UtcNow()); V_1.set_CreatedBy("SuperAdmin"); context.Entry <MixPage>(V_1).set_State(4); stackVariable43 = new MixUrlAlias(); stackVariable43.set_Id(V_1.get_Id()); stackVariable43.set_SourceId(V_1.get_Id().ToString()); stackVariable43.set_Type(0); stackVariable43.set_Specificulture(culture); stackVariable43.set_CreatedDateTime(DateTime.get_UtcNow()); stackVariable43.set_Alias(V_1.get_Title().ToLower()); stackVariable43.set_Status(2.ToString()); context.Entry <MixUrlAlias>(stackVariable43).set_State(4); } } finally { ((IDisposable)V_0).Dispose(); } return; }
private void GenerateSEO() { V_0 = new Mix.Cms.Lib.ViewModels.MixPosts.UpdateViewModel.u003cu003ec__DisplayClass220_0(); V_0.u003cu003e4__this = this; if (string.IsNullOrEmpty(this.get_SeoName())) { this.set_SeoName(SeoHelper.GetSEOString(this.get_Title(), '-')); } V_1 = 1; V_0.name = this.get_SeoName(); while (ViewModelBase<MixCmsContext, MixPost, Mix.Cms.Lib.ViewModels.MixPosts.UpdateViewModel>.Repository.CheckIsExists(new Func<MixPost, bool>(V_0.u003cGenerateSEOu003eb__0), null, null)) { V_0.name = string.Concat(this.get_SeoName(), "_", V_1.ToString()); V_1 = V_1 + 1; } this.set_SeoName(V_0.name); if (string.IsNullOrEmpty(this.get_SeoTitle())) { this.set_SeoTitle(SeoHelper.GetSEOString(this.get_Title(), '-')); } if (string.IsNullOrEmpty(this.get_SeoDescription())) { this.set_SeoDescription(SeoHelper.GetSEOString(this.get_Title(), '-')); } if (string.IsNullOrEmpty(this.get_SeoKeywords())) { this.set_SeoKeywords(SeoHelper.GetSEOString(this.get_Title(), '-')); } return; }
private void GenerateSEO(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (string.IsNullOrEmpty(this.SeoName)) { this.SeoName = SeoHelper.GetSEOString(this.Title); } int i = 1; string name = SeoName; while (UpdateViewModel.Repository.CheckIsExists(a => a.SeoName == name && a.Specificulture == Specificulture && a.Id != Id, _context, _transaction)) { name = SeoName + "_" + i; i++; } SeoName = name; if (string.IsNullOrEmpty(this.SeoTitle)) { this.SeoTitle = this.Title; } if (string.IsNullOrEmpty(this.Excerpt)) { this.SeoDescription = this.Excerpt; } if (string.IsNullOrEmpty(this.SeoKeywords)) { this.SeoKeywords = SeoHelper.GetSEOString(this.Title); } }
[RequestFormSizeLimit(valueCountLimit: 214748364)] // 200Mb public async Task <RepositoryResponse <Cms.Lib.ViewModels.MixThemes.InitViewModel> > Save([FromForm] string model, [FromForm] IFormFile assets, [FromForm] IFormFile theme) { var json = JObject.Parse(model); var data = json.ToObject <Lib.ViewModels.MixThemes.InitViewModel>(); if (theme != null) { string importFolder = $"Imports/Themes/{DateTime.UtcNow.ToString("dd-MM-yyyy")}/{data.Name}"; FileRepository.Instance.SaveWebFile(theme, theme.FileName, importFolder); data.TemplateAsset = new Lib.ViewModels.FileViewModel(theme, importFolder); } else { if (data.IsCreateDefault) { data.TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default", Extension = ".zip", FileFolder = "Imports/Themes" }; } else { data.TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default_blank", Extension = ".zip", FileFolder = "Imports/Themes" }; } } if (data != null) { string culture = MixService.GetConfig <string>("DefaultCulture"); data.Title = MixService.GetConfig <string>("SiteName", culture); data.Name = SeoHelper.GetSEOString(data.Title); data.CreatedBy = User.Claims.FirstOrDefault(c => c.Type == "Username")?.Value ?? "Init"; data.Specificulture = _lang; var result = await data.SaveModelAsync(true); if (result.IsSucceed) { // MixService.SetConfig<string>("SiteName", _lang, data.Title); MixService.LoadFromDatabase(); MixService.SetConfig("InitStatus", 3); MixService.SetConfig("IsInit", false); MixService.SaveSettings(); _ = MixCacheService.RemoveCacheAsync(); MixService.Reload(); } return(result); } return(new RepositoryResponse <Lib.ViewModels.MixThemes.InitViewModel>() { Status = 501 }); }
public override RepositoryResponse <bool> SaveSubModels(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { RepositoryResponse <bool> result = new RepositoryResponse <bool>() { IsSucceed = true }; // Create default template if create new without import template assets if (Id == 0 && (TemplateAsset.Content == null && TemplateAsset.FileStream == null)) { string defaultFolder = CommonHelper.GetFullPath(new string[] { MixConstants.Folder.TemplatesFolder, "Default" }); bool copyResult = FileRepository.Instance.CopyDirectory(defaultFolder, TemplateFolder); string defaultAssetsFolder = CommonHelper.GetFullPath(new string[] { MixConstants.Folder.WebRootPath, MixConstants.Folder.FileFolder, MixConstants.Folder.TemplatesAssetFolder, "Default" }); copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, CommonHelper.GetFullPath(new string[] { MixConstants.Folder.WebRootPath, AssetFolder })); var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder); //TODO: Create default asset foreach (var file in files) { string content = file.Content.Replace($"/Content/Templates/Default/", $"/Content/Templates/{SeoHelper.GetSEOString(Name)}/"); MixTemplates.InitViewModel template = new MixTemplates.InitViewModel( new MixTemplate() { FileFolder = file.FileFolder, FileName = file.Filename, Content = content, Extension = file.Extension, CreatedDateTime = DateTime.UtcNow, LastModified = DateTime.UtcNow, ThemeId = Model.Id, ThemeName = Model.Name, FolderType = file.FolderName, ModifiedBy = CreatedBy }, _context, _transaction); var saveResult = template.SaveModel(true, _context, _transaction); result.IsSucceed = result.IsSucceed && saveResult.IsSucceed; if (!saveResult.IsSucceed) { result.Exception = saveResult.Exception; result.Errors.AddRange(saveResult.Errors); break; } } } return(result); }
protected async Task <List <TView> > GetListAsync <TView>(Expression <Func <TModel, bool> > predicate, string key, ODataQueryOptions <TModel> queryOptions) where TView : ODataViewModelBase <TDbContext, TModel, TView> { if (queryOptions.Filter != null) { ODataHelper <TModel> .ParseFilter(queryOptions.Filter.FilterClause.Expression, ref predicate); } int? top = queryOptions.Top?.Value; var skip = queryOptions.Skip?.Value ?? 0; RequestPaging request = new RequestPaging() { PageIndex = 0, PageSize = top.HasValue ? top + top * (skip / top + 1) : null, OrderBy = queryOptions.OrderBy?.RawValue //Top = queryOptions.Top?.Value, //Skip = queryOptions.Skip?.Value }; var cacheKey = $"odata_{_lang}_{typeof(TView).FullName}_{key}_{SeoHelper.GetSEOString(queryOptions.Filter?.RawValue, '_')}_ps-{request.PageSize}"; List <TView> data = null; //if (MixService.GetConfig<bool>("IsCache")) //{ // var getData = await MixCacheService.GetAsync<RepositoryResponse<PaginationModel<TView>>>(cacheKey); // if (getData != null) // { // data = getData.Data.Items; // } //} if (data == null) { if (predicate != null) { var getData = await ODataDefaultRepository <TDbContext, TModel, TView> .Instance.GetModelListByAsync(predicate, request.OrderBy, request.Direction, request.PageSize, request.PageIndex, request.Skip, request.Top).ConfigureAwait(false); //if (getData.IsSucceed) //{ // await MixCacheService.SetAsync(cacheKey, getData); // data = getData.Data.Items; //} } else { var getData = await ODataDefaultRepository <TDbContext, TModel, TView> .Instance.GetModelListAsync( request.OrderBy, request.Direction, request.PageSize, request.PageIndex , null, null).ConfigureAwait(false); //if (getData.IsSucceed) //{ // await MixCacheService.SetAsync(cacheKey, getData); // data = getData.Data.Items; //} } } return(data); }
public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(MixTheme parent, MixCmsContext _context = null, IDbContextTransaction _transaction = null) { RepositoryResponse <bool> result = new RepositoryResponse <bool>() { IsSucceed = true }; if (Id == 0) { // Clone Default templates Name = SeoHelper.GetSEOString(Title); string defaultTemplateFolder = CommonHelper.GetFullPath(new string[] { MixConstants.Folder.TemplatesFolder, "Default" }); bool copyResult = FileRepository.Instance.CopyDirectory(defaultTemplateFolder, TemplateFolder); string defaultAssetsFolder = CommonHelper.GetFullPath(new string[] { MixConstants.Folder.WebRootPath, MixConstants.Folder.FileFolder, MixConstants.Folder.TemplatesAssetFolder, "Default" }); copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, AssetFolder); var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder); //TODO: Create default asset foreach (var file in files) { MixTemplates.InitViewModel template = new MixTemplates.InitViewModel( new MixTemplate() { FileFolder = file.FileFolder, FileName = file.Filename, Content = file.Content, Extension = file.Extension, CreatedDateTime = DateTime.UtcNow, LastModified = DateTime.UtcNow, ThemeId = Model.Id, ThemeName = Model.Name, FolderType = file.FolderName, ModifiedBy = CreatedBy }, _context, _transaction); var saveResult = template.SaveModel(true, _context, _transaction); result.IsSucceed = result.IsSucceed && saveResult.IsSucceed; if (!saveResult.IsSucceed) { result.Exception = saveResult.Exception; result.Errors.AddRange(saveResult.Errors); break; } } } return(result); }
public static async Task <RepositoryResponse <InitViewModel> > InitTheme(string model, string userName, string culture, IFormFile assets, IFormFile theme) { var json = JObject.Parse(model); var data = json.ToObject <InitViewModel>(); if (data != null) { data.CreatedBy = userName; data.Status = MixContentStatus.Published; string importFolder = $"{MixFolders.ImportFolder}/" + $"{DateTime.UtcNow.ToString("dd-MM-yyyy")}"; if (theme != null) { MixFileRepository.Instance.SaveWebFile(theme, $"{importFolder}"); data.TemplateAsset = new FileViewModel(theme, importFolder); } else { if (data.IsCreateDefault) { data.TemplateAsset = new FileViewModel() { Filename = "default", Extension = MixFileExtensions.Zip, FileFolder = MixFolders.ImportFolder }; } else { data.TemplateAsset = new FileViewModel() { Filename = "default_blank", Extension = MixFileExtensions.Zip, FileFolder = MixFolders.ImportFolder }; } } data.Title = MixService.GetConfig <string>(MixAppSettingKeywords.SiteName, culture); data.Name = SeoHelper.GetSEOString(data.Title); data.Specificulture = culture; var result = await data.SaveModelAsync(true); if (result.IsSucceed) { // MixService.SetConfig<string>(MixAppSettingKeywords.SiteName, _lang, data.Title); MixService.LoadFromDatabase(); MixService.SetConfig("InitStatus", 3); MixService.SetConfig(MixAppSettingKeywords.IsInit, false); MixService.SaveSettings(); _ = Mix.Services.MixCacheService.RemoveCacheAsync(); MixService.Reload(); } return(result); } return(new RepositoryResponse <InitViewModel>()); }
public override MixTheme ParseModel(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (Id == 0) { Id = Repository.Max(m => m.Id).Data + 1; Name = SeoHelper.GetSEOString(Title); CreatedDateTime = DateTime.UtcNow; } return(base.ParseModel(_context, _transaction)); }
public static async Task <RepositoryResponse <InitViewModel> > InitTheme(string model, string culture, IFormFile assets, IFormFile theme) { var json = JObject.Parse(model); var data = json.ToObject <Lib.ViewModels.MixThemes.InitViewModel>(); if (data != null) { string importFolder = $"Imports/Themes/{DateTime.UtcNow.ToString("dd-MM-yyyy")}/{data.Name}"; if (theme != null) { Repositories.FileRepository.Instance.SaveWebFile(theme, theme.FileName, importFolder); data.TemplateAsset = new Lib.ViewModels.FileViewModel(theme, importFolder); } else { if (data.IsCreateDefault) { data.TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default", Extension = ".zip", FileFolder = "Imports/Themes" }; } else { data.TemplateAsset = new Lib.ViewModels.FileViewModel() { Filename = "default_blank", Extension = ".zip", FileFolder = "Imports/Themes" }; } } data.Title = MixService.GetConfig <string>("SiteName", culture); data.Name = SeoHelper.GetSEOString(data.Title); data.Specificulture = culture; var result = await data.SaveModelAsync(true); if (result.IsSucceed) { // MixService.SetConfig<string>("SiteName", _lang, data.Title); MixService.LoadFromDatabase(); MixService.SetConfig("InitStatus", 3); MixService.SetConfig("IsInit", false); MixService.SaveSettings(); _ = Mix.Services.CacheService.RemoveCacheAsync(); MixService.Reload(); } return(result); } return(new RepositoryResponse <InitViewModel>()); }
public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (!FileFolder.StartsWith(MixFolders.UploadsFolder)) { FileFolder = $"{MixFolders.UploadsFolder}/{FileFolder}"; } if (MediaFile?.FileStream != null) { FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}"; MediaFile.Filename = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}"; MediaFile.FileFolder = FileFolder; var isSaved = MixFileRepository.Instance.SaveWebFile(MediaFile); if (isSaved) { Extension = MediaFile.Extension.ToLower(); FileName = MediaFile.Filename; FileFolder = MediaFile.FileFolder; if (string.IsNullOrEmpty(Title)) { Title = FileName; } } else { IsValid = false; } } else { if (File != null) { var saveFile = MixFileRepository.Instance.SaveWebFile(File, FileFolder); if (saveFile == null) { IsValid = false; Errors.Add("Cannot save file"); } else { if (string.IsNullOrEmpty(Title)) { Title = FileName; } FileName = saveFile.Filename; Extension = saveFile.Extension; } } } FileType = FileType ?? "image"; base.Validate(_context, _transaction); }
public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { if (MediaFile?.FileStream != null) { FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}/{DateTime.UtcNow.ToString("yyyy-MM")}"; MediaFile.Filename = $"{SeoHelper.GetSEOString(MediaFile.Filename).ToLower()}-{ DateTime.UtcNow.Ticks}"; MediaFile.FileFolder = FileFolder; var isSaved = FileRepository.Instance.SaveWebFile(MediaFile); if (isSaved) { Extension = MediaFile.Extension.ToLower(); FileName = MediaFile.Filename; FileFolder = MediaFile.FileFolder; if (string.IsNullOrEmpty(Title)) { Title = FileName; } } else { IsValid = false; } } else { if (File != null) { FileFolder = $"{MixService.GetTemplateUploadFolder(Specificulture)}/{DateTime.UtcNow.ToString("yyyy-MM")}"; FileName = SeoHelper.GetSEOString(File.FileName.Substring(0, File.FileName.LastIndexOf('.'))) + DateTime.UtcNow.Ticks; Extension = File.FileName.Substring(File.FileName.LastIndexOf('.')); var saveFile = FileRepository.Instance.SaveWebFile(File, $"{FileName}{Extension}", FileFolder); if (saveFile.IsSucceed) { IsValid = false; Errors.AddRange(saveFile.Errors); } if (string.IsNullOrEmpty(Title)) { Title = FileName; } } } FileType = FileType ?? "image"; base.Validate(_context, _transaction); }
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)); }
private void GenerateSEO() { if (string.IsNullOrEmpty(this.SeoName)) { this.SeoName = SeoHelper.GetSEOString(this.Title); } if (string.IsNullOrEmpty(this.SeoTitle)) { this.SeoTitle = SeoHelper.GetSEOString(this.Title); } if (string.IsNullOrEmpty(this.SeoDescription)) { this.SeoDescription = SeoHelper.GetSEOString(this.Title); } if (string.IsNullOrEmpty(this.SeoKeywords)) { this.SeoKeywords = SeoHelper.GetSEOString(this.Title); } }
private async Task <RepositoryResponse <ViewModels.MixThemes.InitViewModel> > InitThemesAsync(string siteName, MixCmsContext context, IDbContextTransaction transaction) { var getThemes = ViewModels.MixThemes.InitViewModel.Repository.GetModelList(_context: context, _transaction: transaction); if (!context.MixTheme.Any()) { ViewModels.MixThemes.InitViewModel theme = new ViewModels.MixThemes.InitViewModel(new MixTheme() { Id = 1, Title = siteName, Name = SeoHelper.GetSEOString(siteName), CreatedDateTime = DateTime.UtcNow, CreatedBy = "Admin", Status = (int)MixContentStatus.Published, }, context, transaction); return(await theme.SaveModelAsync(true, context, transaction)); } return(new RepositoryResponse <ViewModels.MixThemes.InitViewModel>() { IsSucceed = true }); }
public override void Validate(SiocCmsContext _context = null, IDbContextTransaction _transaction = null) { if (MediaFile?.FileStream != null) { MediaFile.Filename = SeoHelper.GetSEOString(MediaFile.Filename); MediaFile.FileFolder = SwCmsHelper.GetFullPath(new[] { SWCmsConstants.Parameters.UploadFolder, DateTime.UtcNow.ToString("MM-yyyy") });; var isSaved = FileRepository.Instance.SaveWebFile(MediaFile); if (isSaved) { Extension = MediaFile.Extension; FileName = MediaFile.Filename; FileFolder = MediaFile.FileFolder; } else { IsValid = false; } } FileType = FileType ?? "image"; base.Validate(_context, _transaction); }
public static string GetSEOString(string input) { return(SeoHelper.GetSEOString(input)); }
public override async Task <RepositoryResponse <bool> > SaveSubModelsAsync(SioTheme parent, SioCmsContext _context = null, IDbContextTransaction _transaction = null) { RepositoryResponse <bool> result = new RepositoryResponse <bool>() { IsSucceed = true }; try { // Clone Default templates Name = SeoHelper.GetSEOString(Title); string defaultTemplateFolder = $"{SioService.GetConfig<string>(SioConstants.ConfigurationKeyword.DefaultTemplateFolder) }"; bool copyResult = FileRepository.Instance.CopyDirectory(defaultTemplateFolder, TemplateFolder); string defaultAssetsFolder = CommonHelper.GetFullPath(new string[] { SioConstants.Folder.WebRootPath, "assets", SioConstants.Folder.TemplatesAssetFolder, "default" }); copyResult = FileRepository.Instance.CopyDirectory(defaultAssetsFolder, AssetFolder); var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder); //TODO: Create default asset int id = 0; foreach (var file in files) { id++; string content = file.Content.Replace("/assets/templates/default", $"/{ SioConstants.Folder.FileFolder}/{SioConstants.Folder.TemplatesAssetFolder}/{Name}"); SioTemplates.InitViewModel template = new SioTemplates.InitViewModel( new SioTemplate() { Id = id, FileFolder = file.FileFolder, FileName = file.Filename, Content = content, Extension = file.Extension, CreatedDateTime = DateTime.UtcNow, LastModified = DateTime.UtcNow, ThemeId = Model.Id, ThemeName = Model.Name, FolderType = file.FolderName, ModifiedBy = CreatedBy }, _context, _transaction); var saveResult = await template.SaveModelAsync(true, _context, _transaction); result.IsSucceed = result.IsSucceed && saveResult.IsSucceed; if (!saveResult.IsSucceed) { result.Exception = saveResult.Exception; result.Errors.AddRange(saveResult.Errors); break; } } return(result); } catch (Exception ex) { result.IsSucceed = false; result.Errors.Add(ex.Message); result.Exception = ex; return(result); } }
public override void Validate(MixCmsContext _context = null, IDbContextTransaction _transaction = null) { stackVariable1 = this.get_MediaFile(); if (stackVariable1 != null) { stackVariable2 = stackVariable1.get_FileStream(); } else { dummyVar0 = stackVariable1; stackVariable2 = false; } if (!stackVariable2) { if (this.get_File() != null) { stackVariable14 = MixService.GetTemplateUploadFolder(this.get_Specificulture()); V_0 = DateTime.get_UtcNow(); this.set_FileFolder(string.Concat(stackVariable14, "/", V_0.ToString("yyyy-MM"))); stackVariable33 = SeoHelper.GetSEOString(this.get_File().get_FileName().Substring(0, this.get_File().get_FileName().LastIndexOf('.')), '-'); V_3 = DateTime.get_UtcNow().get_Ticks(); this.set_FileName(string.Concat(stackVariable33, V_3.ToString())); this.set_Extension(this.get_File().get_FileName().Substring(this.get_File().get_FileName().LastIndexOf('.'))); V_2 = FileRepository.get_Instance().SaveWebFile(this.get_File(), string.Concat(this.get_FileName(), this.get_Extension()), this.get_FileFolder()); if (V_2.get_IsSucceed()) { this.set_IsValid(false); this.get_Errors().AddRange(V_2.get_Errors()); } if (string.IsNullOrEmpty(this.get_Title())) { this.set_Title(this.get_FileName()); } } } else { stackVariable78 = MixService.GetTemplateUploadFolder(this.get_Specificulture()); V_0 = DateTime.get_UtcNow(); this.set_FileFolder(string.Concat(stackVariable78, "/", V_0.ToString("yyyy-MM"))); stackVariable86 = this.get_MediaFile(); stackVariable92 = SeoHelper.GetSEOString(this.get_MediaFile().get_Filename(), '-').ToLower(); V_1 = Guid.NewGuid(); stackVariable86.set_Filename(string.Concat(stackVariable92, V_1.ToString("N"))); this.get_MediaFile().set_FileFolder(this.get_FileFolder()); if (!FileRepository.get_Instance().SaveWebFile(this.get_MediaFile())) { this.set_IsValid(false); } else { this.set_Extension(this.get_MediaFile().get_Extension().ToLower()); this.set_FileName(this.get_MediaFile().get_Filename()); this.set_FileFolder(this.get_MediaFile().get_FileFolder()); if (string.IsNullOrEmpty(this.get_Title())) { this.set_Title(this.get_FileName()); } } } stackVariable7 = this.get_FileType(); if (stackVariable7 == null) { dummyVar1 = stackVariable7; stackVariable7 = "image"; } this.set_FileType(stackVariable7); this.Validate(_context, _transaction); return; }