/// <summary>
        /// We handle the RoutedCommand CanExecuteEvent which is triggered by the DataGrid
        /// Interested in the Delete command so that we can ask for permission to delete
        /// the Class
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OnCanExecuteRoutedEventHandler(object sender, CanExecuteRoutedEventArgs e)
        {
            RoutedCommand routedCommand = (e.Command as RoutedCommand);

            if (routedCommand != null)
            {
                if (routedCommand.Name == "Delete")
                {
                    if (IsInEditMode)
                    {
                        return;
                    }

                    CloseErrorDetail();

                    CACCCheckInDb.Class aClass = _departmentClassesView.CurrentItem as CACCCheckInDb.Class;
                    string deleteMessage       = String.Format("You have selected the [{0}] class for deletion? Click Yes to delete or No to cancel.",
                                                               aClass.Name);
                    if (MessageBoxResult.No == MessageBox.Show(deleteMessage, "Delete Class", MessageBoxButton.YesNo,
                                                               MessageBoxImage.Question, MessageBoxResult.No))
                    {
                        e.CanExecute = false;
                        e.Handled    = true;
                    }
                }
            }
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void classFromComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CACCCheckInDb.Department selectedDepartment = (CACCCheckInDb.Department)departmentFromComboBox.SelectedItem;
            if (null == selectedDepartment)
            {
                return;
            }
            CACCCheckInDb.Class selectedClass = (CACCCheckInDb.Class)classFromComboBox.SelectedItem;
            if (null == selectedClass)
            {
                ClassFromList.ItemsSource = null;
                return;
            }
            _presenter.GetDataForClassList(selectedDepartment.Name, selectedClass.Name, true);

            if (null != _classToComboBoxView && null != _classToComboBoxView.CurrentItem)
            {
                if (((CACCCheckInDb.Class)_classToComboBoxView.CurrentItem).Id == selectedClass.Id)
                {
                    ChangeStateOfMovementButtons(false);
                }
                else
                {
                    ChangeStateOfMovementButtons(true);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="theClass"></param>
        public void DeleteClass(CACCCheckInDb.Class theClass)
        {
            using (CACCCheckInServiceProxy proxy =
                       new CACCCheckInServiceProxy())
            {
                proxy.Open();

                proxy.DeleteClass(theClass);
            }
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="newClass"></param>
        public void AddClass(CACCCheckInDb.Class newClass)
        {
            using (CACCCheckInServiceProxy proxy =
                       new CACCCheckInServiceProxy())
            {
                proxy.Open();

                proxy.InsertClass(newClass);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void _teacherListView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            try
            {
                CACCCheckInDb.Department selectedDepartment = (CACCCheckInDb.Department)departmentComboBox.SelectedItem;
                CACCCheckInDb.Class      selectedClass      = (CACCCheckInDb.Class)classComboBox.SelectedItem;

                switch (e.Action)
                {
                case NotifyCollectionChangedAction.Add:
                    // Teachers have been added to the Teacher list for selected class.
                    // We will add the teacher to the class.
                    foreach (CACCCheckInDb.PeopleWithDepartmentAndClassView person in e.NewItems)
                    {
                        logger.DebugFormat("Adding teacher [{0} {1}] to class [{2}]",
                                           person.FirstName, person.LastName, selectedClass.Name);

                        person.ClassId        = selectedClass.Id;
                        person.ClassName      = selectedClass.Name;
                        person.ClassRole      = ClassRoles.Teacher;
                        person.DepartmentId   = selectedDepartment.Id;
                        person.DepartmentName = selectedDepartment.Name;

                        _presenter.AddPersonAsTeacherToClass(person, selectedClass);
                    }
                    break;

                case NotifyCollectionChangedAction.Move:
                    break;

                case NotifyCollectionChangedAction.Remove:
                    // Teachers have been removed from the Teacher list for selected class.
                    // We will delete the teacher from the class.
                    foreach (CACCCheckInDb.PeopleWithDepartmentAndClassView person in e.OldItems)
                    {
                        logger.DebugFormat("Removing teacher [{0} {1}] from class [{2}]",
                                           person.FirstName, person.LastName, selectedClass.Name);

                        _presenter.DeletePersonAsTeacherFromClass(person, selectedClass);
                    }
                    break;

                case NotifyCollectionChangedAction.Replace:
                    break;

                case NotifyCollectionChangedAction.Reset:
                    break;
                }
            }
            catch (Exception ex)
            {
                DisplayExceptionDetail(ex);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void getReportButton_Click(object sender, RoutedEventArgs e)
        {
            SaveReportButton.IsEnabled  = false;
            PrintReportButton.IsEnabled = false;

            CACCCheckInDb.Department selectedDepartment =
                (CACCCheckInDb.Department)DepartmentsComboBox.SelectedItem;

            CACCCheckInDb.Class selectedClass =
                (CACCCheckInDb.Class)ClassComboBox.SelectedItem;

            _presenter.GetClassAttendanceInDateRange(selectedDepartment.Id, selectedClass.Id,
                                                     AttendanceStartDate.SelectedDate, AttendanceEndDate.SelectedDate);
        }
        public CACCCheckInDb.Class InsertClass(CACCCheckInDb.Class theClass)
        {
            logger.Debug("Opening DataContext to CACCCheckIn DB.");
            CACCCheckInDb.CACCCheckInDbDataContext db = new CACCCheckInDb.CACCCheckInDbDataContext();
            db.Log = logwriter;

            logger.DebugFormat("Inserting Class: [{0}]", theClass.Name);
            db.Classes.InsertOnSubmit(theClass);

            db.SubmitChanges();

            return(db.Classes.Where(c =>
                                    c.Id.Equals(theClass.Id)).Single <CACCCheckInDb.Class>());
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="classId"></param>
        private void ChangeClassComboTo(Guid classId)
        {
            CACCCheckInDb.Class targetClass = ((List <CACCCheckInDb.Class>)
                                               _classComboBoxView.SourceCollection).Find(c => c.Id.Equals(classId));

            if (null == targetClass)
            {
                _classComboBoxView.MoveCurrentToFirst();
            }
            else
            {
                _classComboBoxView.MoveCurrentTo(targetClass);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void classComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            CACCCheckInDb.Department selectedDepartment = (CACCCheckInDb.Department)departmentComboBox.SelectedItem;
            if (null == selectedDepartment)
            {
                return;
            }
            CACCCheckInDb.Class selectedClass = (CACCCheckInDb.Class)classComboBox.SelectedItem;
            if (null == selectedClass)
            {
                TeacherList.ItemsSource = null;
                return;
            }

            _presenter.GetDataForTeacherList(selectedDepartment.Name, selectedClass.Name);
        }
Beispiel #10
0
        public void DeleteClass(CACCCheckInDb.Class theClass)
        {
            Stopwatch sw = new Stopwatch();

            try
            {
                sw.Start();
                Channel.DeleteClass(theClass);
            }
            finally
            {
                sw.Stop();
                logger.DebugFormat("Call to CACCCheckInService.DeleteClass took [{0}] ms",
                                   sw.ElapsedMilliseconds);
            }
        }
Beispiel #11
0
        public CACCCheckInDb.Class UpdateClass(CACCCheckInDb.Class updatedClass)
        {
            Stopwatch sw = new Stopwatch();

            try
            {
                sw.Start();
                return(Channel.UpdateClass(updatedClass));
            }
            finally
            {
                sw.Stop();
                logger.DebugFormat("Call to CACCCheckInService.UpdateClass took [{0}] ms",
                                   sw.ElapsedMilliseconds);
            }
        }
Beispiel #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void _classToListView_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            CACCCheckInDb.Department selectedToDepartment = (CACCCheckInDb.Department)departmentToComboBox.SelectedItem;
            CACCCheckInDb.Class      selectedToClass      = (CACCCheckInDb.Class)classToComboBox.SelectedItem;

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
                // New members have been added to this class. We will update the class, department
                // details for this person and then update the person in the database.
                // This will effectively remove the person from the previous class.
                foreach (CACCCheckInDb.PeopleWithDepartmentAndClassView person in e.NewItems)
                {
                    logger.DebugFormat("Adding [{0} {1}] to class [{2}]",
                                       person.FirstName, person.LastName, selectedToClass.Name);

                    _presenter.UpdatePersonClassMembership(person, selectedToClass);

                    person.DepartmentId   = selectedToDepartment.Id;
                    person.DepartmentName = selectedToDepartment.Name;
                    person.ClassId        = selectedToClass.Id;
                    person.ClassName      = selectedToClass.Name;
                }
                break;

            case NotifyCollectionChangedAction.Move:
                break;

            case NotifyCollectionChangedAction.Remove:
                foreach (CACCCheckInDb.PeopleWithDepartmentAndClassView person in e.OldItems)
                {
                    logger.DebugFormat("Removing [{0} {1}] from class [{2}]",
                                       person.FirstName, person.LastName, selectedToClass.Name);
                }
                break;

            case NotifyCollectionChangedAction.Replace:
                break;

            case NotifyCollectionChangedAction.Reset:
                break;
            }
        }
        /// <summary>
        /// Will move a person from current class to new class
        /// </summary>
        /// <param name="person"></param>
        /// <param name="newClass"></param>
        public void UpdatePersonClassMembership(CACCCheckInDb.PeopleWithDepartmentAndClassView person,
                                                CACCCheckInDb.Class newClass)
        {
            try
            {
                logger.DebugFormat("Updating class membership for [{0} {1}]",
                                   person.FirstName, person.LastName);

                // Get a reference to ClassMember record for current person
                CACCCheckInDb.ClassMember oldClassMember = (CACCCheckInDb.ClassMember)person;
                // Create a new ClassMember record to move current person to new class
                CACCCheckInDb.ClassMember newClassMember = new CACCCheckInDb.ClassMember();
                // The new ClassId is used along with current ClassRole and PersonId
                newClassMember.ClassId   = newClass.Id;
                newClassMember.ClassRole = oldClassMember.ClassRole;
                newClassMember.PersonId  = oldClassMember.PersonId;

                using (CACCCheckInServiceProxy proxy =
                           new CACCCheckInServiceProxy())
                {
                    proxy.Open();

                    logger.Debug("Calling DeleteClassMember in CACCCheckInService");
                    proxy.DeleteClassMember(oldClassMember);

                    logger.Debug("Calling InsertClassMember in CACCCheckInService");
                    proxy.InsertClassMember(newClassMember);
                }
            }
            catch (Exception ex)
            {
                Debug.Assert(View != null);
                View.ViewDispatcher.BeginInvoke(DispatcherPriority.DataBind,
                                                new DispatcherOperationCallback(
                                                    delegate(object arg)
                {
                    View.DisplayExceptionDetail(ex);
                    return(null);
                }), null);
            }
        }
        public CACCCheckInDb.Class UpdateClass(CACCCheckInDb.Class updatedClass)
        {
            logger.Debug("Opening DataContext to CACCCheckIn DB.");
            CACCCheckInDb.CACCCheckInDbDataContext db = new CACCCheckInDb.CACCCheckInDbDataContext();
            db.Log = logwriter;

            CACCCheckInDb.Class currentClass = (from c in db.Classes
                                                where c.Id.Equals(updatedClass.Id)
                                                select c).Single <CACCCheckInDb.Class>();

            logger.DebugFormat("Updating Class: [{0}]",
                               updatedClass.Name);
            currentClass.DeptId      = updatedClass.DeptId;
            currentClass.Name        = updatedClass.Name;
            currentClass.Description = updatedClass.Description;

            db.SubmitChanges();

            return(db.Classes.Where(c =>
                                    c.Id.Equals(updatedClass.Id)).Single <CACCCheckInDb.Class>());
        }
Beispiel #15
0
        /// <summary>
        /// Whenever a Class in the collection has had its EndEdit
        /// </summary>
        /// <param name="sender"></param>
        private void ClassesItemEndEdit(IEditableObject sender)
        {
            try
            {
                // Get the Class that has been edited. This could be a new
                // class or an edit to existing Class.
                CACCCheckInDb.Class updatedClass = sender as CACCCheckInDb.Class;

                // If the RowTimestamp is null, this must be brand new Class
                // that hasn't been added to the database yet. If not, this
                // must be an update to existing class
                if (updatedClass.RowTimestamp == null)
                {
                    logger.DebugFormat("Adding class [{0}]", updatedClass.Name);

                    AddClass(updatedClass);

                    logger.DebugFormat("Class [{0}] was added.", updatedClass.Name);
                }
                else
                {
                    logger.Debug("Class is being updated.");

                    UpdateClass(updatedClass);

                    logger.DebugFormat("Class [{0}] was updated.", updatedClass.Name);
                }
            }
            catch (Exception ex)
            {
                Debug.Assert(View != null);
                View.ViewDispatcher.BeginInvoke(DispatcherPriority.DataBind,
                                                new DispatcherOperationCallback(
                                                    delegate(object arg)
                {
                    View.DisplayExceptionDetail(ex);
                    return(null);
                }), null);
            }
        }
Beispiel #16
0
        /// <summary>
        /// Retrieves people in selected department and class
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ClassesComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ShowProcessing(true);

            CACCCheckInDb.Department selectedDepartment = (CACCCheckInDb.Department)DepartmentsComboBox.SelectedItem;
            if (null == selectedDepartment)
            {
                return;
            }
            CACCCheckInDb.Class selectedClass = (CACCCheckInDb.Class)ClassesComboBox.SelectedItem;
            if (null == selectedClass)
            {
                PeopleDataGrid.ItemsSource = null;
                return;
            }
            else
            {
                CurrentClass = selectedClass;
            }

            logger.Debug("Getting list of people for department and class.");
            _presenter.GetPeopleByDeptIdAndClassId(selectedDepartment.Id, selectedClass.Id);
        }
        public void DeleteClass(CACCCheckInDb.Class theClass)
        {
            logger.Debug("Opening DataContext to CACCCheckIn DB.");
            CACCCheckInDb.CACCCheckInDbDataContext db = new CACCCheckInDb.CACCCheckInDbDataContext();
            db.Log = logwriter;

            try
            {
                logger.DebugFormat("Attaching Class: [{0}] to DataContext", theClass.Name);
                db.Classes.Attach(theClass);
                logger.DebugFormat("Deleting Class: [{0}]", theClass.Name);
                db.Classes.DeleteOnSubmit(theClass);

                db.SubmitChanges();
            }
            catch (ChangeConflictException ex)
            {
                logger.Error("ChangeConflictException:", ex);
                foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                {
                    occ.Resolve(RefreshMode.OverwriteCurrentValues);
                }
            }
        }
Beispiel #18
0
        /// <summary>
        /// Will add a person as teacher to specified class
        /// </summary>
        /// <param name="person"></param>
        /// <param name="newClass"></param>
        public void AddPersonAsTeacherToClass(CACCCheckInDb.PeopleWithDepartmentAndClassView person,
                                              CACCCheckInDb.Class theClass)
        {
            try
            {
                logger.DebugFormat("Updating class membership for [{0} {1}]",
                                   person.FirstName, person.LastName);

                // Get a reference to ClassMember record for current person
                CACCCheckInDb.ClassMember classMember = (CACCCheckInDb.ClassMember)person;

                // The ClassId is used along with ClassRole to update ClassMember record
                classMember.ClassId   = theClass.Id;
                classMember.ClassRole = ClassRoles.Teacher;

                using (CACCCheckInServiceProxy proxy =
                           new CACCCheckInServiceProxy())
                {
                    proxy.Open();

                    logger.Debug("Calling InsertClassMember in CACCCheckInService");
                    proxy.InsertClassMember(classMember);
                }
            }
            catch (Exception ex)
            {
                Debug.Assert(View != null);
                View.ViewDispatcher.BeginInvoke(DispatcherPriority.DataBind,
                                                new DispatcherOperationCallback(
                                                    delegate(object arg)
                {
                    View.DisplayExceptionDetail(ex);
                    return(null);
                }), null);
            }
        }