public override async Task <Student[]> GetStudentWithExceptedAddedStudent(string condition, string searchCriteria,
                                                                                  CancellationToken token)
        {
            return(await Task.Factory.StartNew(() =>
            {
                var students = (IEnumerable <Student>)EFGenericRepository.Get <Student>(s => s.GroupId == null).ToArray();

                var existGroup = EFGenericRepository.Get <Group>(g => g.Name == groupBoard.GetNameOfGroup).FirstOrDefault();
                var currentStudent = existGroup?.Students;
                if (currentStudent != null)
                {
                    students = students.Union(currentStudent);
                }

                if (condition != string.Empty)
                {
                    students = students.Where(searchCriteria, condition);
                }

                if (groupBoard.AddedStudentControlCollection.Count == 0)
                {
                    return students.ToArray();
                }

                var addedStudents = groupBoard.AddedStudentControlCollection
                                    .Cast <IStudentView>()
                                    .Select(s => EFGenericRepository.Find <Student>(s.Id));

                return students.Except(addedStudents).ToArray();
            }, token));
        }
        private bool GroupBoardSecond_AcceptClick()
        {
            var students = new List <Student>();

            foreach (IStudentView studentView in _groupBoardSecond.AddedStudentControlCollection)
            {
                students.Add(EFGenericRepository.Find <Student>(studentView.Id));
            }

            var group = new Group
            {
                Id       = _groupBoardSecond.CurrentGroup.Id,
                Name     = _groupBoardSecond.GetNameOfGroup,
                Students = students,
                Photo    = _groupBoardSecond.GetGroupPhoto.SetPhoto(_groupBoardSecond.CurrentGroup.Photo)
            };

            if (!group.Equals(_groupBoardSecond.CurrentGroup, group))
            {
                _groupBoardSecond.CurrentGroup.SetCopy(group);
                EFGenericRepository.Update(_groupBoardSecond.CurrentGroup);
                return(true);
            }

            return(false);
        }
        private void EditStudentView_Click(object sender, EventArgs e)
        {
            _editStudentBoardFirst.EditStudent =
                EFGenericRepository.Find <Student>(((IStudentView)((Control)sender).Parent).Id);

            _editStudentBoardFirst.LoadingSecondForm();
        }
Пример #4
0
        private bool AddGroupBoard_SaveClick()
        {
            if (string.IsNullOrWhiteSpace(_addGroupBoard.GetNameOfGroup) ||
                _addGroupBoard.GetGroupPhoto == null ||
                _addGroupBoard.AddedStudentControlCollection.Count == 0)
            {
                return(false);
            }

            var students = new List <Student>();

            foreach (IStudentView studentView in _addGroupBoard.AddedStudentControlCollection)
            {
                students.Add(EFGenericRepository.Find <Student>(studentView.Id));
            }

            var group = new Group
            {
                Id       = new Random(Guid.NewGuid().GetHashCode()).Next(),
                Name     = _addGroupBoard.GetNameOfGroup,
                Students = students,
                Photo    = _addGroupBoard.GetGroupPhoto.ConvertImageToByteArr()
            };

            EFGenericRepository.Create(group);

            _addGroupBoard.ClearView();
            _addGroupBoard.AddedStudentControlCollection.Clear();

            return(true);
        }
Пример #5
0
        private void DataBoard_DeleteEntity(object sender, EventArgs e)
        {
            switch (((EntityArgs)e).Entity)
            {
            case StudentView studentView:
            {
                var studentToDelete = EFGenericRepository.Find <Student>(studentView.Id);

                EFGenericRepository.Delete(studentToDelete);
                break;
            }

            case GroupView groupView:
            {
                var deleteDialog = new DeleteDialog();
                if (deleteDialog.ShowDialog() == DialogResult.OK)
                {
                    var retiringGroup = EFGenericRepository.Find <Group>(groupView.Id);
                    if (deleteDialog.IsDeleteMembers)
                    {
                        EFGenericRepository.DeleteRange(retiringGroup.Students);
                    }

                    EFGenericRepository.Delete(retiringGroup);
                }

                break;
            }
            }
        }
Пример #6
0
        private void GroupInfoForm_LoadForm(object sender, EventArgs e)
        {
            var group = EFGenericRepository.Find <Group>(_groupInfoForm.Id);

            _groupInfoForm.GroupName = group.Name;
            _groupInfoForm.Photo     = group.Photo.ConvertByteArrToImage();
            _groupInfoForm.Students  = group.Students.GetViews <Student, StudentView>().ToList();
        }
Пример #7
0
        public static IList <TResult> TransformControlsToEntities <TResult>(this ControlCollection controlCollection)
            where TResult : class, IEntity
        {
            var entities = new List <TResult>(controlCollection.Count);

            entities.AddRange(controlCollection.Cast <IEntityControlView <TResult> >()
                              .Select(control => EFGenericRepository.Find <TResult>(control.Id)));

            return(entities);
        }
 private void GroupBoardSecond_CancelClick(object sender, EventArgs e)
 {
     //todo ??
     foreach (var addedStudentView in _groupBoardSecond.AddedStudentControlCollection.Cast <AddedStudentViewBoard>()
              .ToArray())
     {
         if (EFGenericRepository.Find <Student>(addedStudentView.Id).GroupId == null)
         {
             CancelButton_Click(addedStudentView, EventArgs.Empty);
         }
     }
 }
Пример #9
0
        protected void CancelButton_Click(object sender, EventArgs e)
        {
            //получаем addedStudentView на котором было вызвано событие button_Click
            var addedStudentView = sender as IStudentView ?? (IStudentView)((Control)sender).Parent;

            var studentView = (IStudentView)this.currentStudentView.Clone();

            studentView.FillView(EFGenericRepository.Find <Student>(addedStudentView.Id));

            groupBoard.AddedStudentControlCollection.Remove((Control)addedStudentView);
            groupBoard.CurrentStudentControlCollection.Add((Control)studentView);
        }
        private void EditGroupBoardFirst_EditGroupButtonClick(object sender, EventArgs e)
        {
            var selectedGroup = _editGroupBoardFirst.GroupCollection
                                .Cast <IGroupView>()
                                .FirstOrDefault(gv => gv.IsSelected == true);

            if (selectedGroup != null)
            {
                _editGroupBoardFirst.EditGroup = EFGenericRepository.Find <Group>(selectedGroup.Id);

                _editGroupBoardFirst.LoadingSecondForm();
            }
        }
Пример #11
0
        private void AddStudentButton_Click(object sender, EventArgs e)
        {
            //получаем studentViewBoard на котором было вызвано событие button_Click
            var studentViewBoard = (IStudentView)((Control)sender).Parent;

            //создаем addedStudentViewBoard (клонируем переданный экземпляр конкретного класса)
            var addedStudentView = (IStudentView)this.addedStudentView.Clone();

            //заполняем addedStudentViewBoard полями studentViewBoard на котороым было вызвано событие Click
            addedStudentView.FillView(EFGenericRepository.Find <Student>(studentViewBoard.Id));

            groupBoard.CurrentStudentControlCollection.Remove((Control)studentViewBoard);
            groupBoard.AddedStudentControlCollection.Add((Control)addedStudentView);
        }
Пример #12
0
        public static async Task <IList <TResult> > TransformControlsToEntitiesAsync <TResult>(
            this ControlCollection controlCollection, CancellationToken token)
            where TResult : class, IEntity
        {
            return(await Task.Run(() =>
            {
                var entities = new List <TResult>(controlCollection.Count);

                entities.AddRange(controlCollection.Cast <IEntityControlView <TResult> >()
                                  .Select(control => EFGenericRepository.Find <TResult>(control.Id)));

                return entities;
            }, token));
        }
Пример #13
0
        private IEntity DataBoard_GetEntityBySelectedView(object sender, EntityTransferEventArgs e)
        {
            var selectedView = e.Entity;

            switch (selectedView)
            {
            case StudentView studentView:
                return(EFGenericRepository.Find <Student>(studentView.Id));

            case GroupView groupView:
                return(EFGenericRepository.Find <Group>(groupView.Id));

            default:
                return(null);
            }
        }
Пример #14
0
        private async Task <IEnumerable <StudentView> > GetStudent(string conditions, CancellationToken token)
        {
            return(await Task.Run(() =>
            {
                if (conditions != string.Empty)
                {
                    return EFGenericRepository.Find <Group>(_groupInfoForm.Id)
                    .Students
                    .GetViews <Student, StudentView>()
                    .Where(s => s.FirstName.ToUpperInvariant()
                           .Contains(conditions.ToUpperInvariant()))
                    .ToArray();
                }

                return EFGenericRepository.Find <Group>(_groupInfoForm.Id)
                .Students
                .GetViews <Student, StudentView>()
                .ToArray();
            }, token));
        }
Пример #15
0
        private void AddGroupBoard_ClearClick(object sender, EventArgs e)
        {
            _addGroupBoard.ClearView();

            if (_addGroupBoard.AddedStudentControlCollection.Count != 0)
            {
                foreach (var obj in _addGroupBoard.AddedStudentControlCollection)
                {
                    var control = obj as Control;

                    var studentView = (IStudentView)currentStudentView.Clone();
                    studentView.FillView(EFGenericRepository.Find <Student>(
                                             ((IStudentView)control).Id));

                    _addGroupBoard.CurrentStudentControlCollection.Add((Control)studentView);
                }

                _addGroupBoard.AddedStudentControlCollection.Clear();
            }
        }
Пример #16
0
        /// <summary>
        /// Асинхронный выбор студентов, учитывая фильтр (searchTextBox.Text) и вычитание из результата уже добавленных студентов(addedStudentFlowPanel).
        /// </summary>
        /// <param name="condition">Условие, по которому будет формироваться выборка студентов.</param>
        /// <returns></returns>
        public virtual async Task <Student[]> GetStudentWithExceptedAddedStudent(string condition, string searchCriteria,
                                                                                 CancellationToken token)
        {
            return(await Task.Factory.StartNew(() =>
            {
                var students = EFGenericRepository.Get <Student>(s => s.GroupId == null);

                if (condition != string.Empty)
                {
                    students = students.Where(searchCriteria, condition);
                }

                if (groupBoard.AddedStudentControlCollection.Count == 0)
                {
                    return students.ToArray();
                }

                var addedStudents = groupBoard.AddedStudentControlCollection
                                    .Cast <IStudentView>()
                                    .Select(s => EFGenericRepository.Find <Student>(s.Id));

                return students.Except(addedStudents).ToArray();
            }, token));
        }
Пример #17
0
        private void StudentInfoForm_FormLoad(object sender, EventArgs e)
        {
            var student = EFGenericRepository.Find <Student>(_studentInfoForm.Id);

            FillView(student);
        }