Update componente taskScheduler x ricalcolo + corretto

This commit is contained in:
Samuele Locatelli
2025-06-05 09:45:54 +02:00
parent 7b2a51c87f
commit f7cdb29a4e
9 changed files with 45 additions and 38 deletions
+36 -29
View File
@@ -28,49 +28,56 @@ namespace MP.TaskMan.Controllers
public DateTime CalcNextExe(TaskListModel taskRec)
{
DateTime dtNext = DateTime.Today;
DateTime adesso = DateTime.Now;
int maxIter = 1000;
try
{
// prendo come partenza la DATA di fine a cui aggiungo l'ora/minuti schedulata precedentemente
TimeSpan oraSched = taskRec.DtNextExec.Subtract(taskRec.DtNextExec.Date);
DateTime baseDT = taskRec.DtLastExec.Date.Add(oraSched);
// calcolo next exec da tipo...
switch (taskRec.Freq)
// calcolo next exec da tipo... con ciclo fino a quando supero dataora attuale...
while (dtNext < adesso && maxIter > 0)
{
case TaskFreqType.ND:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
switch (taskRec.Freq)
{
case TaskFreqType.ND:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
case TaskFreqType.Sec:
dtNext = baseDT.AddSeconds(taskRec.Cad);
break;
case TaskFreqType.Sec:
dtNext = baseDT.AddSeconds(taskRec.Cad);
break;
case TaskFreqType.Min:
dtNext = baseDT.AddMinutes(taskRec.Cad);
break;
case TaskFreqType.Min:
dtNext = baseDT.AddMinutes(taskRec.Cad);
break;
case TaskFreqType.Hour:
dtNext = baseDT.AddHours(taskRec.Cad);
break;
case TaskFreqType.Hour:
dtNext = baseDT.AddHours(taskRec.Cad);
break;
case TaskFreqType.Day:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
case TaskFreqType.Day:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
case TaskFreqType.Week:
dtNext = baseDT.AddDays(7 * taskRec.Cad);
break;
case TaskFreqType.Week:
dtNext = baseDT.AddDays(7 * taskRec.Cad);
break;
case TaskFreqType.Month:
dtNext = baseDT.AddMonths(taskRec.Cad);
break;
case TaskFreqType.Month:
dtNext = baseDT.AddMonths(taskRec.Cad);
break;
case TaskFreqType.Year:
dtNext = baseDT.AddYears(taskRec.Cad);
break;
case TaskFreqType.Year:
dtNext = baseDT.AddYears(taskRec.Cad);
break;
default:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
default:
dtNext = baseDT.AddDays(taskRec.Cad);
break;
}
baseDT = dtNext;
maxIter--;
}
}
catch (Exception exc)