FormDigitalSend.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. using qdr.app.studiou.orders2printpack.Properties;
  2. using System.IO.Abstractions;
  3. namespace qdr.app.studiou.orders2printpack
  4. {
  5. public partial class FormDigitalSend : Form
  6. {
  7. #region *** Cnstants ***
  8. private const string CS_DigitalDirSent = ".sent";
  9. private const string CS_DigitalDirTemp = ".temp";
  10. private const string CS_DigitalMetadata = "metadata.json";
  11. #endregion
  12. #region *** Fields ***
  13. private IFileSystem _fileSystem = new FileSystem();
  14. private string? _openedDigitalDir = null;
  15. private string? _openedDigitalDirSent = null;
  16. private string? _openedDigitalDirTemp = null;
  17. #endregion
  18. #region *** Constructors ***
  19. public FormDigitalSend()
  20. {
  21. InitializeComponent();
  22. }
  23. #endregion
  24. #region *** Form Handlers ***
  25. private void mmOpenDir_Click(object sender, EventArgs e)
  26. {
  27. dlgOpenDir.Description = "Otevřít další složku s digitálním obsahem ...";
  28. dlgOpenDir.UseDescriptionForTitle = true;
  29. dlgOpenDir.InitialDirectory = AppSettings.Default.LastDigitalDir;
  30. if (dlgOpenDir.ShowDialog() == DialogResult.OK)
  31. {
  32. AppSettings.Default.LastDigitalDir = dlgOpenDir.SelectedPath;
  33. AppSettings.Default.Save();
  34. OpenDigitalDir(_openedDigitalDir);
  35. }
  36. }
  37. private void mmSend_Click(object sender, EventArgs e)
  38. {
  39. }
  40. #endregion
  41. #region *** Private Methods ***
  42. #region **** Error Handling *****
  43. private void BlockErrorHandled(Action block)
  44. {
  45. try
  46. {
  47. block();
  48. }
  49. catch (Exception ex)
  50. {
  51. MessageBox.Show(this, ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
  52. RefreshToolButtons();
  53. }
  54. }
  55. #endregion
  56. #region **** Refresh UI *****
  57. private void RefreshToolButtons()
  58. {
  59. throw new NotImplementedException();
  60. }
  61. #endregion
  62. #region **** Digital Directory Operations *****
  63. private void OpenDigitalDir(string selectedPath)
  64. {
  65. BlockErrorHandled(()=>{
  66. EnsureDigitalDirStructureExists(selectedPath);
  67. });
  68. }
  69. private void EnsureDigitalDirStructureExists(string selectedPath)
  70. {
  71. if (string.IsNullOrEmpty(selectedPath) || !_fileSystem.Directory.Exists(selectedPath))
  72. {
  73. throw new DirectoryNotFoundException($"Adresář '{selectedPath}' neexistuje.");
  74. }
  75. _openedDigitalDir = selectedPath;
  76. _openedDigitalDirSent = _fileSystem.Path.Combine(selectedPath, CS_DigitalDirSent);
  77. _openedDigitalDirTemp = _fileSystem.Path.Combine(selectedPath, CS_DigitalDirTemp);
  78. if (!_fileSystem.Directory.Exists(_openedDigitalDirSent))
  79. {
  80. _fileSystem.Directory.CreateDirectory(_openedDigitalDirSent);
  81. Log($"Vytvořen adresář pro odeslaná data '{_openedDigitalDirSent}'");
  82. }
  83. if (!_fileSystem.Directory.Exists(_openedDigitalDirTemp))
  84. {
  85. _fileSystem.Directory.CreateDirectory(_openedDigitalDirTemp);
  86. Log($"Vytvořen pracovní adresář '{_openedDigitalDirTemp}'");
  87. }
  88. EnsureDigitalMetadataExists(selectedPath);
  89. }
  90. private void EnsureDigitalMetadataExists(string selectedPath)
  91. {
  92. var metadataFilePath = _fileSystem.Path.Combine(selectedPath, CS_DigitalMetadata);
  93. if (!_fileSystem.File.Exists(metadataFilePath))
  94. {
  95. RefreshMetadataFile(metadataFilePath);
  96. }
  97. }
  98. private void RefreshMetadataFile(string metadataFilePath)
  99. {
  100. Log($"Aktualizuji soubor s metadaty '{metadataFilePath}'...");
  101. var metadata = new EmailStorage.Metadata();
  102. _fileSystem.File.WriteAllText(metadataFilePath, System.Text.Json.JsonSerializer.Serialize(metadata, new System.Text.Json.JsonSerializerOptions { WriteIndented = true }));
  103. Log($"Soubor s metadaty '{metadataFilePath}' byl vytvořen.");
  104. }
  105. #endregion
  106. #region **** Logging *****
  107. private void LogBreak()
  108. {
  109. Log(new string('-', 80));
  110. }
  111. private void LogCaption(string message)
  112. {
  113. Log($"*** {message} ***");
  114. }
  115. private void LogError(string message)
  116. {
  117. Log($"[ERROR] {message}");
  118. }
  119. private void Log(string message)
  120. {
  121. lbLog.BeginUpdate();
  122. lbLog.Items.Insert(0, message);
  123. lbLog.EndUpdate();
  124. }
  125. #endregion
  126. #endregion
  127. }
  128. }