diff --git a/MP.Data/Controllers/MpStatsController.cs b/MP.Data/Controllers/MpStatsController.cs
index 14138d01..40aa264f 100644
--- a/MP.Data/Controllers/MpStatsController.cs
+++ b/MP.Data/Controllers/MpStatsController.cs
@@ -63,6 +63,58 @@ namespace MP.Data.Controllers
return dbResult;
}
+ public DateTime CalcNextExe(TaskListModel taskRec)
+ {
+ DateTime dtNext = DateTime.Today;
+ try
+ {
+ // calcolo next exec da tipo...
+ switch (taskRec.Freq)
+ {
+ case TaskFreqType.ND:
+ dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Sec:
+ dtNext = taskRec.DtLastExec.AddSeconds(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Min:
+ dtNext = taskRec.DtLastExec.AddMinutes(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Hour:
+ dtNext = taskRec.DtLastExec.AddHours(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Day:
+ dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Week:
+ dtNext = taskRec.DtLastExec.AddDays(7 * taskRec.Cad);
+ break;
+
+ case TaskFreqType.Month:
+ dtNext = taskRec.DtLastExec.AddMonths(taskRec.Cad);
+ break;
+
+ case TaskFreqType.Year:
+ dtNext = taskRec.DtLastExec.AddYears(taskRec.Cad);
+ break;
+
+ default:
+ dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
+ break;
+ }
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in CalcNextExe{Environment.NewLine}{exc}");
+ }
+ return dtNext;
+ }
+
///
/// Elenco tabella Articoli da filtro
///
@@ -88,6 +140,74 @@ namespace MP.Data.Controllers
{
}
+ ///
+ /// Chiamata esecuzione di un singolo task programmato
+ ///
+ ///
+ ///
+ public TaskResultModel ExecuteTask(int TaskId)
+ {
+ TaskResultModel callRes = new TaskResultModel();
+ using (var dbCtx = new MoonPro_STATSContext(_configuration))
+ {
+ // imposto timeout a 5 min
+ //var currTimeout = dbCtx.Database.GetCommandTimeout();
+ dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(5));
+ try
+ {
+ DateTime dtStart = DateTime.Now;
+ // recupero i dati da richiamare...
+ var currRec = dbCtx
+ .DbSetTaskList
+ .Where(x => x.TaskId == TaskId)
+ .FirstOrDefault();
+ if (currRec != null)
+ {
+ // recupero comando
+ string sqlCommand = currRec.Command;
+ string rawParams = currRec.Args;
+ callRes = dbCtx
+ .DbSetTaskResult
+ .FromSqlRaw($"EXEC {sqlCommand} {rawParams}")
+ .AsNoTracking()
+ .AsEnumerable()
+ .FirstOrDefault();
+ DateTime dtEnd = DateTime.Now;
+
+ // preparo record esecuzione...
+ TaskExecModel resRec = new TaskExecModel()
+ {
+ TaskId = TaskId,
+ DtStart = dtStart,
+ DtEnd = dtEnd,
+ IsError = callRes.ExecResult < 0,
+ Result = callRes.TextResult
+ };
+ dbCtx
+ .DbSetTaskExe
+ .Add(resRec);
+
+ // aggiorno record chiamata...
+ currRec.DtLastExec = dtStart;
+ currRec.LastResult = resRec.Result;
+ currRec.LastDuration = dtEnd.Subtract(dtStart).TotalSeconds;
+ // calcolo prossima esecuzione...
+ currRec.DtNextExec = CalcNextExe(currRec);
+ // segno modificato
+ dbCtx.Entry(currRec).State = EntityState.Modified;
+
+ // salvo modifiche!
+ dbCtx.SaveChanges();
+ }
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in ExecuteSqlCommand{Environment.NewLine}{exc}");
+ }
+ }
+ return callRes;
+ }
+
///
/// Elenco da tabella Macchine
///
@@ -372,119 +492,6 @@ namespace MP.Data.Controllers
return dbResult;
}
- public DateTime CalcNextExe(TaskListModel taskRec)
- {
- DateTime dtNext = DateTime.Today;
- try
- {
- // calcolo next exec da tipo...
- switch (taskRec.Freq)
- {
- case TaskFreqType.ND:
- dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
- break;
- case TaskFreqType.Sec:
- dtNext = taskRec.DtLastExec.AddSeconds(taskRec.Cad);
- break;
- case TaskFreqType.Min:
- dtNext = taskRec.DtLastExec.AddMinutes(taskRec.Cad);
- break;
- case TaskFreqType.Hour:
- dtNext = taskRec.DtLastExec.AddHours(taskRec.Cad);
- break;
- case TaskFreqType.Day:
- dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
- break;
- case TaskFreqType.Week:
- dtNext = taskRec.DtLastExec.AddDays(7 * taskRec.Cad);
- break;
- case TaskFreqType.Month:
- dtNext = taskRec.DtLastExec.AddMonths(taskRec.Cad);
- break;
- case TaskFreqType.Year:
- dtNext = taskRec.DtLastExec.AddYears(taskRec.Cad);
- break;
- default:
- dtNext = taskRec.DtLastExec.AddDays(taskRec.Cad);
- break;
- }
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in CalcNextExe{Environment.NewLine}{exc}");
- }
- return dtNext;
- }
-
- ///
- /// Chiamata esecuzione di un singolo task programmato
- ///
- ///
- ///
- public TaskResultModel ExecuteTask(int TaskId)
- {
- TaskResultModel callRes = new TaskResultModel();
- using (var dbCtx = new MoonPro_STATSContext(_configuration))
- {
- // imposto timeout a 5 min
- //var currTimeout = dbCtx.Database.GetCommandTimeout();
- dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(5));
- try
- {
- DateTime dtStart = DateTime.Now;
- // recupero i dati da richiamare...
- var currRec = dbCtx
- .DbSetTaskList
- .Where(x => x.TaskId == TaskId)
- .FirstOrDefault();
- if (currRec != null)
- {
- // recupero comando
- string sqlCommand = currRec.Command;
- string rawParams = currRec.Args;
- callRes = dbCtx
- .DbSetTaskResult
- .FromSqlRaw($"EXEC {sqlCommand} {rawParams}")
- .AsNoTracking()
- .AsEnumerable()
- .FirstOrDefault();
- DateTime dtEnd = DateTime.Now;
-
- // preparo record esecuzione...
- TaskExecModel resRec = new TaskExecModel()
- {
- TaskId = TaskId,
- DtStart = dtStart,
- DtEnd = dtEnd,
- IsError = callRes.ExecResult < 0,
- Result = callRes.TextResult
- };
- dbCtx
- .DbSetTaskExe
- .Add(resRec);
-
- // aggiorno record chiamata...
- currRec.DtLastExec = dtStart;
- currRec.LastResult = resRec.Result;
- currRec.LastDuration = dtEnd.Subtract(dtStart).TotalSeconds;
- // calcolo prossima esecuzione...
- currRec.DtNextExec = CalcNextExe(currRec);
- // segno modificato
- dbCtx.Entry(currRec).State = EntityState.Modified;
-
- // salvo modifiche!
- dbCtx.SaveChanges();
- }
-
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in ExecuteSqlCommand{Environment.NewLine}{exc}");
- }
- }
- return callRes;
- }
-
///
/// Upsert record TaskExec
///
@@ -546,54 +553,6 @@ namespace MP.Data.Controllers
return dbResult;
}
- ///
- /// Upsert record TaskList
- ///
- /// Record da aggiornare/inserire
- ///
- public bool TaskListUpsert(TaskListModel rec2upd)
- {
- bool done = false;
- using (var dbCtx = new MoonPro_STATSContext(_configuration))
- {
- try
- {
- var currData = dbCtx
- .DbSetTaskList
- .Where(x => x.TaskId == rec2upd.TaskId)
- .FirstOrDefault();
- if (currData != null)
- {
- currData.Ordinal = rec2upd.Ordinal;
- currData.Name = rec2upd.Name;
- currData.Descript = rec2upd.Descript;
- currData.Command = rec2upd.Command;
- currData.Args = rec2upd.Args;
- currData.Freq = rec2upd.Freq;
- currData.Cad = rec2upd.Cad;
- currData.DtLastExec = rec2upd.DtLastExec;
- currData.DtNextExec = rec2upd.DtNextExec;
- currData.LastDuration = rec2upd.LastDuration;
- currData.LastResult = rec2upd.LastResult;
- dbCtx.Entry(currData).State = EntityState.Modified;
- }
- else
- {
- dbCtx
- .DbSetTaskList
- .Add(rec2upd);
- }
- dbCtx.SaveChanges();
- done = true;
- }
- catch (Exception exc)
- {
- Log.Error($"Eccezione in TaskListUpsert{Environment.NewLine}{exc}");
- }
- }
- return done;
- }
-
///
/// Update ordinamento task
///
@@ -652,6 +611,54 @@ namespace MP.Data.Controllers
return done;
}
+ ///
+ /// Upsert record TaskList
+ ///
+ /// Record da aggiornare/inserire
+ ///
+ public bool TaskListUpsert(TaskListModel rec2upd)
+ {
+ bool done = false;
+ using (var dbCtx = new MoonPro_STATSContext(_configuration))
+ {
+ try
+ {
+ var currData = dbCtx
+ .DbSetTaskList
+ .Where(x => x.TaskId == rec2upd.TaskId)
+ .FirstOrDefault();
+ if (currData != null)
+ {
+ currData.Ordinal = rec2upd.Ordinal;
+ currData.Name = rec2upd.Name;
+ currData.Descript = rec2upd.Descript;
+ currData.Command = rec2upd.Command;
+ currData.Args = rec2upd.Args;
+ currData.Freq = rec2upd.Freq;
+ currData.Cad = rec2upd.Cad;
+ currData.DtLastExec = rec2upd.DtLastExec;
+ currData.DtNextExec = rec2upd.DtNextExec;
+ currData.LastDuration = rec2upd.LastDuration;
+ currData.LastResult = rec2upd.LastResult;
+ dbCtx.Entry(currData).State = EntityState.Modified;
+ }
+ else
+ {
+ dbCtx
+ .DbSetTaskList
+ .Add(rec2upd);
+ }
+ dbCtx.SaveChanges();
+ done = true;
+ }
+ catch (Exception exc)
+ {
+ Log.Error($"Eccezione in TaskListUpsert{Environment.NewLine}{exc}");
+ }
+ }
+ return done;
+ }
+
#endregion Public Methods
#region Private Fields
diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs
index c6b3ccc0..db21582b 100644
--- a/MP.Stats/Data/MpStatsService.cs
+++ b/MP.Stats/Data/MpStatsService.cs
@@ -641,20 +641,6 @@ namespace MP.Stats.Data
return result;
}
- ///
- /// Update/Insert record TaskList
- ///
- ///
- ///
- public async Task TaskListUpsert(TaskListModel rec2upd)
- {
- bool dbResult = dbController.TaskListUpsert(rec2upd);
- // svuoto cache!
- await FlushCache("Task");
- return await Task.FromResult(dbResult);
- }
-
-
///
/// Update ordinamento task
///
@@ -668,6 +654,19 @@ namespace MP.Stats.Data
return await Task.FromResult(dbResult);
}
+ ///
+ /// Update/Insert record TaskList
+ ///
+ ///
+ ///
+ public async Task TaskListUpsert(TaskListModel rec2upd)
+ {
+ bool dbResult = dbController.TaskListUpsert(rec2upd);
+ // svuoto cache!
+ await FlushCache("Task");
+ return await Task.FromResult(dbResult);
+ }
+
#endregion Public Methods
#region Protected Fields
diff --git a/MP.Stats/Pages/TaskScheduler.razor.cs b/MP.Stats/Pages/TaskScheduler.razor.cs
index 1fe4e398..ef0fee1c 100644
--- a/MP.Stats/Pages/TaskScheduler.razor.cs
+++ b/MP.Stats/Pages/TaskScheduler.razor.cs
@@ -45,7 +45,7 @@ namespace MP.Stats.Pages
{
await InvokeAsync(() =>
{
- Task task = UpdateData();
+ Task task = ReloadData();
StateHasChanged();
});
}
@@ -68,9 +68,13 @@ namespace MP.Stats.Pages
get => detRecord == null ? "col-12" : "col-6";
}
+ protected int maxOrdinal { get; set; } = 999;
+
[Inject]
protected MessageService MessageService { get; set; }
+ protected int minOrdinal { get; set; } = 0;
+
[Inject]
protected NavigationManager NavManager { get; set; }
@@ -78,8 +82,6 @@ namespace MP.Stats.Pages
protected MpStatsService StatService { get; set; }
protected int totalCount { get; set; } = 0;
- protected int minOrdinal { get; set; } = 0;
- protected int maxOrdinal { get; set; } = 999;
protected Task2ExeType TypeSel
{
@@ -108,6 +110,17 @@ namespace MP.Stats.Pages
await ReloadData();
}
+ ///
+ /// Gestione display avanzamento step
+ ///
+ ///
+ protected async Task advStep(int currStep)
+ {
+ currVal = currStep;
+ nextVal = currVal + 1;
+ await InvokeAsync(StateHasChanged);
+ }
+
protected async Task doCancel()
{
currRecord = null;
@@ -121,12 +134,11 @@ namespace MP.Stats.Pages
await ReloadData();
}
- protected async Task DoFilter(SelectData newFilter)
+ protected async Task doMove(TaskListModel currRec, bool goUp)
{
- clearFile();
- SearchRecords = null;
- ListRecords = null;
- currFilter = newFilter;
+ await StatService.TaskListMove(currRec, goUp);
+ detRecord = null;
+ currRecord = null;
await ReloadData();
}
@@ -137,19 +149,6 @@ namespace MP.Stats.Pages
await StatService.FlushCache();
await ReloadData();
}
- private double currVal = 0;
- private double nextVal = 0;
- private int MaxVal = 10;
- ///
- /// Gestione display avanzamento step
- ///
- ///
- protected async Task advStep(int currStep)
- {
- currVal = currStep;
- nextVal = currVal + 1;
- await InvokeAsync(StateHasChanged);
- }
protected async Task doRun(TaskListModel selRec)
{
@@ -249,7 +248,6 @@ namespace MP.Stats.Pages
currRecord = null;
SearchRecords = null;
ListRecords = null;
- currFilter = SelectData.Init(5, 7);
await ReloadData();
}
@@ -263,65 +261,34 @@ namespace MP.Stats.Pages
return answ;
}
- protected double simVal(double minVal, double maxVal)
- {
- Random rnd = new Random();
- return rnd.NextDouble() * (maxVal - minVal) + minVal;
- }
-
- protected async Task UpdateData()
- {
- currRecord = null;
- await ReloadData();
- }
-
- protected async Task doMove(TaskListModel currRec, bool goUp)
- {
- await StatService.TaskListMove(currRec, goUp);
- detRecord = null;
- currRecord = null;
- await ReloadData();
- }
-
#endregion Protected Methods
#region Private Fields
+ private double currVal = 0;
private List ListRecords;
-
+ private int MaxVal = 10;
+ private double nextVal = 0;
private List SearchRecords;
#endregion Private Fields
#region Private Properties
- private SelectData currFilter
- {
- get
- {
- return MessageService.ODL_Filter;
- }
- set
- {
- MessageService.ODL_Filter = value;
- }
- }
-
private int currPage { get; set; } = 1;
private TaskListModel currRecord { get; set; } = null;
private TaskListModel detRecord { get; set; } = null;
+ private int expTimeMsec { get; set; } = 30000;
+
private string fullPath
{
get => $"{Directory.GetCurrentDirectory()}\\temp\\{fileName}";
}
private bool isLoading { get; set; } = false;
-
- private int expTimeMsec { get; set; } = 30000;
-
private int numRecord { get; set; } = 10;
private Task2ExeType typeSel { get; set; } = Task2ExeType.ND;