diff --git a/quiz-console-app/Services/ExportService.cs b/quiz-console-app/Services/ExportService.cs index 890a5aa..fbb3968 100644 --- a/quiz-console-app/Services/ExportService.cs +++ b/quiz-console-app/Services/ExportService.cs @@ -2,6 +2,7 @@ using quiz_console_app.Enums; using quiz_console_app.Models; using quiz_console_app.ViewModels; +using System.Xml.Serialization; namespace quiz_console_app.Services; @@ -24,9 +25,51 @@ public void Export(ExportType exportType) Console.Write("Kaç kitapçık dışa aktarılacak?: "); int bookletCount = int.Parse(Console.ReadLine()); - Console.Clear(); - Console.Write("Kitapçık için İsmi girin?: "); - string bookletName = Console.ReadLine(); + + Console.WriteLine("Dışa aktarma yöntemi seçin:"); + Console.WriteLine("1. Tüm kitapçıkları tek dosyada dışa aktar"); + Console.WriteLine("2. Her kitapçık için ayrı dosyada dışa aktar"); + Console.Write("Seçiminizi yapın (1 veya 2): "); + + + int choice; + + if (!int.TryParse(Console.ReadLine(), out choice)) + { + Console.WriteLine("Geçersiz giriş. Lütfen 1 veya 2 girin."); + return; + } + + switch (choice) + { + case 1: + Console.Clear(); + Console.Write("Kitapçık için İsmi girin?: "); + string bookletName = Console.ReadLine(); + bookletName = $"{bookletName.Trim()}_{DateTime.Now.ToString("yyyyMMddHHmmss")}"; + + switch (exportType) + { + case ExportType.Json: + ExportToJson(bookletName); + break; + case ExportType.Xml: + ExportToXml(bookletName); + break; + default: + Console.WriteLine("Invalid export type."); + break; + } + break; + + case 2: + break; + + default: + Console.WriteLine("Geçersiz giriş. Lütfen 1 veya 2 girin."); + break; + } + Console.WriteLine("Kitapçıklar oluşturuluyor."); _quizService.GenerateBooklets(bookletCount); @@ -39,20 +82,8 @@ public void Export(ExportType exportType) _answerKeys = QuizService.AnswerKeys; Booklets = QuizService.Booklets; - bookletName = $"{bookletName.Trim()}_{DateTime.Now.ToString("yyyyMMddHHmmss")}"; + - switch (exportType) - { - case ExportType.Json: - ExportToJson(bookletName); - break; - case ExportType.Xml: - ExportToXml(bookletName); - break; - default: - Console.WriteLine("Invalid export type."); - break; - } } @@ -76,6 +107,58 @@ public void ExportToJson(string bookletName) Console.ReadLine(); } + public void ExportEachToJson() + { + foreach (var booklet in Booklets) + { + string fileName = $"{booklet.BookletName}.json"; + string filePath = GetUniqueFilePath(baseDirectory, fileName, "json"); + + try + { + using (StreamWriter file = File.CreateText(filePath)) + { + JsonSerializer serializer = new JsonSerializer(); + serializer.Serialize(file, booklet); + } + + Console.WriteLine($"Kitapçık '{booklet.BookletName}' JSON olarak başarıyla dışa aktarıldı. Dosya yolu: {filePath}"); + } + catch (Exception ex) + { + Console.WriteLine($"JSON olarak dışa aktarma sırasında bir hata oluştu: {ex.Message}"); + } + } + + Console.ReadLine(); + } + + public void ExportEachToXml() + { + foreach (var booklet in Booklets) + { + string fileName = $"{booklet.BookletName}.xml"; + string filePath = GetUniqueFilePath(baseDirectory, fileName, "xml"); + + try + { + XmlSerializer serializer = new XmlSerializer(typeof(BookletViewModel)); + using (StreamWriter file = new StreamWriter(filePath)) + { + serializer.Serialize(file, booklet); + } + + Console.WriteLine($"Kitapçık '{booklet.BookletName}' XML olarak başarıyla dışa aktarıldı. Dosya yolu: {filePath}"); + } + catch (Exception ex) + { + Console.WriteLine($"XML olarak dışa aktarma sırasında bir hata oluştu: {ex.Message}"); + } + } + + Console.ReadLine(); + } + public void ExportToXml(string bookletName) { diff --git a/quiz-console-app/Views/QuizModeView.cs b/quiz-console-app/Views/QuizModeView.cs index 78f82a5..4a7de2c 100644 --- a/quiz-console-app/Views/QuizModeView.cs +++ b/quiz-console-app/Views/QuizModeView.cs @@ -240,7 +240,6 @@ public bool AskForQuizRetry() if (input == "E") Environment.Exit(0); - else if (input == "H") new QuizMainMenuView().Show();