diff --git a/src/ClientServer/Controllers/Core/Init.cs b/src/ClientServer/Controllers/Core/Init.cs index e13624169b5b486eeddc2d9c9f91e870be50c67c..a352027c30848cec7bff1c1e4d51267fabaa43bd 100644 --- a/src/ClientServer/Controllers/Core/Init.cs +++ b/src/ClientServer/Controllers/Core/Init.cs @@ -312,666 +312,666 @@ namespace ClientServer.Controllers.Core } - [HttpGet("migrate/markdown")] - public void MigrateMarkdownFiles() - { - var basePath = Files.GetUploadFilePath(UploadDirType.MarkdownAssets); - - var exDescriptions = _context.ExerciseDescriptions - .Include(p => p.Assets) - .Where(p => p.Assets.Count > 0) - .ToList() - ; - - int count = 0; - foreach (var exerciseDescription in exDescriptions) - { - foreach (var descriptionAsset in exerciseDescription.Assets) - { - //create the real file - - try - { - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - var fileRef = new FileReferenceMarkdownAsset() - { - OriginalName = descriptionAsset.DisplayName, - CreatedAt = (DateTime) _context.Entry(descriptionAsset) - .Property(YapexDbContext.CreatedAt) - .CurrentValue, - LastUpdatedAt = (DateTime) _context.Entry(descriptionAsset) - .Property(YapexDbContext.LastUpdatedAt).CurrentValue, - MimeType = descriptionAsset.MimeType, - SizeInBytes = descriptionAsset.Content.Length, - Hash = "", - }; - - var conn = new ExerciseDescriptionWithFileAsAssetReference() - { - ExerciseDescription = exerciseDescription, - FileReferenceMarkdownAsset = fileRef - }; - - _context.ExerciseDescriptionWithFileAsAssetReferences.Add(conn); - _context.SaveChanges(); - - if (fileRef.Id <= 0) - { - throw new Exception("fileRef must be tracked in db context"); - } - - try - { - var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); - - if (info.Exists) - { - throw new Exception("file already exists"); - } - - using (var stream = new FileStream(info.FullName, FileMode.Create)) - { - stream.Write(descriptionAsset.Content, 0, descriptionAsset.Content.Length); - - using (var md5 = MD5.Create()) - { - var result = md5.ComputeHash(descriptionAsset.Content); - fileRef.Hash = String.Join(String.Empty, - result.Select(p => p.ToString("x2"))); - } - } - } - catch (Exception e) - { - Console.WriteLine( - $"[ERROR] error creating file name: {descriptionAsset.DisplayName}"); - Console.WriteLine(e.Message); - throw; - } - - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - count++; - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - } - - - Response.WriteAsync("OK -" + count); - } - - - [HttpGet("migrate/ex/markdown")] - public void MigrateMarkdownExerciseDescriptionContent() - { - var allDescriptions = _context.ExerciseDescriptions - .Include(p => p.AssetReferences) - .ThenInclude(p => p.FileReferenceMarkdownAsset) - .Include(p => p.Assets) - .ToList(); - - - int count = 0; - int count2 = 0; - - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - foreach (var exerciseDescription in allDescriptions) - { - if (exerciseDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix)) - { - - foreach (var asset in exerciseDescription.Assets) - { - //find asset ref - - var assetRef = exerciseDescription.AssetReferences.FirstOrDefault(p => - p.FileReferenceMarkdownAsset.OriginalName == asset.DisplayName && - p.FileReferenceMarkdownAsset.SizeInBytes == asset.Content.Length); - - if (assetRef == null) - { - throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {exerciseDescription.Id}"); - } - - exerciseDescription.Content = exerciseDescription.Content.Replace(asset.AssetUrl, - Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceMarkdownAssetId); - count2++; - } - - count++; - - } - } - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - - Response.WriteAsync($"OK - {count} - ${count2}"); - } - - - [HttpGet("migrate/tests")] - public void MigrateTestFiles() - { - var basePath = Files.GetUploadFilePath(UploadDirType.TestAssets); - - var testsWithAssets = _context.Tests - .Include(p => p.TestAssets) - .Where(p => p.TestAssets.Count > 0) - .ToList() - ; - - int count = 0; - foreach (var testWithAsset in testsWithAssets) - { - foreach (var testAsset in testWithAsset.TestAssets) - { - //create the real file - - try - { - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - var fileRef = new FileReferenceTestAsset() - { - OriginalName = testAsset.DisplayName, - CreatedAt = (DateTime) _context.Entry(testAsset) - .Property(YapexDbContext.CreatedAt) - .CurrentValue, - LastUpdatedAt = (DateTime) _context.Entry(testAsset) - .Property(YapexDbContext.LastUpdatedAt).CurrentValue, - MimeType = testAsset.MimeType, - SizeInBytes = testAsset.Content.Length, - Hash = "", - }; - - var conn = new TestWithFileAsAssetReference() - { - Test = testWithAsset, - FileReferenceTestAsset = fileRef - }; - - _context.TestWithFileAsAssetReferences.Add(conn); - _context.SaveChanges(); - - if (fileRef.Id <= 0) - { - throw new Exception("fileRef must be tracked in db context"); - } - - try - { - var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); - - if (info.Exists) - { - throw new Exception($"file already exists: {info.FullName}"); - } - - using (var stream = new FileStream(info.FullName, FileMode.Create)) - { - stream.Write(testAsset.Content, 0, testAsset.Content.Length); - - using (var md5 = MD5.Create()) - { - var result = md5.ComputeHash(testAsset.Content); - fileRef.Hash = String.Join(String.Empty, - result.Select(p => p.ToString("x2"))); - } - } - } - catch (Exception e) - { - Console.WriteLine( - $"[ERROR] error creating file name: {testAsset.DisplayName}"); - Console.WriteLine(e.Message); - throw; - } - - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - count++; - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - } - - - Response.WriteAsync("OK -" + count); - } - - - [HttpGet("migrate/custom/tests")] - public void MigrateCustomTestAssets() - { - var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); - - var testsWithAssets = _context.CustomTest - .Include(p => p.TestAssets) - .Where(p => p.TestAssets.Count > 0) - .ToList() - ; - - int count = 0; - - foreach (var customTest in testsWithAssets) - { - foreach (var customTestAsset in customTest.TestAssets) - { - //create the real file - - try - { - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - var fileRef = new FileReferenceUserFileAsset() - { - OriginalName = customTestAsset.DisplayName, - CreatedAt = (DateTime) _context.Entry(customTestAsset) - .Property(YapexDbContext.CreatedAt) - .CurrentValue, - LastUpdatedAt = (DateTime) _context.Entry(customTestAsset) - .Property(YapexDbContext.LastUpdatedAt).CurrentValue, - MimeType = customTestAsset.MimeType, - SizeInBytes = customTestAsset.Content.Length, - Hash = "", - }; - - var conn = new CustomTestWithFileAsAssetReference() - { - CustomTest = customTest, - FileReferenceUserFileAsset = fileRef - }; - - _context.CustomTestWithFileAsAssetReferences.Add(conn); - _context.SaveChanges(); - - if (fileRef.Id <= 0) - { - throw new Exception("fileRef must be tracked in db context"); - } - - try - { - var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); - - if (info.Exists) - { - throw new Exception($"file already exists: {info.FullName}"); - } - - using (var stream = new FileStream(info.FullName, FileMode.Create)) - { - stream.Write(customTestAsset.Content, 0, customTestAsset.Content.Length); - - using (var md5 = MD5.Create()) - { - var result = md5.ComputeHash(customTestAsset.Content); - fileRef.Hash = String.Join(String.Empty, - result.Select(p => p.ToString("x2"))); - } - } - } - catch (Exception e) - { - Console.WriteLine( - $"[ERROR] error creating file name: {customTestAsset.DisplayName}"); - Console.WriteLine(e.Message); - throw; - } - - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - count++; - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - - } - - Response.WriteAsync("OK -" + count); - - } - - - [HttpGet("migrate/custom/project/description")] - public void MigrateCustomProjectDescriptionAssets() - { - var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); - - var customProjectDescriptions = _context.CustomProjectDescriptions - .Include(p => p.Assets) - .Where(p => p.Assets.Count > 0) - .ToList() - ; - - int count = 0; - - foreach (var customProjectDescription in customProjectDescriptions) - { - foreach (var customAsset in customProjectDescription.Assets) - { - //create the real file - - try - { - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - var fileRef = new FileReferenceUserFileAsset() - { - OriginalName = customAsset.DisplayName, - CreatedAt = (DateTime) _context.Entry(customAsset) - .Property(YapexDbContext.CreatedAt) - .CurrentValue, - LastUpdatedAt = (DateTime) _context.Entry(customAsset) - .Property(YapexDbContext.LastUpdatedAt).CurrentValue, - MimeType = customAsset.MimeType, - SizeInBytes = customAsset.Content.Length, - Hash = "", - }; - - var conn = new CustomProjectDescriptionWithFileAsAssetReference() - { - CustomProjectDescription = customProjectDescription, - FileReferenceUserFileAsset = fileRef - }; - - _context.CustomProjectDescriptionWithFileAsAssetReferences.Add(conn); - _context.SaveChanges(); - - if (fileRef.Id <= 0) - { - throw new Exception("fileRef must be tracked in db context"); - } - - try - { - var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); - - if (info.Exists) - { - throw new Exception($"file already exists: {info.FullName}"); - } - - using (var stream = new FileStream(info.FullName, FileMode.Create)) - { - stream.Write(customAsset.Content, 0, customAsset.Content.Length); - - using (var md5 = MD5.Create()) - { - var result = md5.ComputeHash(customAsset.Content); - fileRef.Hash = String.Join(String.Empty, - result.Select(p => p.ToString("x2"))); - } - } - } - catch (Exception e) - { - Console.WriteLine( - $"[ERROR] error creating file name: {customAsset.DisplayName}"); - Console.WriteLine(e.Message); - throw; - } - - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - count++; - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - - } - - Response.WriteAsync("OK -" + count); - - } - - [HttpGet("migrate/custom/project/markdown")] - public void MigrateMarkdownCustomProjectDescriptionContent() - { - - var allDescriptions = _context.CustomProjectDescriptions - .Include(p => p.AssetReferences) - .ThenInclude(p => p.FileReferenceUserFileAsset) - .Include(p => p.Assets) - .ToList(); - - - int count = 0; - int count2 = 0; - - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - foreach (var customProjectDescription in allDescriptions) - { - if (customProjectDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix)) - { - - foreach (var asset in customProjectDescription.Assets) - { - //find asset ref - - var assetRef = customProjectDescription.AssetReferences.FirstOrDefault(p => - p.FileReferenceUserFileAsset.OriginalName == asset.DisplayName && - p.FileReferenceUserFileAsset.SizeInBytes == asset.Content.Length); - - if (assetRef == null) - { - throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {customProjectDescription.Id}"); - } - - customProjectDescription.Content = customProjectDescription.Content.Replace(asset.AssetUrl, - Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceUserFileAssetId); - count2++; - } - - count++; - - } - } - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - - Response.WriteAsync($"OK - {count} - ${count2}"); - } - - [HttpGet("migrate/custom/project/tests")] - public void MigrateCustomProjectTestAssets() - { - var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); - - var testsWithAssets = _context.CustomProjectTests - .Include(p => p.TestAssets) - .Where(p => p.TestAssets.Count > 0) - .ToList() - ; - - int count = 0; - - foreach (var customProjectTest in testsWithAssets) - { - foreach (var customProjectTestAsset in customProjectTest.TestAssets) - { - //create the real file - - try - { - using (var transaction = _context.Database.BeginTransaction()) - { - try - { - var fileRef = new FileReferenceUserFileAsset() - { - OriginalName = customProjectTestAsset.DisplayName, - CreatedAt = (DateTime) _context.Entry(customProjectTestAsset) - .Property(YapexDbContext.CreatedAt) - .CurrentValue, - LastUpdatedAt = (DateTime) _context.Entry(customProjectTestAsset) - .Property(YapexDbContext.LastUpdatedAt).CurrentValue, - MimeType = customProjectTestAsset.MimeType, - SizeInBytes = customProjectTestAsset.Content.Length, - Hash = "", - }; - - var conn = new CustomProjectTestWithFileAsAssetReference() - { - CustomProjectTest = customProjectTest, - FileReferenceUserFileAsset = fileRef - }; - - _context.CustomProjectTestWithFileAsAssetReferences.Add(conn); - _context.SaveChanges(); - - if (fileRef.Id <= 0) - { - throw new Exception("fileRef must be tracked in db context"); - } - - try - { - var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); - - if (info.Exists) - { - throw new Exception($"file already exists: {info.FullName}"); - } - - using (var stream = new FileStream(info.FullName, FileMode.Create)) - { - stream.Write(customProjectTestAsset.Content, 0, customProjectTestAsset.Content.Length); - - using (var md5 = MD5.Create()) - { - var result = md5.ComputeHash(customProjectTestAsset.Content); - fileRef.Hash = String.Join(String.Empty, - result.Select(p => p.ToString("x2"))); - } - } - } - catch (Exception e) - { - Console.WriteLine( - $"[ERROR] error creating file name: {customProjectTestAsset.DisplayName}"); - Console.WriteLine(e.Message); - throw; - } - - - _context.SaveChanges(); - transaction.Commit(); - } - catch (Exception e) - { - transaction.Rollback(); - Console.WriteLine(e); - throw; - } - } - - count++; - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - - } - - Response.WriteAsync("OK -" + count); - - } +// [HttpGet("migrate/markdown")] +// public void MigrateMarkdownFiles() +// { +// var basePath = Files.GetUploadFilePath(UploadDirType.MarkdownAssets); +// +// var exDescriptions = _context.ExerciseDescriptions +// .Include(p => p.Assets) +// .Where(p => p.Assets.Count > 0) +// .ToList() +// ; +// +// int count = 0; +// foreach (var exerciseDescription in exDescriptions) +// { +// foreach (var descriptionAsset in exerciseDescription.Assets) +// { +// //create the real file +// +// try +// { +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// var fileRef = new FileReferenceMarkdownAsset() +// { +// OriginalName = descriptionAsset.DisplayName, +// CreatedAt = (DateTime) _context.Entry(descriptionAsset) +// .Property(YapexDbContext.CreatedAt) +// .CurrentValue, +// LastUpdatedAt = (DateTime) _context.Entry(descriptionAsset) +// .Property(YapexDbContext.LastUpdatedAt).CurrentValue, +// MimeType = descriptionAsset.MimeType, +// SizeInBytes = descriptionAsset.Content.Length, +// Hash = "", +// }; +// +// var conn = new ExerciseDescriptionWithFileAsAssetReference() +// { +// ExerciseDescription = exerciseDescription, +// FileReferenceMarkdownAsset = fileRef +// }; +// +// _context.ExerciseDescriptionWithFileAsAssetReferences.Add(conn); +// _context.SaveChanges(); +// +// if (fileRef.Id <= 0) +// { +// throw new Exception("fileRef must be tracked in db context"); +// } +// +// try +// { +// var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); +// +// if (info.Exists) +// { +// throw new Exception("file already exists"); +// } +// +// using (var stream = new FileStream(info.FullName, FileMode.Create)) +// { +// stream.Write(descriptionAsset.Content, 0, descriptionAsset.Content.Length); +// +// using (var md5 = MD5.Create()) +// { +// var result = md5.ComputeHash(descriptionAsset.Content); +// fileRef.Hash = String.Join(String.Empty, +// result.Select(p => p.ToString("x2"))); +// } +// } +// } +// catch (Exception e) +// { +// Console.WriteLine( +// $"[ERROR] error creating file name: {descriptionAsset.DisplayName}"); +// Console.WriteLine(e.Message); +// throw; +// } +// +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// count++; +// } +// catch (Exception e) +// { +// Console.WriteLine(e); +// throw; +// } +// } +// } +// +// +// Response.WriteAsync("OK -" + count); +// } +// +// +// [HttpGet("migrate/ex/markdown")] +// public void MigrateMarkdownExerciseDescriptionContent() +// { +// var allDescriptions = _context.ExerciseDescriptions +// .Include(p => p.AssetReferences) +// .ThenInclude(p => p.FileReferenceMarkdownAsset) +// .Include(p => p.Assets) +// .ToList(); +// +// +// int count = 0; +// int count2 = 0; +// +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// foreach (var exerciseDescription in allDescriptions) +// { +// if (exerciseDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix)) +// { +// +// foreach (var asset in exerciseDescription.Assets) +// { +// //find asset ref +// +// var assetRef = exerciseDescription.AssetReferences.FirstOrDefault(p => +// p.FileReferenceMarkdownAsset.OriginalName == asset.DisplayName && +// p.FileReferenceMarkdownAsset.SizeInBytes == asset.Content.Length); +// +// if (assetRef == null) +// { +// throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {exerciseDescription.Id}"); +// } +// +// exerciseDescription.Content = exerciseDescription.Content.Replace(asset.AssetUrl, +// Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceMarkdownAssetId); +// count2++; +// } +// +// count++; +// +// } +// } +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// +// Response.WriteAsync($"OK - {count} - ${count2}"); +// } +// +// +// [HttpGet("migrate/tests")] +// public void MigrateTestFiles() +// { +// var basePath = Files.GetUploadFilePath(UploadDirType.TestAssets); +// +// var testsWithAssets = _context.Tests +// .Include(p => p.TestAssets) +// .Where(p => p.TestAssets.Count > 0) +// .ToList() +// ; +// +// int count = 0; +// foreach (var testWithAsset in testsWithAssets) +// { +// foreach (var testAsset in testWithAsset.TestAssets) +// { +// //create the real file +// +// try +// { +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// var fileRef = new FileReferenceTestAsset() +// { +// OriginalName = testAsset.DisplayName, +// CreatedAt = (DateTime) _context.Entry(testAsset) +// .Property(YapexDbContext.CreatedAt) +// .CurrentValue, +// LastUpdatedAt = (DateTime) _context.Entry(testAsset) +// .Property(YapexDbContext.LastUpdatedAt).CurrentValue, +// MimeType = testAsset.MimeType, +// SizeInBytes = testAsset.Content.Length, +// Hash = "", +// }; +// +// var conn = new TestWithFileAsAssetReference() +// { +// Test = testWithAsset, +// FileReferenceTestAsset = fileRef +// }; +// +// _context.TestWithFileAsAssetReferences.Add(conn); +// _context.SaveChanges(); +// +// if (fileRef.Id <= 0) +// { +// throw new Exception("fileRef must be tracked in db context"); +// } +// +// try +// { +// var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); +// +// if (info.Exists) +// { +// throw new Exception($"file already exists: {info.FullName}"); +// } +// +// using (var stream = new FileStream(info.FullName, FileMode.Create)) +// { +// stream.Write(testAsset.Content, 0, testAsset.Content.Length); +// +// using (var md5 = MD5.Create()) +// { +// var result = md5.ComputeHash(testAsset.Content); +// fileRef.Hash = String.Join(String.Empty, +// result.Select(p => p.ToString("x2"))); +// } +// } +// } +// catch (Exception e) +// { +// Console.WriteLine( +// $"[ERROR] error creating file name: {testAsset.DisplayName}"); +// Console.WriteLine(e.Message); +// throw; +// } +// +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// count++; +// } +// catch (Exception e) +// { +// Console.WriteLine(e); +// throw; +// } +// } +// } +// +// +// Response.WriteAsync("OK -" + count); +// } +// +// +// [HttpGet("migrate/custom/tests")] +// public void MigrateCustomTestAssets() +// { +// var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); +// +// var testsWithAssets = _context.CustomTest +// .Include(p => p.TestAssets) +// .Where(p => p.TestAssets.Count > 0) +// .ToList() +// ; +// +// int count = 0; +// +// foreach (var customTest in testsWithAssets) +// { +// foreach (var customTestAsset in customTest.TestAssets) +// { +// //create the real file +// +// try +// { +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// var fileRef = new FileReferenceUserFileAsset() +// { +// OriginalName = customTestAsset.DisplayName, +// CreatedAt = (DateTime) _context.Entry(customTestAsset) +// .Property(YapexDbContext.CreatedAt) +// .CurrentValue, +// LastUpdatedAt = (DateTime) _context.Entry(customTestAsset) +// .Property(YapexDbContext.LastUpdatedAt).CurrentValue, +// MimeType = customTestAsset.MimeType, +// SizeInBytes = customTestAsset.Content.Length, +// Hash = "", +// }; +// +// var conn = new CustomTestWithFileAsAssetReference() +// { +// CustomTest = customTest, +// FileReferenceUserFileAsset = fileRef +// }; +// +// _context.CustomTestWithFileAsAssetReferences.Add(conn); +// _context.SaveChanges(); +// +// if (fileRef.Id <= 0) +// { +// throw new Exception("fileRef must be tracked in db context"); +// } +// +// try +// { +// var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); +// +// if (info.Exists) +// { +// throw new Exception($"file already exists: {info.FullName}"); +// } +// +// using (var stream = new FileStream(info.FullName, FileMode.Create)) +// { +// stream.Write(customTestAsset.Content, 0, customTestAsset.Content.Length); +// +// using (var md5 = MD5.Create()) +// { +// var result = md5.ComputeHash(customTestAsset.Content); +// fileRef.Hash = String.Join(String.Empty, +// result.Select(p => p.ToString("x2"))); +// } +// } +// } +// catch (Exception e) +// { +// Console.WriteLine( +// $"[ERROR] error creating file name: {customTestAsset.DisplayName}"); +// Console.WriteLine(e.Message); +// throw; +// } +// +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// count++; +// } +// catch (Exception e) +// { +// Console.WriteLine(e); +// throw; +// } +// } +// +// } +// +// Response.WriteAsync("OK -" + count); +// +// } +// +// +// [HttpGet("migrate/custom/project/description")] +// public void MigrateCustomProjectDescriptionAssets() +// { +// var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); +// +// var customProjectDescriptions = _context.CustomProjectDescriptions +// .Include(p => p.Assets) +// .Where(p => p.Assets.Count > 0) +// .ToList() +// ; +// +// int count = 0; +// +// foreach (var customProjectDescription in customProjectDescriptions) +// { +// foreach (var customAsset in customProjectDescription.Assets) +// { +// //create the real file +// +// try +// { +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// var fileRef = new FileReferenceUserFileAsset() +// { +// OriginalName = customAsset.DisplayName, +// CreatedAt = (DateTime) _context.Entry(customAsset) +// .Property(YapexDbContext.CreatedAt) +// .CurrentValue, +// LastUpdatedAt = (DateTime) _context.Entry(customAsset) +// .Property(YapexDbContext.LastUpdatedAt).CurrentValue, +// MimeType = customAsset.MimeType, +// SizeInBytes = customAsset.Content.Length, +// Hash = "", +// }; +// +// var conn = new CustomProjectDescriptionWithFileAsAssetReference() +// { +// CustomProjectDescription = customProjectDescription, +// FileReferenceUserFileAsset = fileRef +// }; +// +// _context.CustomProjectDescriptionWithFileAsAssetReferences.Add(conn); +// _context.SaveChanges(); +// +// if (fileRef.Id <= 0) +// { +// throw new Exception("fileRef must be tracked in db context"); +// } +// +// try +// { +// var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); +// +// if (info.Exists) +// { +// throw new Exception($"file already exists: {info.FullName}"); +// } +// +// using (var stream = new FileStream(info.FullName, FileMode.Create)) +// { +// stream.Write(customAsset.Content, 0, customAsset.Content.Length); +// +// using (var md5 = MD5.Create()) +// { +// var result = md5.ComputeHash(customAsset.Content); +// fileRef.Hash = String.Join(String.Empty, +// result.Select(p => p.ToString("x2"))); +// } +// } +// } +// catch (Exception e) +// { +// Console.WriteLine( +// $"[ERROR] error creating file name: {customAsset.DisplayName}"); +// Console.WriteLine(e.Message); +// throw; +// } +// +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// count++; +// } +// catch (Exception e) +// { +// Console.WriteLine(e); +// throw; +// } +// } +// +// } +// +// Response.WriteAsync("OK -" + count); +// +// } +// +// [HttpGet("migrate/custom/project/markdown")] +// public void MigrateMarkdownCustomProjectDescriptionContent() +// { +// +// var allDescriptions = _context.CustomProjectDescriptions +// .Include(p => p.AssetReferences) +// .ThenInclude(p => p.FileReferenceUserFileAsset) +// .Include(p => p.Assets) +// .ToList(); +// +// +// int count = 0; +// int count2 = 0; +// +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// foreach (var customProjectDescription in allDescriptions) +// { +// if (customProjectDescription.Content.Contains(Constants.MarkdownAssetFileUrlPrefix)) +// { +// +// foreach (var asset in customProjectDescription.Assets) +// { +// //find asset ref +// +// var assetRef = customProjectDescription.AssetReferences.FirstOrDefault(p => +// p.FileReferenceUserFileAsset.OriginalName == asset.DisplayName && +// p.FileReferenceUserFileAsset.SizeInBytes == asset.Content.Length); +// +// if (assetRef == null) +// { +// throw new Exception($"could not find asset ref for asset id {asset.Id} for ex desc {customProjectDescription.Id}"); +// } +// +// customProjectDescription.Content = customProjectDescription.Content.Replace(asset.AssetUrl, +// Constants.MarkdownAssetFileUrlPrefix + assetRef.FileReferenceUserFileAssetId); +// count2++; +// } +// +// count++; +// +// } +// } +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// +// Response.WriteAsync($"OK - {count} - ${count2}"); +// } +// +// [HttpGet("migrate/custom/project/tests")] +// public void MigrateCustomProjectTestAssets() +// { +// var basePath = Files.GetUploadFilePath(UploadDirType.UserAssets); +// +// var testsWithAssets = _context.CustomProjectTests +// .Include(p => p.TestAssets) +// .Where(p => p.TestAssets.Count > 0) +// .ToList() +// ; +// +// int count = 0; +// +// foreach (var customProjectTest in testsWithAssets) +// { +// foreach (var customProjectTestAsset in customProjectTest.TestAssets) +// { +// //create the real file +// +// try +// { +// using (var transaction = _context.Database.BeginTransaction()) +// { +// try +// { +// var fileRef = new FileReferenceUserFileAsset() +// { +// OriginalName = customProjectTestAsset.DisplayName, +// CreatedAt = (DateTime) _context.Entry(customProjectTestAsset) +// .Property(YapexDbContext.CreatedAt) +// .CurrentValue, +// LastUpdatedAt = (DateTime) _context.Entry(customProjectTestAsset) +// .Property(YapexDbContext.LastUpdatedAt).CurrentValue, +// MimeType = customProjectTestAsset.MimeType, +// SizeInBytes = customProjectTestAsset.Content.Length, +// Hash = "", +// }; +// +// var conn = new CustomProjectTestWithFileAsAssetReference() +// { +// CustomProjectTest = customProjectTest, +// FileReferenceUserFileAsset = fileRef +// }; +// +// _context.CustomProjectTestWithFileAsAssetReferences.Add(conn); +// _context.SaveChanges(); +// +// if (fileRef.Id <= 0) +// { +// throw new Exception("fileRef must be tracked in db context"); +// } +// +// try +// { +// var info = new FileInfo(Path.Combine(basePath, fileRef.Id.ToString())); +// +// if (info.Exists) +// { +// throw new Exception($"file already exists: {info.FullName}"); +// } +// +// using (var stream = new FileStream(info.FullName, FileMode.Create)) +// { +// stream.Write(customProjectTestAsset.Content, 0, customProjectTestAsset.Content.Length); +// +// using (var md5 = MD5.Create()) +// { +// var result = md5.ComputeHash(customProjectTestAsset.Content); +// fileRef.Hash = String.Join(String.Empty, +// result.Select(p => p.ToString("x2"))); +// } +// } +// } +// catch (Exception e) +// { +// Console.WriteLine( +// $"[ERROR] error creating file name: {customProjectTestAsset.DisplayName}"); +// Console.WriteLine(e.Message); +// throw; +// } +// +// +// _context.SaveChanges(); +// transaction.Commit(); +// } +// catch (Exception e) +// { +// transaction.Rollback(); +// Console.WriteLine(e); +// throw; +// } +// } +// +// count++; +// } +// catch (Exception e) +// { +// Console.WriteLine(e); +// throw; +// } +// } +// +// } +// +// Response.WriteAsync("OK -" + count); +// +// } } }