コード例 #1
0
        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);
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
 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;
 }