add abstract string base

This commit is contained in:
2022-02-15 00:22:55 +02:00
parent 03c80413d7
commit 402dc9d051

View File

@@ -1,325 +1,386 @@
using Microsoft.Win32.TaskScheduler;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Installizer {
public class Tasker {
public class TaskerBase {
public Dictionary<string, List<List<object>>> Triggers { get; set; }
public Dictionary<string, bool> Principal { get; set; }
public List<string[]> Actions { get; set; }
public string TaskName { get; private set; }
public string TaskDescription { get; set; }
public string TaskPath { get; private set; }
public Dictionary<string, bool> Settings { get; set; }
#region Constructors
private string TaskName;
private string TaskPath;
private TaskService serv;
private TaskDefinition taskDefinition;
public Tasker(string TaskName, string TaskPath) {
this.TaskName = TaskName;
this.TaskPath = TaskPath;
this.serv = new();
this.taskDefinition = this.serv.NewTask();
public TaskerBase(string taskName, string taskPath) {
TaskName = taskName;
TaskPath = taskPath;
}
public Tasker(string TaskName, string TaskPath, string description) {
this.TaskName = TaskName;
this.TaskPath = TaskPath;
this.serv = new();
this.taskDefinition = this.serv.NewTask();
TaskDescribe(description);
public static string[] GetEventNameLog(string subscription) {
System.Text.RegularExpressions.Regex regex = new(@"(?<=\"")[A-z/\-]+(?=\"")|(?<=EventID=)\d+");
System.Text.RegularExpressions.Regex regex1 = new(@"(<=\:\s)[^[,$]]+");
return regex.IsMatch(subscription) ? regex.Matches(subscription).Select(match => { return match.Groups[1].Value; }).ToArray() : regex1.Matches(subscription).Select(match => { return match.Groups[1].Value; }).ToArray();
}
}
/// <summary>
/// This Tasker Class and object is a connection to the TaskScheduler API.
/// All the data will be saved first as local object, and then will be convert to the task scheduler api
/// </summary>
public class Tasker {
#region Properties
/// <summary>
/// Collection of all the triggers that will start the task. public property
/// </summary>
public TriggerCollection Triggers { get; private set; }
/// <summary>
/// Principal setting of how and with what permission and level the task will run. public property
/// </summary>
public TaskPrincipal Principal { get; private set; }
/// <summary>
/// Principal setting of how and with what permission and level the task will run. private property
/// </summary>
private TaskPrincipal _principal { set => Principal = value; }
public ActionCollection Actions { get; private set; }
public string TaskName { get; private set; }
public string TaskDescription { get; set; }
public string TaskPath { get; private set; }
public TaskSettings Settings { get; private set; }
private TaskDefinition _taskDefinition { get; set; }
public string Author { get; set; }
private TaskService ScTask { get; set; }
private TaskerBase taskerBase { get; set; }
public enum Repitition {
None,
Daily,
Weekly,
Monthly
}
public enum StartAt {
None,
Logon,
Event,
Startup
}
#endregion
#region Object Modifications
/// <summary>
/// This function adds description to the scheduled task.
/// </summary>
/// <param name="description"> the description text to add</param>
public void TaskDescribe(string description) {
this.taskDefinition.RegistrationInfo.Description = description;
this.taskDefinition.RegistrationInfo.Author = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
#region Constructors
public Tasker(JsonConstructorAttribute jsonConstructor) {
//foreach(var trig in jsonConstructor.)
}
public Tasker(string Name, string Path) {
taskerBase = new(Name, Path);
TaskName = Name;
TaskPath = Path;
ScTask = new();
Author = $"{Environment.MachineName}\\{Environment.UserName}";
_taskDefinition = ScTask.NewTask();
Triggers = _taskDefinition.Triggers;
Actions = _taskDefinition.Actions;
Settings = _taskDefinition.Settings;
Principal = _taskDefinition.Principal;
}
public Tasker(string Name, string Path, string description = "") {
taskerBase = new(Name, Path);
TaskName = Name;
TaskPath = Path;
TaskDescription = description;
ScTask = new();
Author = $"{Environment.MachineName}\\{Environment.UserName}";
_taskDefinition = ScTask.NewTask();
Triggers = _taskDefinition.Triggers;
Actions = _taskDefinition.Actions;
Settings = _taskDefinition.Settings;
Principal = _taskDefinition.Principal;
}
public Tasker(string Name, string Path, TaskDefinition taskDefinition) {
taskerBase = new(Name, Path);
TaskName = Name;
TaskPath = Path;
ScTask = new();
_taskDefinition = taskDefinition;
Triggers = _taskDefinition.Triggers;
Author = _taskDefinition.RegistrationInfo.Author;
Actions = _taskDefinition.Actions;
TaskDescription = _taskDefinition.RegistrationInfo.Description;
Settings = _taskDefinition.Settings;
Principal = _taskDefinition.Principal;
}
#endregion
#region Definitions
#region Triggers
public void SetTriggers(string hour, Repitition reps, string days = "") {
switch (reps) {
case Repitition.Daily: {
DailyTrigger dailyTrigger = new();
dailyTrigger.StartBoundary = DateTime.Today + TimeSpan.FromHours(int.Parse(hour.Split(":")[0])) + TimeSpan.FromMinutes(int.Parse(hour.Split(":")[1]));
dailyTrigger.Enabled = true;
Triggers.Add(dailyTrigger);
_taskDefinition.Triggers.Add(dailyTrigger);
break;
}
case Repitition.Weekly: {
WeeklyTrigger weeklyTrigger = new();
weeklyTrigger.Enabled = true;
weeklyTrigger.DaysOfWeek = DaysOftheWeek(days);
weeklyTrigger.StartBoundary = DateTime.Today + TimeSpan.FromHours(int.Parse(hour.Split(":")[0])) + TimeSpan.FromMinutes(int.Parse(hour.Split(":")[1]));
Triggers.Add(weeklyTrigger);
_taskDefinition.Triggers.Add(weeklyTrigger);
break;
}
case Repitition.Monthly: {
MonthlyTrigger monthlyTrigger = new();
monthlyTrigger.Enabled = true;
monthlyTrigger.DaysOfMonth = days.Length > 0 ? DaysOfTheMonth(days) : DaysOfTheMonth("1");
monthlyTrigger.MonthsOfYear = MonthsOfTheYear.January | MonthsOfTheYear.February | MonthsOfTheYear.March | MonthsOfTheYear.April | MonthsOfTheYear.May | MonthsOfTheYear.June | MonthsOfTheYear.July | MonthsOfTheYear.August | MonthsOfTheYear.September | MonthsOfTheYear.October | MonthsOfTheYear.November | MonthsOfTheYear.December;
Triggers.Add(monthlyTrigger);
_taskDefinition.Triggers.Add(monthlyTrigger);
break;
}
/// <summary>
/// This function defines the settings for the scheduled task
/// </summary>
/// <param name="batteries">runs the task on battery. the default is true</param>
/// <param name="enable">enables the task. the default is true</param>
/// <param name="startwhenavailibale">starts the task if it missed, when the computer is availible. the defult is true</param>
/// <param name="hidden">hides the running. the default is false</param>
public void TaskSettingsDefine(bool batteries = true, bool enable = true, bool startwhenavailibale = true, bool hidden = false) {
this.taskDefinition.Settings.DisallowStartIfOnBatteries = !batteries;
this.taskDefinition.Settings.StopIfGoingOnBatteries = !batteries;
this.taskDefinition.Settings.Enabled = enable;
this.taskDefinition.Settings.StartWhenAvailable = startwhenavailibale;
this.taskDefinition.Settings.Hidden = hidden;
}
public void TaskPrincipal(bool highest = false, bool service = false, string user = "") {
if (highest) {
this.taskDefinition.Principal.RunLevel = TaskRunLevel.Highest;
} else {
this.taskDefinition.Principal.RunLevel = TaskRunLevel.LUA;
}
if (service) {
this.taskDefinition.Principal.LogonType = TaskLogonType.S4U;
} else {
this.taskDefinition.Principal.LogonType = TaskLogonType.Password;
}
if (user != "") {
this.taskDefinition.Principal.Id = user;
} else {
this.taskDefinition.Principal.Id = $"{System.Environment.MachineName}\\{System.Environment.UserName}";
public void SetTriggers(string[] hours, Repitition reps, string days = "") {
foreach (string hour in hours) {
SetTriggers(hour, reps, days);
}
}
public void TaskEventTriggerDefine(string logName, string logSource, int eventID) {
public void SetTriggers(string hour, Repitition reps, int[] days) {
switch (reps) {
case Repitition.Daily: {
DailyTrigger dailyTrigger = new();
dailyTrigger.StartBoundary = DateTime.Today + TimeSpan.FromHours(int.Parse(hour.Split(":")[0])) + TimeSpan.FromMinutes(int.Parse(hour.Split(":")[1]));
dailyTrigger.Enabled = true;
Triggers.Add(dailyTrigger);
_taskDefinition.Triggers.Add(dailyTrigger);
break;
}
case Repitition.Weekly: {
WeeklyTrigger weeklyTrigger = new();
weeklyTrigger.Enabled = true;
weeklyTrigger.DaysOfWeek = DaysOftheWeek(days);
weeklyTrigger.StartBoundary = DateTime.Today + TimeSpan.FromHours(int.Parse(hour.Split(":")[0])) + TimeSpan.FromMinutes(int.Parse(hour.Split(":")[1]));
Triggers.Add(weeklyTrigger);
//_taskDefinition.Triggers.Add(weeklyTrigger);
break;
}
case Repitition.Monthly: {
MonthlyTrigger monthlyTrigger = new();
monthlyTrigger.Enabled = true;
monthlyTrigger.DaysOfMonth = days.Length > 0 ? DaysOfTheMonth(days) : DaysOfTheMonth("1");
monthlyTrigger.MonthsOfYear = MonthsOfTheYear.January | MonthsOfTheYear.February | MonthsOfTheYear.March | MonthsOfTheYear.April | MonthsOfTheYear.May | MonthsOfTheYear.June | MonthsOfTheYear.July | MonthsOfTheYear.August | MonthsOfTheYear.September | MonthsOfTheYear.October | MonthsOfTheYear.November | MonthsOfTheYear.December;
Triggers.Add(monthlyTrigger);
_taskDefinition.Triggers.Add(monthlyTrigger);
break;
}
}
}
public void SetTriggers(string[] hours, Repitition reps, int[] days) {
foreach (var hour in hours) {
SetTriggers(hour, reps, days);
}
}
public void SetTriggers(StartAt start, string[]? events = null) {
switch (start) {
case StartAt.None:
break;
case StartAt.Event: {
if (events != null && events.Length > 1 && events.Length <= 3) {
EventTrigger trigger = new();
trigger.Enabled = true;
trigger.SetBasic(logName, logSource, eventID);
this.taskDefinition.Triggers.Add(trigger);
if (events[2] != null)
trigger.SetBasic(events[0], events[1], int.Parse(events[2]));
else
trigger.SetBasic(events[0], events[1], null);
Triggers.Add(trigger);
_taskDefinition.Triggers.Add(trigger);
}
public void TaskDailyTriggerrDefine(string hour) {
DailyTrigger trigger = new();
trigger.Enabled = true;
int h = int.Parse(hour.Split(":")[0]);
int m = int.Parse(hour.Split(":")[1]);
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
//trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
//trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
this.taskDefinition.Triggers.Add(trigger);
break;
}
public void TaskDailyTriggersDefine(string[] hours) {
foreach (string hour in hours) {
TaskDailyTriggerrDefine(hour);
case StartAt.Startup: {
BootTrigger trigger = new BootTrigger();
Triggers.Add(trigger);
_taskDefinition.Triggers.Add(trigger);
break;
}
default: {
LogonTrigger trigger = new();
Triggers.Add(trigger);
_taskDefinition.Triggers.Add(trigger);
break;
}
public void TaskWeeklyTriggerDefine(WeeklyTrigger trig) {
this.taskDefinition.Triggers.Add(trig);
}
public void TaskWeeklyTriggerDefine(string hour, int day) {
this.taskDefinition.Triggers.Add(WeeklyTriggerCreate(hour, day));
}
public void TaskActionsDefine(string app, string? argus, string? location) {
ExecAction action = new();
action.Path = app;
if (argus != null) {
action.Arguments = argus;
}
if (location != null) {
action.WorkingDirectory = location;
}
this.taskDefinition.Actions.Add(action);
}
public void TaskActionsDefine(string[] apps, string?[] argus, string?[] locations) {
for (int i = 0; i < apps.Length; i++) {
TaskActionsDefine(apps[i], argus[i], locations[i]);
}
}
public void TaskWeeklyTriggerDefine(string hour, int[] days) {
this.taskDefinition.Triggers.Add(WeeklyTriggerCreate(hour, days));
}
public void TaskWeeklyTriggerDefine(string[] hours, int[] days) {
foreach (string hour in hours) {
TaskWeeklyTriggerDefine(hour, days);
}
}
public void RegisterTask() {
try {
this.serv.RootFolder.RegisterTaskDefinition($"{this.TaskPath}\\{this.TaskName}", this.taskDefinition);
} catch {
this.serv.RootFolder.RegisterTaskDefinition(this.TaskPath, this.taskDefinition);
}
//TaskService.Instance.RootFolder.RegisterTaskDefinition($"{this.TaskPath}\\{this.TaskName}", this.taskDefinition, TaskCreation.CreateOrUpdate, "סארט", null, TaskLogonType.Password);
}
#endregion
//serv.RootFolder.RegisterTaskDefinition(TaskPath);
#region Actions
public void SetActions(string path, string argumentList = "", string workingDirectory = "") {
ExecAction action = new ExecAction();
action.Path = path;
action.Arguments = argumentList;
action.WorkingDirectory = workingDirectory;
Actions.Add(action);
_taskDefinition.Actions.Add(action);
}
public void SetActions(string[] path, string[]? argumentList = null, string workingDirectory = "") {
string[] arguments = new string[path.Length];
if (argumentList.Length < path.Length) {
arguments = new string[path.Length];
for (int i = 0; i < argumentList.Length; i++) {
arguments[i] = argumentList[i];
}
for (int i = argumentList.Length; i < arguments.Length; i++) {
arguments[i] = "";
}
} else if (argumentList.Length > path.Length) {
arguments = new string[path.Length];
for (int i = argumentList.Length; i < arguments.Length; i++) {
arguments[i] = argumentList[i];
}
}
var pathArgs = path.Length == argumentList.Length ? path.Zip(argumentList, (Path, Argu) => new { ActPath = Path, ActArg = Argu }) : path.Zip(arguments, (Path, Argu) => new { ActPath = Path, ActArg = Argu });
foreach (var ar in pathArgs) {
SetActions(ar.ActPath, ar.ActArg, workingDirectory);
}
}
#endregion
#region Pricipal
public void SetPrincipal(bool Highest = false, bool User = true) {
Principal.Id = $"{Environment.MachineName}\\{Environment.UserName}";
Principal.LogonType = User ? TaskLogonType.Password : TaskLogonType.S4U;
Principal.RunLevel = Highest ? TaskRunLevel.Highest : TaskRunLevel.LUA;
_taskDefinition.Principal.RunLevel = Highest ? TaskRunLevel.Highest : TaskRunLevel.LUA;
_taskDefinition.Principal.LogonType = User ? TaskLogonType.Password : TaskLogonType.S4U;
}
#endregion
#region Settings
public void SetSettings(bool batteries = true, bool hidden = false, bool startWhenAvailable = true, bool enable = true) {
(Settings.StopIfGoingOnBatteries, Settings.DisallowStartIfOnBatteries) = (!batteries, !batteries);
Settings.Hidden = hidden;
Settings.StartWhenAvailable = startWhenAvailable;
Settings.AllowDemandStart = true;
Settings.Enabled = enable;
(_taskDefinition.Settings.StopIfGoingOnBatteries, _taskDefinition.Settings.DisallowStartIfOnBatteries) = (!batteries, !batteries);
_taskDefinition.Settings.Hidden = hidden;
_taskDefinition.Settings.StartWhenAvailable = startWhenAvailable;
_taskDefinition.Settings.AllowDemandStart = true;
_taskDefinition.Settings.Enabled = enable;
}
#endregion
#endregion
#region SetupTask
public void SetTask(string description = "") {
TaskDescription = description;
TaskDefinition task = ScTask.NewTask();
task.Triggers.AddRange(Triggers);
(task.Principal.RunLevel, task.Principal.LogonType, task.Principal.UserId) = (Principal.RunLevel, Principal.LogonType, Principal.UserId);
task.Actions.AddRange(Actions);
(task.Settings.DisallowStartIfOnBatteries, task.Settings.StopIfGoingOnBatteries, task.Settings.StartWhenAvailable, task.Settings.Enabled, task.Settings.Hidden, task.Settings.AllowDemandStart) = (Settings.DisallowStartIfOnBatteries, Settings.StopIfGoingOnBatteries, Settings.StartWhenAvailable, Settings.Enabled, Settings.Hidden, Settings.AllowDemandStart);
task.RegistrationInfo.Description = TaskDescription;
task.RegistrationInfo.Author ??= $"{Environment.MachineName}\\{Environment.UserName}";
ScTask.RootFolder.RegisterTaskDefinition($"\\{TaskPath}\\{TaskName}", task);
}
public void ExportTask(string Path) {
var settings = new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore };
settings.Error += (o, args) => {
if (args.ErrorContext.Error.InnerException is NotImplementedException)
args.ErrorContext.Handled = true;
};
string data = JsonConvert.SerializeObject(this, Formatting.Indented, settings);
System.IO.File.WriteAllText(Path, data);
}
private void SetTaskerBase() {
foreach (var trig in Triggers) {
if (trig.GetType().Name.Equals("EventTrigger")) {
//taskerBase.Triggers["EventTrigger"].Add(new Dictionary<string, object> { ("event", new string[] { } })
}
}
}
public static void ImportTask(string Path) {
string data = System.IO.File.ReadAllText(Path);
Tasker tasker = Newtonsoft.Json.JsonConvert.DeserializeObject<Tasker>(data);
tasker.SetTask();
}
public static Tasker ExportTask(string taskName, string taskPath = "") {
TaskService service = new();
var tsk = service.FindTask(taskName, true);
Tasker tasker = new(taskName, taskPath);
tasker.Actions = tsk.Definition.Actions;
tasker.Settings = tsk.Definition.Settings;
tasker.Triggers = tsk.Definition.Triggers;
tasker.Principal = tsk.Definition.Principal;
tasker.TaskDescription = tsk.Definition.RegistrationInfo.Description;
tasker.Author = tsk.Definition.RegistrationInfo.Author;
return tasker;
}
#endregion
#region Helpers
private System.DateTime Day(int day) {
if (day > 0 && day < 8) {
return new System.DateTime(1977, 12, 31).AddDays(day);
}
return new System.DateTime(1978, 1, 1);
}
private System.DateTime HourTime(string time) {
return System.DateTime.Parse(time);
}
private WeeklyTrigger WeeklyTriggerCreate(string hour, int day) {
private DaysOfTheWeek DaysOftheWeek(string days) {
WeeklyTrigger trigger = new();
DaysOfTheWeek dayS;
switch (day) {
case 1: {
dayS = DaysOfTheWeek.Sunday;
break;
DaysOfTheWeek? day = null;
foreach (int dayOfWeek in new int[] { 0, 1, 2, 3, 4, 5, 6 }) {
if (day == null && days.Contains($"{dayOfWeek}")) {
day = (DaysOfTheWeek)dayOfWeek;
} else if (days.Contains($"{dayOfWeek}")) {
day |= (DaysOfTheWeek)dayOfWeek;
}
case 2: {
dayS = DaysOfTheWeek.Monday;
break;
}
case 3: {
dayS = DaysOfTheWeek.Tuesday;
break;
}
case 4: {
dayS = DaysOfTheWeek.Wednesday;
break;
return (DaysOfTheWeek)day;
}
case 5: {
dayS = DaysOfTheWeek.Thursday;
break;
}
case 6: {
dayS = DaysOfTheWeek.Friday;
break;
}
default: {
dayS = DaysOfTheWeek.Saturday;
break;
}
}
trigger.DaysOfWeek = dayS;
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
return trigger;
}
private WeeklyTrigger WeeklyTriggerCreate(string hour, int[] day) {
WeeklyTrigger trigger = new();
DaysOfTheWeek[] dayS = new DaysOfTheWeek[day.Length];
for (int i = 0; i < day.Length; i++) {
switch (day[i]) {
case 1: {
dayS[i] = DaysOfTheWeek.Sunday;
break;
}
case 2: {
dayS[i] = DaysOfTheWeek.Monday;
break;
}
case 3: {
dayS[i] = DaysOfTheWeek.Tuesday;
break;
}
case 4: {
dayS[i] = DaysOfTheWeek.Wednesday;
break;
}
case 5: {
dayS[i] = DaysOfTheWeek.Thursday;
break;
}
case 6: {
dayS[i] = DaysOfTheWeek.Friday;
break;
}
default: {
dayS[i] = DaysOfTheWeek.Saturday;
break;
private DaysOfTheWeek DaysOftheWeek(int[] days) {
DaysOfTheWeek? day = null;
foreach (int dayOfWeek in days) {
if (dayOfWeek < 7) {
if (day == null) {
day = (DaysOfTheWeek)dayOfWeek;
} else {
day |= (DaysOfTheWeek)dayOfWeek;
}
}
}
foreach (var d in dayS) {
trigger.DaysOfWeek |= d;
return (DaysOfTheWeek)day;
}
trigger.StartBoundary = System.DateTime.Parse(hour, System.Globalization.CultureInfo.InvariantCulture);
return trigger;
}
#endregion
//public void TaskMonthlyTriggerDefine(int month, int day, string hour)
private int[] DaysOfTheMonth(string days) {
return days.Split(",").Select(x => int.Parse(x)).Where(y => y > 0 && y < 32).ToArray();
//List<int> daysOfTheMonth = new List<int>();
//foreach (string day in days.Split(","))
//{
// MonthlyTrigger trigger = new();
// int[] d = new int[] { day };
// trigger.DaysOfMonth = d;
// trigger.
//}
//public void TaskTriggersDefine(int[] days, string[] hours)
// if (int.Parse(day) > 0 && int.Parse(day) < 32)
// {
// Trigger trigger;
// DateTime[] hrs = new DateTime[hours.Length];
// DateTime[] dates = new System.DateTime[days.Length];
// for (int i = 0; i < days.Length; i++)
// {
// foreach(string hor in hours)
// {
// if (days[i] > 0 && days[i] < 8)
// {
// dates[i] = System.DateTime.Parse($"0{days}/01/1978",null);
// int horr=Int32.Parse( hor.Split(":")[0]);
// int minn = Int32.Parse(hor.Split(":")[1]);
// dates[i] = dates[i].AddHours(horr);
// dates[i].AddMinutes(minn);
// }
// daysOfTheMonth.Add(int.Parse(day));
// }
//}
// trigger.StartBoundary = new DateTime[dates.Length];
//}
#region Exports
private static string TaskNameExport(Tasker task) {
return task.TaskName;
//return daysOfTheMonth.ToArray();
}
private static string TaskPathExport(Tasker task) {
return task.TaskPath;
}
//private static string
#endregion
#region Jsoner
public static void ExportJson(string path, Tasker task) {
var tas = Newtonsoft.Json.JsonConvert.SerializeObject(task, Newtonsoft.Json.Formatting.Indented);
System.IO.File.WriteAllText(path, tas);
}
public void ExportJson() {
JObject Task = new();
Task.Add(new JProperty("TaskName", this.TaskName));
Task.Add(new JProperty("TaskPath", this.TaskPath));
JArray actions = new();
foreach (var act in this.taskDefinition.Actions) {
JArray array = new();
array.Add(((ExecAction)act).Path);
array.Add(((ExecAction)act).Arguments);
array.Add(((ExecAction)act).WorkingDirectory);
actions.Add(array);
}
foreach (var trig in this.taskDefinition.Triggers) {
JArray triggers = new();
// TODO: continue
}
//Task.Add(new JProperty())
}
public static TriggerCollection GetDailyTrigger(JObject triggers) {
TaskService task = new();
TriggerCollection result = task.NewTask().Triggers;
foreach (var trig in triggers["dayly"]) {
DailyTrigger trigger = new();
int h = int.Parse(trig.ToString().Split(":")[0]);
int m = int.Parse(trig.ToString().Split(":")[1]);
trigger.StartBoundary = System.DateTime.Today + System.TimeSpan.FromHours(h) + System.TimeSpan.FromMinutes(m);
trigger.Repetition.Duration = System.TimeSpan.FromDays(1);
trigger.Repetition.Interval = System.TimeSpan.FromMinutes(1);
result.Add(trigger);
}
return result;
}
//public static TriggerCollection GetWeeklyTrigger(JObject triggers)
//{
// TaskService task = new();
// TriggerCollection result = task.NewTask().Triggers;
// foreach(var trigger in triggers["weekly"])
// {
// }
//}
public static void ImportTasks(string jsonFile) {
JObject SchedTask = (JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(System.IO.File.ReadAllText(jsonFile));
Tasker tasker = new(SchedTask["TaskName"].ToString(), SchedTask["TaskPath"].ToString(), SchedTask["Description"].ToString());
var trigs = SchedTask["triggers"];
private int[] DaysOfTheMonth(int[] days) {
List<int> daysOfTheMonth = new(days);
return daysOfTheMonth.Where(x => x > 0 && x < 32).ToArray();
}
public void Mu(string days) {
Console.WriteLine(DaysOfTheMonth(days));
}
#endregion
}
}