public void LoadBookingsByDay(string employeeId, DateTime from, DateTime till) { DateTime date = from; BookingsByDay.Clear(); while (date <= till) { var bookings = bookingDataService.GetByEmployeeIdAndDate(employeeId, date, date); BookingDay bd = new BookingDay(); foreach (var item in bookings) { if (item.Deleted != true) { bd.Bookings.Add(item); } } bd.sumHours(); if (bd.BookedHours != TimeSpan.Zero) { BookingsByDay.Add(bd); } date = date.AddDays(1); } }
public void AddBooking(UserId userId, int day, Slot slot) { if (UserCanBook(this, userId) && IsBookableDay(Year, Month, day)) { if (BookingDays.ContainsKey(day)) { var bookingDay = BookingDays[day]; if (SlotIsOpen(bookingDay, slot)) { bookingDay.AddBooking(slot, userId); } else { throw new SlotIsClosedException(); } } else { var bookingDayId = BookingDayId.From(new DateTime(Year, Month, day)); var bookingDay = new BookingDay(bookingDayId, new Dictionary <Slot, UserId>()); bookingDay.AddBooking(slot, userId); BookingDays.Add(day, bookingDay); } } else { throw new UserHasOverbookedException(); } }
private static BookingDayDataModel From(BookingDay entity) { var dataModelId = entity.Id.Value; var dataModel = new BookingDayDataModel { Id = dataModelId, Bookings = From(entity.Bookings) }; return(dataModel); }
private static BookingDay From(BookingDayDataModel dataModel) { if (dataModel == null) { return(null); } var entityId = BookingDayId.With(dataModel.Id); var entity = new BookingDay(entityId, From(dataModel.Bookings)); return(entity); }
public static bool SlotIsOpen(BookingDay bookingDay, Slot slot) { return(!bookingDay.Bookings.ContainsKey(slot)); }