From d798e91055762ff716d16b2f7ac593e929f98ddb Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Sat, 11 Jun 2022 12:24:18 +0200 Subject: [PATCH] - corretta rigenerazione task --- MP.MONO.Data/Controllers/MpDbController.cs | 158 +++++++++--------- MP.MONO.UI/Components/SchedMaintTask.razor.cs | 84 +++++----- MP.MONO.UI/Data/CurrentDataService.cs | 1 - 3 files changed, 121 insertions(+), 122 deletions(-) diff --git a/MP.MONO.Data/Controllers/MpDbController.cs b/MP.MONO.Data/Controllers/MpDbController.cs index ea562a7..de2852c 100644 --- a/MP.MONO.Data/Controllers/MpDbController.cs +++ b/MP.MONO.Data/Controllers/MpDbController.cs @@ -362,6 +362,81 @@ namespace MP.MONO.Data.Controllers return dbResult; } + /// + /// genera elenco Task Schedulati missing da schema + attualmente presenti... + /// + /// + /// + public async Task SchedMaintTaskCreateMissing(int MachineId) + { + bool answ = false; + using (MapoMonoContext localDbCtx = new MapoMonoContext()) + { + try + { + List missTask = new List(); + + List? allTask = localDbCtx + .DbSetPMTask + .Where(x => x.MachineId == MachineId) + .Include(i => i.CounterNav) + .ToList(); + + // analizzo task per idx del PMTask + var reqTask = allTask + .Select(x => x.PMTaskId) + .ToList(); + + var openTask = localDbCtx + .DbSetSMTask + .Where(x => x.DtExecution == DateTime.MinValue) + .Include(m => m.PMTaskeNav) + .ToList(); + + var currTask = openTask + .Where(x => x.PMTaskeNav.MachineId == MachineId) + .Select(x => x.PMTaskId) + .ToList(); + + // elenco dei SOLI task presenti + var listTaskOk = currTask.Intersect(reqTask).ToList(); + + // dall'elenco di quelli originali elimino presenti --> ho elenco mancanti... + foreach (var iTask in allTask) + { + // se non nell'elenco aggiungo... + if (!listTaskOk.Exists(x => x == iTask.PMTaskId)) + { + missTask.Add(iTask); + } + } + + var newRecs = missTask.Select(x => new ScheduledMaintModel() + { + CCode = x.CCode, + DtCreation = DateTime.Now, + ExpiryVal = x.ExpiryVal, + PMTaskId = x.PMTaskId, + CountStartVal = x.CounterNav.ActualVal + }).ToList(); + + localDbCtx + .DbSetSMTask + .AddRange(newRecs); + + // salvo + localDbCtx.SaveChanges(); + answ = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante SchedMaintTaskGetFilt{Environment.NewLine}{exc}"); + } + } + await Task.Delay(1); + return answ; + } + /// /// Recupero elenco Task Schedulati (ultimi dato "skip") /// @@ -406,17 +481,17 @@ namespace MP.MONO.Data.Controllers /// /// /// - public async Task SchedMaintTaskSetDone(int MachineId, int SMTaskId, DateTime ExecDT,string ExecUser) + public async Task SchedMaintTaskSetDone(int MachineId, int SMTaskId, DateTime ExecDT, string ExecUser) { bool answ = false; using (MapoMonoContext localDbCtx = new MapoMonoContext()) { try { - var dbResult = localDbCtx - .DbSetSMTask - .Where(x => x.PMTaskeNav.MachineId == MachineId && x.SMTaskId == SMTaskId) - .FirstOrDefault(); + var dbResult = localDbCtx + .DbSetSMTask + .Where(x => x.PMTaskeNav.MachineId == MachineId && x.SMTaskId == SMTaskId) + .FirstOrDefault(); if (dbResult != null) { dbResult.DtExecution = ExecDT; @@ -434,79 +509,6 @@ namespace MP.MONO.Data.Controllers return answ; } - /// - /// genera elenco Task Schedulati missing da schema + attualmente presenti... - /// - /// - /// - public async Task SchedMaintTaskCreateMissing(int MachineId) - { - bool answ = false; - using (MapoMonoContext localDbCtx = new MapoMonoContext()) - { - try - { - List missTask = new List(); - - List? allTask = localDbCtx - .DbSetPMTask - .Where(x => x.MachineId == MachineId) - .ToList(); - - // analizzo task per idx del PMTask - var reqTask = allTask - .Select(x => x.PMTaskId) - .ToList(); - - var openTask = localDbCtx - .DbSetSMTask - .Where(x => x.DtExecution == DateTime.MinValue) - .Include(m => m.PMTaskeNav) - .ToList(); - - var currTask = openTask - .Where(x => x.PMTaskeNav.MachineId == MachineId) - .Select(x => x.PMTaskId) - .ToList(); - - // elenco dei SOLI task presenti - var listTaskOk = currTask.Intersect(reqTask).ToList(); - - // dall'elenco di quelli originali elimino presenti --> ho elenco mancanti... - foreach (var iTask in allTask) - { - // se non nell'elenco aggiungo... - if (!listTaskOk.Exists(x => x == iTask.PMTaskId)) - { - missTask.Add(iTask); - } - } - - var newRecs = missTask.Select(x => new ScheduledMaintModel() - { - CCode = x.CCode, - DtCreation = DateTime.Now, - ExpiryVal = x.ExpiryVal, - PMTaskId = x.PMTaskId - }).ToList(); - - localDbCtx - .DbSetSMTask - .AddRange(newRecs); - - // salvo - localDbCtx.SaveChanges(); - answ = true; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante SchedMaintTaskGetFilt{Environment.NewLine}{exc}"); - } - } - await Task.Delay(1); - return answ; - } - #endregion Public Methods #region Private Fields diff --git a/MP.MONO.UI/Components/SchedMaintTask.razor.cs b/MP.MONO.UI/Components/SchedMaintTask.razor.cs index 5f20544..f6388cc 100644 --- a/MP.MONO.UI/Components/SchedMaintTask.razor.cs +++ b/MP.MONO.UI/Components/SchedMaintTask.razor.cs @@ -22,8 +22,18 @@ namespace MP.MONO.UI.Components // FARE!!! filtro macchina private int MachineId = 1; + /// + /// Valore limite (in ore) per indicare come rosso una scadenza + /// + private int redLim = 24 * 2; + private List? SearchRecords = null; + /// + /// Valore limite (in ore) per indicare come giallo una scadenza + /// + private int yelLim = 24 * 7; + #endregion Private Fields #region Private Properties @@ -45,8 +55,13 @@ namespace MP.MONO.UI.Components } } + private int currSMTaskId { get; set; } = 0; + private DateTime execDate { get; set; } = DateTime.Today.AddHours(DateTime.Now.Hour); + private string execName { get; set; } = ""; private bool isLoading { get; set; } = false; + private int LimitDayPeriod { get; set; } = 7; + private int MaxRecord { get @@ -64,6 +79,11 @@ namespace MP.MONO.UI.Components } } + private string modalShow + { + get => showTaskConf ? "show" : "hide"; + } + private int numRecord { get => _numRecord; @@ -92,6 +112,8 @@ namespace MP.MONO.UI.Components } } + private bool showTaskConf { get; set; } = false; + private int totalCount { get @@ -109,6 +131,19 @@ namespace MP.MONO.UI.Components #region Private Methods + private async Task ConfirmDone() + { + // se ho dataora ed esecutore... + if (!string.IsNullOrEmpty(execName) && currSMTaskId > 0) + { + // salvo! + bool fatto = await MMDataService.SchedMaintTaskSetDone(MachineId, currSMTaskId, execDate, execName); + + // rigenero! + await RegenTask(); + } + } + private void ForceReload(int newNum) { numRecord = newNum; @@ -125,38 +160,6 @@ namespace MP.MONO.UI.Components await ReloadData(); } - private bool showTaskConf { get; set; } = false; - - private void ShowConfirm(int SMTaskId) - { - showTaskConf = !showTaskConf; - currSMTaskId = SMTaskId; - } - - private DateTime execDate { get; set; } = DateTime.Today.AddHours(DateTime.Now.Hour); - - private string execName { get; set; } = ""; - - private int currSMTaskId { get; set; } = 0; - - private string modalShow - { - get => showTaskConf ? "show" : "hide"; - } - - private async Task ConfirmDone() - { - // se ho dataora ed esecutore... - if (!string.IsNullOrEmpty(execName) && currSMTaskId > 0) - { - // salvo! - bool fatto = await MMDataService.SchedMaintTaskSetDone(MachineId, currSMTaskId, execDate, execName); - - // rigenero! - await RegenTask(); - } - } - private async Task ReloadData() { isLoading = true; @@ -169,6 +172,12 @@ namespace MP.MONO.UI.Components isLoading = false; } + private void ShowConfirm(int SMTaskId) + { + showTaskConf = !showTaskConf; + currSMTaskId = SMTaskId; + } + private async Task ToggleCompleted() { await Task.Delay(1); @@ -176,17 +185,6 @@ namespace MP.MONO.UI.Components await Task.Delay(1); } - private int LimitDayPeriod { get; set; } = 7; - - /// - /// Valore limite (in ore) per indicare come rosso una scadenza - /// - private int redLim = 24 * 2; - /// - /// Valore limite (in ore) per indicare come giallo una scadenza - /// - private int yelLim = 24 * 7; - #endregion Private Methods } } \ No newline at end of file diff --git a/MP.MONO.UI/Data/CurrentDataService.cs b/MP.MONO.UI/Data/CurrentDataService.cs index baaebf9..bb6f054 100644 --- a/MP.MONO.UI/Data/CurrentDataService.cs +++ b/MP.MONO.UI/Data/CurrentDataService.cs @@ -345,7 +345,6 @@ namespace MP.MONO.UI.Data return await Task.FromResult(dbResult); } - /// /// Registro esecuzione task schedualto ///