public void Edit(DisciplineExtendedProxy oldExtendedProxy, DisciplineExtendedProxy newExtendedProxy)
        {
            var foundDiscipline    = ModelDatabase.GetDiscipline(oldExtendedProxy);
            var newGroupDiscipline = ModelDatabase.GetGroup(newExtendedProxy.GroupName);

            foundDiscipline.DisciplineName = newExtendedProxy.DisciplineName;
            foundDiscipline.TotalHours     = newExtendedProxy.TotalHours;
            foundDiscipline.ClassHours     = newExtendedProxy.ClassHours;
            if (foundDiscipline.ControlType != newExtendedProxy.ControlType)
            {
                foreach (var assessmentByDiscipline in ModelDatabase.AssessmentByDisciplines.Where(a => a.DisciplineId == foundDiscipline.DisciplineId))
                {
                    assessmentByDiscipline.Assessment = (int)Assessment.None;
                }
                foundDiscipline.ControlType = newExtendedProxy.ControlType;
            }
            if (foundDiscipline.GroupId != newGroupDiscipline.GroupId)
            {
                DeleteAssessmentByDisciplines(assessmentByDiscipline => assessmentByDiscipline.DisciplineId == foundDiscipline.DisciplineId);
                ModelDatabase.AssessmentByDisciplines.AddRange(
                    newGroupDiscipline.Students.Select(student =>
                                                       new AssessmentByDiscipline {
                    Student    = student,
                    Discipline = foundDiscipline,
                    Group      = newGroupDiscipline,
                    Assessment = (int)Assessment.None
                }));
                foundDiscipline.Group = newGroupDiscipline;
            }

            ModelDatabase.SaveChanges();
        }
        public void AddDisciplineFunctionTest_ShouldBeSuccess()
        {
            var discipline = new DisciplineExtendedProxy {
                DisciplineName = "nameOfDiscipline"
            };

            RunServer(new AddDisciplineFunction(DatabaseAuthorizer, databaseDisciplineEditor));
            SendRequest("AddDiscipline", GetDefaultParameters(), discipline.ToJson());

            A.CallTo(() => databaseDisciplineEditor.Add(discipline)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void EditDisciplineFunctionTest_ShouldBeSuccess()
        {
            var firstDiscipline = new DisciplineExtendedProxy {
                DisciplineName = "firstNameOfDiscipline"
            };
            var secondDiscipline = new DisciplineExtendedProxy {
                DisciplineName = "secondNameOfDiscipline"
            };

            RunServer(new EditDisciplineFunction(DatabaseAuthorizer, databaseDisciplineEditor));
            SendRequest("EditDiscipline", GetDefaultParameters(), Tuple.Create(firstDiscipline, secondDiscipline).ToJson());

            A.CallTo(() => databaseDisciplineEditor.Edit(firstDiscipline, secondDiscipline)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void GetExtendedDisciplineFunctionTest_ShouldBeSuccess()
        {
            var inputBasedDiscipline = new DisciplineBasedProxy {
                DisciplineName = "firstDiscipline"
            };
            var inputExtendedDiscipline = new DisciplineExtendedProxy {
                DisciplineName = "firstDiscipline"
            };

            A.CallTo(() => databaseDisciplineReader.GetExtendedProxy(inputBasedDiscipline)).Returns(inputExtendedDiscipline);

            RunServer(new GetExtendedDisciplineFunction(DatabaseAuthorizer, databaseDisciplineReader));
            var receivedDiscipline = SendRequest <DisciplineExtendedProxy>("GetExtendedDiscipline", GetDefaultParameters(), inputBasedDiscipline.ToJson());

            A.CallTo(() => databaseDisciplineReader.GetExtendedProxy(inputBasedDiscipline)).MustHaveHappened(Repeated.Exactly.Once);
            Assert.That(receivedDiscipline, Is.EqualTo(inputExtendedDiscipline));
        }
        public void Add(DisciplineExtendedProxy extendedProxy)
        {
            var foundGroup    = ModelDatabase.GetGroup(extendedProxy.GroupName);
            var newDiscipline = new Discipline {
                DisciplineName = extendedProxy.DisciplineName,
                ControlType    = extendedProxy.ControlType,
                TotalHours     = extendedProxy.TotalHours,
                ClassHours     = extendedProxy.ClassHours,
                Group          = foundGroup
            };

            ModelDatabase.Disciplines.Add(newDiscipline);
            ModelDatabase.AssessmentByDisciplines.AddRange(
                foundGroup.Students.Select(student =>
                                           new AssessmentByDiscipline {
                Student    = student,
                Discipline = newDiscipline,
                Group      = foundGroup,
                Assessment = (int)Assessment.None
            }));

            ModelDatabase.SaveChanges();
        }
 public void Edit(DisciplineExtendedProxy oldExtendedProxy, DisciplineExtendedProxy newExtendedProxy)
 {
     SendRequest("EditDiscipline", GetDefaultParameters(), Tuple.Create(oldExtendedProxy, newExtendedProxy).ToJson());
 }
 public void Add(DisciplineExtendedProxy extendedProxy)
 {
     SendRequest("AddDiscipline", GetDefaultParameters(), extendedProxy.ToJson());
 }