Exemple #1
0
        public static List <DateTime> GetPossibleTimeSlots(DateTime date, TableAvailability availability)
        {
            var possibleTimeSlots = new List <DateTime>();

            int firstTimeSlotDayOfWeek = availability.FirstTimeSlotDayOfWeek;
            int lastTimeSlotDayOfWeek  = availability.LastTimeSlotDayOfWeek;
            int dayDifference          = 0;

            while (firstTimeSlotDayOfWeek != lastTimeSlotDayOfWeek)
            {
                dayDifference++;
                firstTimeSlotDayOfWeek++;
                if (firstTimeSlotDayOfWeek == 7)
                {
                    firstTimeSlotDayOfWeek = 0;
                }
            }

            var nextTimeSlot = new DateTime(date.Year, date.Month, date.Day, availability.FirstTimeSlot.Hour, availability.FirstTimeSlot.Minute, 0);
            var lastTimeSlot = new DateTime(date.Year, date.Month, date.Day, availability.LastTimeSlot.Hour, availability.LastTimeSlot.Minute, 0).AddDays(dayDifference);

            while (nextTimeSlot <= lastTimeSlot)
            {
                possibleTimeSlots.Add(nextTimeSlot);
                nextTimeSlot = nextTimeSlot.AddMinutes(30);
            }

            return(possibleTimeSlots);
        }
Exemple #2
0
        public void GetPossibleTimeSlotsOverMonthChange()
        {
            // Arrange
            var availability = new TableAvailability()
            {
                FirstTimeSlotDayOfWeek = 1, LastTimeSlotDayOfWeek = 2, FirstTimeSlot = new DateTime(2014, 1, 31, 19, 00, 00), LastTimeSlot = new DateTime(2014, 12, 12, 1, 00, 00)
            };
            var sourceDate = new DateTime(2014, 1, 31);

            // Act
            List <DateTime> possibleTimeSlots = TimeSlotFactory.GetPossibleTimeSlots(sourceDate, availability);

            // Assert
            // 19:00 / 19:30 / 20:00 / 20:30 / 21:00 / 21:30 / 22:00 / 22:30 / 23:00 / 23:30 / 00:00 / 00:30 / 01:00
            Assert.AreEqual(13, possibleTimeSlots.Count);
            for (int i = 0; i < possibleTimeSlots.Count; i++)
            {
                if (i < 10)
                {
                    Assert.AreEqual(31, possibleTimeSlots[i].Day);
                    Assert.AreEqual(1, possibleTimeSlots[i].Month);
                }
                else
                {
                    Assert.AreEqual(1, possibleTimeSlots[i].Day);
                    Assert.AreEqual(2, possibleTimeSlots[i].Month);
                }
            }
        }
Exemple #3
0
 public static TableAvailabilityDto ToDto(this TableAvailability availability)
 {
     return(new TableAvailabilityDto
     {
         FirstTimeSlot = availability.FirstTimeSlot,
         FirstTimeSlotDayOfWeek = availability.FirstTimeSlotDayOfWeek,
         LastTimeSlot = availability.LastTimeSlot,
         LastTimeSlotDayOfWeek = availability.LastTimeSlotDayOfWeek,
         Id = availability.Id
     });
 }
Exemple #4
0
        public void GetPossibleTimeSlotsEvening()
        {
            // Arrange
            var availability = new TableAvailability()
            {
                FirstTimeSlotDayOfWeek = 1, LastTimeSlotDayOfWeek = 1, FirstTimeSlot = new DateTime(2014, 12, 12, 19, 00, 00), LastTimeSlot = new DateTime(2014, 12, 12, 23, 00, 00)
            };
            var sourceDate = new DateTime(2014, 2, 20);

            // Act
            List <DateTime> possibleTimeSlots = TimeSlotFactory.GetPossibleTimeSlots(sourceDate, availability);

            // Assert
            // 19:00 / 19:30 / 20:00 / 20:30 / 21:00 / 21:30 / 22:00 / 22:30 / 23:00
            Assert.AreEqual(9, possibleTimeSlots.Count);
        }
Exemple #5
0
        public void SaturdayToSundayTimeSlots()
        {
            // Arrange
            var availability = new TableAvailability()
            {
                FirstTimeSlotDayOfWeek = 6, LastTimeSlotDayOfWeek = 0, FirstTimeSlot = new DateTime(2014, 12, 12, 19, 00, 00), LastTimeSlot = new DateTime(2014, 12, 12, 02, 00, 00)
            };
            var sourceDate = new DateTime(2014, 2, 20);

            // Act
            List <DateTime> possibleTimeSlots = TimeSlotFactory.GetPossibleTimeSlots(sourceDate, availability);

            // Assert
            // 19:00 / 19:30 / 20:00 / 20:30 / 21:00 / 21:30 / 22:00 / 22:30 / 23:00 / 23:30 / 00:00 / 00:30 / 01:00 / 01:30 / 02:00
            Assert.AreEqual(15, possibleTimeSlots.Count);
        }
Exemple #6
0
 public void Init()
 {
     instance = new TableAvailability();
 }