Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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);*/




        }
Exemplo n.º 4
0
 public virtual void RemoveTimeInterval(ScheduleEntry pInterval)
 {
     this.TimeIntervals.Remove(pInterval);
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 public virtual void RemoveTimeInterval(ScheduleEntry pInterval)
 {
     this.TimeIntervals.Remove(pInterval);
 }
Exemplo n.º 7
0
 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
     }
 }
Exemplo n.º 8
0
 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;
 }