/// <summary> /// Just try add the talk gracefully /// </summary> /// <param name="talk"></param> /// <returns></returns> public bool TryAddTalk(SessionTalk talk) { // Let us try to fit the talk in the morning. if (MorningCurrentSlotPosition < LunchStartMinutes && MorningRemainingMinutes >= talk.Minutes) { // Just do some basic calculation to look smart //talk.Time = DateTime.Today.AddMinutes(MorningCurrentSlotPosition); //talk.TimeString = talk.Time.ToString(AppConstants.TimeFormat); MorningSessionTalks.Add(talk); MorningCurrentSlotPosition += talk.Minutes; MorningRemainingMinutes -= talk.Minutes; return(true); } // try adding to noon slot (Sleepy Time) if (NoonCurrentSlotPostion < MaxNetworkMinutes && NoonRemainingMinutes >= talk.Minutes) { // Again just being smart //talk.Time = DateTime.Today.AddMinutes(NoonCurrentSlotPostion); //talk.TimeString = talk.Time.ToString(AppConstants.TimeFormat); talk.IsNoonSession = true; AfterNoonSessionTalks.Add(talk); NoonCurrentSlotPostion += talk.Minutes; NoonRemainingMinutes -= talk.Minutes; return(true); } return(false); }
/// <summary> /// Remove the talk from Track, yay it has better place in another track /// </summary> /// <param name="talk"></param> public void RemoveTalk(SessionTalk talk) { if (talk.IsNoonSession) { if (AfterNoonSessionTalks.Any(t => t.TalkID == talk.TalkID)) { NoonCurrentSlotPostion -= talk.Minutes; NoonRemainingMinutes = +talk.Minutes; AfterNoonSessionTalks.Remove(talk); } } else { if (MorningSessionTalks.Any(t => t.TalkID == talk.TalkID)) { MorningCurrentSlotPosition -= talk.Minutes; MorningRemainingMinutes += talk.Minutes; MorningSessionTalks.Remove(talk); } } }