Esempio n. 1
0
 public Periodicity(PeriodicUnit unit, bool isEveryFewUnitEnabled = false, UInt16 everyFewUnit = 1, bool isOnOffUnitSeriesEnabled = false, OnOffSeries onOffUnitSeries = null)
 { //BindingList(Of Tuple(Of UInt16, UInt16)) = Nothing) 'Non effettuo la verifica diei valori di ogniTotUnità e serieOnOffDiUnità
     this.Unit = unit;
     this.IsEveryFewUnitEnabled    = isEveryFewUnitEnabled;
     this.EveryFewUnit             = everyFewUnit;
     this.IsOnOffUnitSeriesEnabled = isOnOffUnitSeriesEnabled;
     this.OnOffUnitSeries          = onOffUnitSeries == null ? new OnOffSeries() : onOffUnitSeries;
     indiceUltimaEsec  = -1;
     nrUnitàUltimaEsec = 0;
 }
Esempio n. 2
0
        private bool VSE_Algo(PeriodicUnit unita, DateTime ultimaEsecuzione, DateTime dataAttuale, WeekDay giornoInizioSett, int NrUnitàProssimaEsec, ref string firmaEsecuzione)
        {
            if (ultimaEsecuzione == DateTime.MinValue)
            {
                return(true);
            }
            //ATTENZIONE da qui in poi il Return True deve stare solo alla fine

            DateTime dataMinProssEsecuzione = DateTime.MinValue;

            switch (unita)
            {
            case PeriodicUnit.Daily:
                dataMinProssEsecuzione = new DateTime(ultimaEsecuzione.Year, ultimaEsecuzione.Month, ultimaEsecuzione.Day).AddDays(NrUnitàProssimaEsec);     //la parte time deve essere 00:00:00.000
                if (dataAttuale < dataMinProssEsecuzione)
                {
                    return(false);
                }
                break;

            case PeriodicUnit.Weekly:
                int giorniPerInizioSettPross = (int)giornoInizioSett - (int)ultimaEsecuzione.DayOfWeek;

                if (giorniPerInizioSettPross < 1)
                {
                    giorniPerInizioSettPross += 7;
                }

                //If giorniPerInizioSettPross < 0 Then
                //    giorniPerInizioSettPross = Math.Abs(giorniPerInizioSettPross)
                //ElseIf giorniPerInizioSettPross = 0 Then
                //    giorniPerInizioSettPross = 7
                //End If

                int giorniMancanti = giorniPerInizioSettPross + (7 * (NrUnitàProssimaEsec - 1));                                                    //(ogniTotUnità - 1) poichè addizionando giorniPerInizioSettPross già salto di una settimana

                dataMinProssEsecuzione = new DateTime(ultimaEsecuzione.Year, ultimaEsecuzione.Month, ultimaEsecuzione.Day).AddDays(giorniMancanti); //la parte time deve essere 00:00:00.000

                if (dataAttuale < dataMinProssEsecuzione)
                {
                    return(false);
                }
                break;

            case PeriodicUnit.Monthly:
                int meseProssimo = ultimaEsecuzione.Month + NrUnitàProssimaEsec;
                int annoProssimo = ultimaEsecuzione.Year;

                while (meseProssimo > 12)
                {
                    meseProssimo -= 12;
                    annoProssimo += 1;
                }

                dataMinProssEsecuzione = new DateTime(annoProssimo, meseProssimo, 1);     //la parte time deve essere 00:00:00.000

                if (dataAttuale < dataMinProssEsecuzione)
                {
                    return(false);
                }
                break;

            case PeriodicUnit.Yearly:
                dataMinProssEsecuzione = new DateTime(ultimaEsecuzione.Year + NrUnitàProssimaEsec, 1, 1);     //la parte time deve essere 00:00:00.000
                if (dataAttuale < dataMinProssEsecuzione)
                {
                    return(false);
                }
                break;

            default:
                Log.main.Add(new Mess(LogType.ERR, Log.main.errUserText, "Valore disatteso per unità:<" + unita.ToString() + ">"));
                break;
            }

            firmaEsecuzione += "data:" + dataMinProssEsecuzione + "|";
            return(true);
        }