RepositoryResponse <bool> ImportTheme(SioCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse <bool>() { IsSucceed = true }; TemplateAsset.Filename = Name; if (FileRepository.Instance.SaveWebFile(TemplateAsset)) { FileRepository.Instance.UnZipFile($"{TemplateAsset.Filename}{TemplateAsset.Extension}", TemplateAsset.FileFolder); FileRepository.Instance.CopyWebDirectory($"{TemplateAsset.FileFolder}/Assets", AssetFolder); FileRepository.Instance.CopyWebDirectory($"{TemplateAsset.FileFolder}/Templates", TemplateFolder); FileRepository.Instance.DeleteWebFolder(TemplateAsset.FileFolder); // Save template files to db var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder); //TODO: Create default asset foreach (var file in files) { SioTemplates.UpdateViewModel template = new SioTemplates.UpdateViewModel( new SioTemplate() { 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 }); var saveResult = template.SaveModel(true, _context, _transaction); result.IsSucceed = result.IsSucceed && saveResult.IsSucceed; if (!saveResult.IsSucceed) { result.IsSucceed = false; result.Exception = saveResult.Exception; result.Errors.AddRange(saveResult.Errors); break; } } } return(result); }
async Task <RepositoryResponse <bool> > ImportThemeAsync(SioTheme parent, SioCmsContext _context, IDbContextTransaction _transaction) { var result = new RepositoryResponse <bool>() { IsSucceed = true }; string fileName = $"wwwroot/{TemplateAsset.FileFolder}/{TemplateAsset.Filename}{TemplateAsset.Extension}"; if (File.Exists(fileName)) { FileRepository.Instance.UnZipFile($"{TemplateAsset.Filename}{TemplateAsset.Extension}", TemplateAsset.FileFolder); //Move Unzip Asset folder FileRepository.Instance.CopyWebDirectory($"{TemplateAsset.FileFolder}/Assets", AssetFolder); //Move Unzip Templates folder FileRepository.Instance.CopyDirectory($"{SioConstants.Folder.WebRootPath}/{TemplateAsset.FileFolder}/Templates", TemplateFolder); //Move Unzip Uploads folder FileRepository.Instance.CopyDirectory($"{SioConstants.Folder.WebRootPath}/{TemplateAsset.FileFolder}/Uploads", AssetFolder); // Get SiteStructure var strSchema = FileRepository.Instance.GetWebFile("schema.json", $"{TemplateAsset.FileFolder}/Data"); var siteStructures = JObject.Parse(strSchema.Content).ToObject <SiteStructureViewModel>(); FileRepository.Instance.DeleteWebFolder(TemplateAsset.FileFolder); //Import Site Structures result = await SioPages.Helper.ImportAsync(siteStructures.Pages, Specificulture); if (result.IsSucceed) { // Save template files to db var files = FileRepository.Instance.GetFilesWithContent(TemplateFolder); //TODO: Create default asset foreach (var file in files) { string content = file.Content.Replace($"/Content/Templates/{TemplateAsset.Filename}/", $"/Content/Templates/{Name}/"); SioTemplates.UpdateViewModel template = new SioTemplates.UpdateViewModel( new SioTemplate() { FileFolder = file.FileFolder, FileName = file.Filename, Content = file.Content, Extension = file.Extension, CreatedDateTime = DateTime.UtcNow, LastModified = DateTime.UtcNow, ThemeId = parent.Id, ThemeName = parent.Name, FolderType = file.FolderName, ModifiedBy = CreatedBy }); var saveResult = await template.SaveModelAsync(true, _context, _transaction); result.IsSucceed = result.IsSucceed && saveResult.IsSucceed; if (!saveResult.IsSucceed) { result.IsSucceed = false; result.Exception = saveResult.Exception; result.Errors.AddRange(saveResult.Errors); break; } } } } return(result); }