コード例 #1
0
        public static double Costo(this Temporizador value, double costoAnuncio, int cantidadAnuncios, DateTime utcCuba)
        {
            double   val   = 0;
            int      etapa = value.Etapa == 0 ? cantidadAnuncios : value.Etapa;
            int      intervaloMinutosTotal = value.IntervaloHoras * 60 + value.IntervaloMinutos;
            TimeSpan time                = value.HoraFin - value.HoraInicio;
            int      minutosEjecucion    = (int)time.TotalMinutes;
            int      cantidadEjecuciones = minutosEjecucion / intervaloMinutosTotal;
            double   costoDiario         = costoAnuncio * cantidadEjecuciones * etapa;

            DateTime tmp = utcCuba;

            for (int i = 0; i < 31; i++)
            {
                if (value.IsValidDay(tmp))
                {
                    val += costoDiario;
                }
                tmp = tmp.AddDays(1);
                if (tmp.Month != utcCuba.Month)
                {
                    return(val);
                }
            }

            throw new Exception("Temporizador Costo> Month Never Change");
        }
コード例 #2
0
        public TemporizadorDTO(Temporizador t, int cantidadAnuncios, double costoAnuncio)
        {
            Id        = t.Id;
            Nombre    = t.Nombre;
            Lunes     = t.Lunes;
            Martes    = t.Martes;
            Miercoles = t.Miercoles;
            Jueves    = t.Jueves;
            Viernes   = t.Viernes;
            Sabado    = t.Sabado;
            Domingo   = t.Domingo;

            HoraInicio = t.HoraInicio;
            HoraFin    = t.HoraFin;
            Next       = t.NextExecution;

            IntervaloHoras   = t.IntervaloHoras;
            IntervaloMinutos = t.IntervaloMinutos;

            Etapa = t.Etapa;

            GrupoId = t.GrupoId;
            UserId  = t.UserId;

            DateTime utcCuba = DateTime.Now.ToUtcCuba();

            Enable       = t.Enable;
            UserEnable   = t.UserEnable;
            SystemEnable = t.SystemEnable;
            Ejecutandose = t.IsValidDay(utcCuba);
            GrupoActivo  = t.Grupo.Activo;

            Costo = t.Costo(costoAnuncio, cantidadAnuncios, utcCuba);

            TimeSpan now = utcCuba.TimeOfDay;

            if (HoraInicio <= now && now <= HoraFin && Ejecutandose)
            {
                Ejecutandose = true;
            }
            else
            {
                Ejecutandose = false;
            }
        }