private bool ManageConflict(PriorityMeeting meetingRequest, PriorityMeetingCollection currentPriortyMeetings) { bool canSetupMeeting = false; foreach (PriorityMeeting meeting in currentPriortyMeetings) { if (meetingRequest.Priority > meeting.Priority) { // Slice out the current meeting and replace with the new one. this.PriorityMeetings.Remove(meeting); this.SliceIfPossible(meetingRequest, meeting); canSetupMeeting = true; } } return(canSetupMeeting); }
public bool BookMeeting(PriorityMeeting meetingRequest) { bool canBookMeeting = false; PriorityMeetingCollection currentPriorityMeetings = this.PriorityMeetings.GetMeetingsByTimeRange(meetingRequest.fromDateTime, meetingRequest.toDateTime); bool isHigherPriority = this.PriorityMeetings.IsHigherPriorityExists(meetingRequest); if (!isHigherPriority) { canBookMeeting = true; this.PriorityMeetings.Add(meetingRequest); } else { // Manage the conflict and slice the priorities. canBookMeeting = this.ManageConflict(meetingRequest, currentPriorityMeetings); } return(canBookMeeting); }
public PriorityCalendar() { this.PriorityMeetings = new PriorityMeetingCollection(); }