private bool?ExecHourlyPeriods(HourlyPeriods hourlyPeriods, DateTime dataAtt, ref string firmaEsecuzione) { if (hourlyPeriods == null) { Log.main.Add(new Mess(LogType.Warn, Log.main.warnUserText, "oggetto hourlyPeriods a null ma isPeriodicCycleEnabled a true")); return(null); //Non ci sono filtri per periodi di orari quindi torno null } if (hourlyPeriods.Count == 0) { return(null); } DateTime oraInizio = DateTime.MinValue, oraFine = DateTime.MinValue; bool esitoControllo = false; foreach (var periodo in hourlyPeriods) { oraInizio = new DateTime(dataAtt.Year, dataAtt.Month, dataAtt.Day, periodo.Da.Ora, periodo.Da.Minuti, periodo.Da.Secondi, periodo.Da.Millesimi); oraFine = new DateTime(dataAtt.Year, dataAtt.Month, dataAtt.Day, periodo.A.Ora, periodo.A.Minuti, periodo.A.Secondi, periodo.A.Millesimi); if (oraInizio < oraFine) //Significa che l'ora fine non va oltre la mezzanotte, esempio oraInizio = 20:00 - oraFine = 23:50 { if (dataAtt >= oraInizio && dataAtt <= oraFine) { esitoControllo = true; } } else if (oraInizio > oraFine) { if (dataAtt >= oraInizio || dataAtt <= oraFine) { esitoControllo = true; } } //Significa che l'ora fine VA OLTRE la mezzanotte, esempio oraInizio = 20:00 - oraFine = 00:30 else { //Date uguali Log.main.Add(new Mess(LogType.Warn, Log.main.warnUserText, "Inserite date identiche nel periodo orario")); if (dataAtt == oraInizio) { esitoControllo = true; } } if (esitoControllo == true) { break; } } firmaEsecuzione += "giorno:" + oraInizio.ToString("dd/MM/yyyy") + ";oraInizio:" + oraInizio.ToString("HH:mm:ss.ff") + ";oraFine:" + oraFine.ToString("HH:mm:ss.ff") + "|"; return(esitoControllo); }
//Public Sub New() 'Questo costruttore serve per fare un nuovo ogg prima del deserializzatore? //End Sub /// <summary> /// </summary> /// <param name="periodicCycle">Se valorizzato verrà eseguita non più di una volta ogni unità di periodicita, es perdiocità settimanale = al massimo 1 volta a settimana</param> /// <param name="intervalloVerificaMs">Se 0 non verrà scatenato l'evento "Esegui" in automatico ma si dovrà richiamare il metodo Eseguibile per sapere se si ha il permesso dello scheduler</param> public SchedulerM(Periodicity periodicCycle = null, HourlyPeriods hourlyPeriods = null, WeekDays weekDays = null, MonthsAndDays monthsAndDays = null, YearWeeks yearWeeks = null, YearDays yearDays = null, WeekDay weekStartsDay = WeekDay.Monday, UInt32 intervalloVerificaMs = 0) { //Creo gli oggetti per far in modo che i vari dataGrid abbiano gli oggetti su cui fare il binding this.PeriodicCycle = periodicCycle; this.HourlyPeriods = hourlyPeriods; this.WeekDays = weekDays; this.MonthsAndDays = monthsAndDays; this.YearWeeks = yearWeeks; this.YearDays = yearDays; this.WeekStartsDay = weekStartsDay; this.CheckIntervalMs = intervalloVerificaMs; this.lastTimeExec = DateTime.MinValue; this.firmeUltimeEsecuzione = new List <Tuple <DateTime, String> >(); tmrCheckIfExecutable.Elapsed += TmrCheckIfExecutable_Elapsed; }
private bool?ExecHourlyPeriods(HourlyPeriods hourlyPeriods, DateTime dataAtt) { string tmp = ""; return(ExecHourlyPeriods(hourlyPeriods, dataAtt, ref tmp)); }