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"); }
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; } }