//Verify calendar slots and create reservation states private List <ReservationSlot> CreateReservationSlots(ReservationRequest req, int resID) { List <ReservationSlot> reservationSlots = new List <ReservationSlot>(); foreach (int slot in req.Slots) { ReservationSlotState state = ReservationSlotState.INITIATED; CalendarSlot calendarSlot; if (_calendar.TryGetValue(slot, out calendarSlot)) { if (calendarSlot.State == CalendarSlotState.ASSIGNED) { state = ReservationSlotState.ABORTED; } } else { calendarSlot = new CalendarSlot(); calendarSlot.SlotNum = slot; calendarSlot.State = CalendarSlotState.FREE; _calendar[slot] = calendarSlot; Log.Debug(_userName, "Creating new calendar entry. Slot: " + calendarSlot.SlotNum + ". State: " + calendarSlot.State); } Monitor.Enter(calendarSlot); if (calendarSlot.State == CalendarSlotState.FREE) { calendarSlot.State = CalendarSlotState.ACKNOWLEDGED; } Monitor.Exit(calendarSlot); calendarSlot.WaitingBook.Add(resID); ReservationSlot rs = new ReservationSlot(resID, slot, state); reservationSlots.Add(rs); } return(reservationSlots); }
public ReservationSlot(int reservationID, int slotID, ReservationSlotState state) { this.ReservationID = reservationID; this.SlotID = slotID; this.State = state; }