public void ActiveForDate_IsActive() { Banner lBanner = new Banner() { Name = "Informacion deportiva", Description = "Noticias del ámbito deportivo nacional de distintas fuentes" }; Schedule lInterval = new Schedule() { Name="Mes de febrero, de lunes a viernes por la mañana",ActiveUntil = new DateTime(2016, 2, 29), ActiveFrom = new DateTime(2016, 2, 1) }; Day lDay1 = new Day() { Id = 1, Value = Days.Lunes }; Day lDay2 = new Day() { Id = 2, Value = Days.Martes }; Day lDay3 = new Day() { Id = 3, Value = Days.Miercoles }; Day lDay4 = new Day() { Id = 4, Value = Days.Jueves }; Day lDay5 = new Day() { Id = 5, Value = Days.Viernes }; lInterval.AddDay(lDay1); lInterval.AddDay(lDay2); lInterval.AddDay(lDay3); lInterval.AddDay(lDay4); lInterval.AddDay(lDay5); TimeSpan time1 = new TimeSpan(8, 0, 0); TimeSpan time2 = new TimeSpan(12, 0, 0); ScheduleEntry lTimeInterval = new ScheduleEntry() { End = time2, Start = time1 }; lInterval.AddTimeInterval(lTimeInterval); lBanner.AddSchedule(DomainServiceLocator.Resolve<IScheduleChecker>(), lInterval); DateTime lDate = new DateTime(2016, 2, 4,20,0,0); bool lResult = lBanner.IsActiveAt(DomainServiceLocator.Resolve<IScheduleChecker>(), lDate); Assert.IsFalse(lResult); }
public void IntersectionWith_InterseccionSoloDeFechas() { Schedule lInterval1 = new Schedule() { ActiveUntil = new DateTime(2016, 2, 20), ActiveFrom = new DateTime(2016, 2, 2) }; Schedule lInterval2 = new Schedule() { ActiveUntil = new DateTime(2016, 2, 26), ActiveFrom = new DateTime(2016, 2, 18) }; Day lDay1 = new Day() { Id = 0, Value = Days.Domingo }; Day lDay2 = new Day() { Id = 1, Value = Days.Lunes }; Day lDay3 = new Day() { Id = 2, Value = Days.Martes }; lInterval1.AddDay(lDay1); lInterval1.AddDay(lDay2); lInterval2.AddDay(lDay3); TimeSpan time1 = new TimeSpan(8, 0, 0); TimeSpan time2 = new TimeSpan(12, 0, 0); TimeSpan time3 = new TimeSpan(18, 0, 0); TimeSpan time4 = new TimeSpan(21, 0, 0); ScheduleEntry lTimeInterval1 = new ScheduleEntry() { End = time2, Start = time1 }; //8 a 12 ScheduleEntry lTimeInterval2 = new ScheduleEntry() { End = time3, Start = time2 };//12 a 18 ScheduleEntry lTimeInterval3 = new ScheduleEntry() { End = time4, Start = time3 };//18 a 21 lInterval1.AddTimeInterval(lTimeInterval1); lInterval1.AddTimeInterval(lTimeInterval2); lInterval2.AddTimeInterval(lTimeInterval3); bool lResult = lInterval1.IntersectsWith(lInterval2); Assert.IsFalse(lResult); }
public void ActiveForDate_IsActive() { Campaign lCampaign = new Campaign() { Name = "Venta de cactus",Description="Publicidad para la venta de cactus para el vivero XX" }; Schedule lInterval = new Schedule() {Name="Miércoles y Jueves de la primera quincena de febrero", ActiveUntil = new DateTime(2016, 2, 15), ActiveFrom = new DateTime(2016, 2, 1) }; Day lDay1 = new Day() { Id = 4, Value = Days.Miercoles }; Day lDay2 = new Day() { Id = 5, Value = Days.Jueves }; lInterval.AddDay(lDay1); lInterval.AddDay(lDay2); TimeSpan time1 = new TimeSpan(18, 0, 0); TimeSpan time2 = new TimeSpan(21, 0, 0); ScheduleEntry lTimeInterval = new ScheduleEntry() { End = time2, Start = time1 }; lInterval.AddTimeInterval(lTimeInterval); lCampaign.AddSchedule(DomainServiceLocator.Resolve<IScheduleChecker>(), lInterval); DateTime lDate = new DateTime(2016, 2, 3,19,0,0); bool lResult = lCampaign.IsActiveAt(DomainServiceLocator.Resolve<IScheduleChecker>(), lDate); // Assert.IsTrue(lResult); /* var serv1 = DomainServiceLocator.Resolve<IScheduleChecker>(); var serv2 = DomainServiceLocator.Resolve<IScheduleChecker>(); var serv3 = BusinessServiceLocator.Resolve<>(); var serv4 = BusinessServiceLocator.Resolve<DateIntervalService>(); Assert.AreSame(serv1, serv2); Assert.AreNotSame(serv3, serv4);*/ }
public virtual void RemoveTimeInterval(ScheduleEntry pInterval) { this.TimeIntervals.Remove(pInterval); }
private bool CanBeAdded(ScheduleEntry pInterval)//para ser agregado { bool lResult = true; int i = this.TimeIntervals.Count - 1; while ((lResult == true) && (i >= 0)) { ScheduleEntry lInterval = this.TimeIntervals[i]; if (pInterval.IntersectsWith(lInterval)) { lResult = false; } i--; } return lResult; }
public virtual void RemoveTimeInterval(ScheduleEntry pInterval) { this.TimeIntervals.Remove(pInterval); }
public virtual void AddTimeInterval(ScheduleEntry pInterval) { if (pInterval == null) { throw new EntidadNulaException("El intervalo de tiempo indicado es nulo"); } if (!this.CanBeAdded(pInterval)) { throw new IntervaloTiempoInvalidoException("El intervalo de tiempo indicado no puede ser agregado al Intervalo de fechas debido a que se superpone con un intervalo de tiempo existente"); } else { this.TimeIntervals.Add(pInterval); //TODO excepción si no es valido por interseccion, si es intervalo nulo. irian arriba } }
public bool IntersectsWith(ScheduleEntry pInterval) { bool lResult = false; if ((pInterval.Start > this.iStartTime) && (pInterval.Start < this.iEndTime)) // hora de inicio de pInterval entre intervalo que llama { lResult = true; } else if ((pInterval.End > this.iStartTime) //hora de fin de pInteval entre intervalo que llama && (pInterval.End < this.iEndTime)) { lResult = true; } else if ((this.iStartTime > pInterval.Start) //hora de inicio de intervalo que llama entre pInterval && (this.iStartTime < pInterval.Start)) { lResult = true; } else if ((this.iEndTime > pInterval.Start) //hora de fin de intervalo que llama entre pInterval && (this.iEndTime < pInterval.End)) { lResult = true; } else if ((this.iStartTime == pInterval.Start)//intervalos iguales &&(this.iEndTime == pInterval.End)) { lResult = true; } return lResult; }