public void ContainsDateFrame() { var _openHours = new List <OpenHours>() { new OpenHours() { DayId = 2, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 2, StartingAt = new TimeSpan(16, 00, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 3, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 3, StartingAt = new TimeSpan(16, 00, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 4, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 4, StartingAt = new TimeSpan(16, 00, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 5, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 5, StartingAt = new TimeSpan(16, 00, 0), Duration = new TimeSpan(4, 0, 0) }, new OpenHours() { DayId = 6, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(11, 30, 0) }, new OpenHours() { DayId = 0, StartingAt = new TimeSpan(8, 30, 0), Duration = new TimeSpan(4, 30, 0) } }; var today = new DateTime(2018, 5, 17, 12, 11, 0); //Jueves Mediodia var pickUpTime = new DateTime(2018, 5, 17, 19, 45, 0); // /************* Get Pick Up Option *******************/ var openSlots = WorkingHours.GetOpenSlots(pickUpTime, _openHours, new List <PublicHoliday>(), new List <Vacation>()); var compatibleHours = WorkingHours.GetCompatibleOpenSlots(openSlots, null, today); /************* Get Pick Up Option *******************/ var result = WorkingHours.ContainsDateFrame(compatibleHours, new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 17, 11, 15, 0), new TimeSpan(1, 15, 0))); Assert.IsFalse(result); }
public void CompatibleSlotsContainsDateFrame() { var compatibleOpenSlots = new List <KeyValuePair <DateTime, TimeSpan> >() { new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 4, 29, 9, 0, 0), new TimeSpan(4, 0, 0)), //Domingo new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 1, 8, 30, 0), new TimeSpan(4, 0, 0)), //Martes new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 1, 16, 0, 0), new TimeSpan(4, 0, 0)), //Martes new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 2, 8, 30, 0), new TimeSpan(4, 0, 0)), //Miercoles new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 2, 16, 0, 0), new TimeSpan(4, 0, 0)) //Miercoles }; var selectedtimeframe = new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 4, 29, 9, 0, 0), new TimeSpan(4, 0, 0)); //Domingo, pero mas temprano var result = WorkingHours.ContainsDateFrame(compatibleOpenSlots, selectedtimeframe); Assert.IsTrue(result); }
public void CompatibleSlotsDoesntContainsDateFrame() { var compatibleOpenSlots = new List <KeyValuePair <DateTime, TimeSpan> >() { new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 4, 29, 9, 0, 0), new TimeSpan(4, 0, 0)), //Domingo new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 1, 8, 30, 0), new TimeSpan(4, 0, 0)), //Martes new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 1, 16, 0, 0), new TimeSpan(4, 0, 0)), //Martes new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 2, 8, 30, 0), new TimeSpan(4, 0, 0)), //Miercoles new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 5, 2, 16, 0, 0), new TimeSpan(4, 0, 0)) //Miercoles }; var selectedtimeframe = new KeyValuePair <DateTime, TimeSpan>(new DateTime(2018, 4, 29, 13, 1, 0), new TimeSpan(1, 0, 0)); //Domingo, pero fuera de horario de trabajo var result = WorkingHours.ContainsDateFrame(compatibleOpenSlots, selectedtimeframe); Assert.IsFalse(result); }
public ShoppingCartPickUpDate GetPickUpDate(string bookingId) { bookingId = bookingId ?? _cartSession.BookingId; var result = _appDbContext.ShoppingCartPickUpDates.LastOrDefault(x => x.BookingId == bookingId); var prepTime = GetPreparationTime(bookingId); var discount = GetDiscount(bookingId); var openSlots = _calendarRepository.GetPickUpOption(prepTime, discount); var defaultOption = openSlots.First(); if (result == null) { return(InsertPickUpDate(bookingId, defaultOption, true, "")); } else { var validDate = WorkingHours.ContainsDateFrame(openSlots, new KeyValuePair <DateTime, TimeSpan>(result.From, result.To)); if (!validDate) { if (result.UserSubmitted) { var message = defaultOption.Key.Date == result.From.Date ? "Se ajustó la hora de entrega." : "La fecha que elegiste ya no es válida y fue cambiada."; var userSubmitted = defaultOption.Key.Date == result.From.Date; return(InsertPickUpDate(bookingId, defaultOption, userSubmitted, message)); } else { result.From = defaultOption.Key; result.To = defaultOption.Value; _appDbContext.ShoppingCartPickUpDates.Update(result); _appDbContext.SaveChanges(); return(result); } } } return(result); }