public int GetAvailableTerms(Session openedSession, DateTime date, RemainingSession remainingSession) { var day = date.DayOfWeek; var startTime = date.TimeOfDay; Session nextSession = null; var sessions = SessionDao.FindByScheduleId(LastOpenedSchedule.Id); foreach (var session in sessions) { // sesion is on the same day or in same classroom if (session.Day == day && session.Classroom.Id == Classroom.Id) { var sessionStart = session.Time.TimeOfDay; var sessionEnd = sessionStart.Add(new TimeSpan(0, Subject.TermLenght * session.Terms, 0)); if (openedSession != null && openedSession.Time.TimeOfDay.CompareTo(sessionStart) == 0) { continue; } if (startTime.CompareTo(sessionStart) >= 0 && startTime.CompareTo(sessionEnd) < 0) { return(-1); } if (startTime.CompareTo(sessionStart) < 0) { if (nextSession == null || sessionStart.CompareTo(nextSession.Time.TimeOfDay) < 0) { nextSession = session; } } } } TimeSpan diff; if (nextSession != null) { var nextSessionStart = nextSession.Time.TimeOfDay; diff = nextSessionStart - startTime; } else { var maxTimeSpan = new TimeSpan(22, 0, 0); diff = maxTimeSpan - startTime; } var diffMinutes = diff.TotalMinutes; var maxTerms = (int)(diffMinutes / Subject.TermLenght); if (openedSession != null) { return(maxTerms > remainingSession.RemainingTerms + openedSession.Terms ? remainingSession.RemainingTerms + +openedSession.Terms : maxTerms); } return(maxTerms > remainingSession.RemainingTerms ? remainingSession.RemainingTerms : maxTerms); }
private void Schedule_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("myFormat")) { _dragData = e.Data.GetData("myFormat") as RemainingSession; var t = new Thread(MimicMouseClick); t.SetApartmentState(ApartmentState.STA); t.Start(); } }
public SessionDetails(MainWindowViewModel mainWindowViewModel, ScheduleAppointmentCollection scheduleAppointments, int avaibleTerms, DateTime startTime, RemainingSession dragData) { _adding = true; _appointments = scheduleAppointments; _viewModel = new SessionDetailsViewModel(dragData.Subject.MinimumTermsPerSession, avaibleTerms); DataContext = _viewModel; _remainingSession = dragData; _mainWindowViewModel = mainWindowViewModel; _viewModel.Session.Subject = dragData.Subject; _viewModel.Session.Classroom = mainWindowViewModel.Classroom; _viewModel.Session.Day = startTime.DayOfWeek; _viewModel.Session.Time = startTime; _viewModel.Session.Schedule = mainWindowViewModel.LastOpenedSchedule; InitializeComponent(); DeleteButton.Visibility = Visibility.Collapsed; }