Răsfoiți Sursa

Saving of cron fragment file

Lukas Angerer 5 ani în urmă
părinte
comite
d788c8b1d5

+ 9 - 0
CronAlarm/CronEntry.cs

@@ -0,0 +1,9 @@
+namespace CronAlarm
+{
+    public class CronEntry
+    {
+        public string Comment { get; set; }
+        public string Expression { get; set; }
+        public string Command { get; set; }
+    }
+}

+ 14 - 0
CronAlarm/CronFragmentHandler.cs

@@ -20,5 +20,19 @@ namespace CronAlarm
             var lines = File.ReadAllLines(_cronFragment.FilePath);
             return lines.Select(line => string.Join(" ", line.Split(' ', StringSplitOptions.RemoveEmptyEntries).Take(5)));
         }
+
+        public void Update(IEnumerable<CronEntry> entries)
+        {
+            using (var writer = File.CreateText(_cronFragment.FilePath))
+            {
+                foreach (var entry in entries)
+                {
+                    writer.WriteLine($"# {entry.Comment}");
+                    writer.Write(entry.Expression);
+                    writer.Write(new String(' ', 25 - entry.Expression.Length));
+                    writer.WriteLine(entry.Command);
+                }
+            }
+        }
     }
 }

+ 2 - 0
CronAlarm/ICrontFragmentHandler.cs

@@ -5,5 +5,7 @@ namespace CronAlarm
     public interface ICrontFragmentHandler
     {
         IEnumerable<string> GetExpressions();
+
+        void Update(IEnumerable<CronEntry> entries);
     }
 }

+ 16 - 1
CronAlarm/Pages/AlertSelection.razor.cs

@@ -44,7 +44,22 @@ namespace CronAlarm.Pages
 
         private void Save()
         {
-            //this.
+            var alerts = new List<CronEntry>();
+            foreach (var group in Config.Groups)
+            {
+                if (SelectedOptions[group.Name] >= 0)
+                {
+                    var option = group.Options[SelectedOptions[group.Name]];
+                    alerts.Add(new CronEntry
+                    {
+                        Comment = $"{group.Name} / {option.Label}",
+                        Expression = option.Pattern,
+                        Command = Config.Command,
+                    });
+                }
+            }
+
+            CronFragmentHandler.Update(alerts);
         }
 
         private void Reset()