public Result <Class> UpdateClass(int classId, string name, string level)
        {
            if (!IsNameValid(name))
            {
                return(Result.Failure <Class>(Status.BadRequest, "The class name is not valid."));
            }
            if (!IsLevelValid(level))
            {
                return(Result.Failure <Class>(Status.BadRequest, "The class level is not valid."));
            }
            Class c;

            if ((c = _classGateway.FindById(classId)) == null)
            {
                return(Result.Failure <Class>(Status.NotFound, "Class not found."));
            }

            {
                Class other = _classGateway.FindByName(name);
                if (other != null && other.ClassId != c.ClassId)
                {
                    return(Result.Failure <Class>(Status.BadRequest, "A class with this name already exists."));
                }
            }

            _classGateway.Update(classId, name, level);
            c = _classGateway.FindByName(name);
            return(Result.Success(Status.Ok, c));
        }
        public void can_create_find_update_and_delete_class()
        {
            ClassGateway sut   = new ClassGateway(TestHelpers.ConnectionString);
            string       name  = TestHelpers.RandomTestName();
            string       level = TestHelpers.RandomLevel();

            sut.Create(name, level);
            Class c;

            {
                c = sut.FindByName(name);
                CheckClass(c, name, level);
            }

            {
                c = sut.FindById(c.ClassId);
                CheckClass(c, name, level);
            }

            {
                name  = TestHelpers.RandomTestName();
                level = TestHelpers.RandomLevel();
                sut.Update(c.ClassId, name, level);

                c = sut.FindById(c.ClassId);
                CheckClass(c, name, level);
            }

            {
                sut.Delete(c.ClassId);
                c = sut.FindById(c.ClassId);
                Assert.That(c, Is.Null);
            }
        }
Exemple #3
0
        public async Task <IActionResult> GetClassById(int id)
        {
            Result <ClassData> result = await _classGateway.FindById(id);

            IEnumerable <StudentData> resultStudents = await _classGateway.StudentClass(id);

            result.Content.Students = resultStudents;
            return(this.CreateResult(result));
        }
        public void can_assign_teacher()
        {
            TeacherGateway teacherGateway = new TeacherGateway(TestHelpers.ConnectionString);
            string         firstName      = TestHelpers.RandomTestName();
            string         lastName       = TestHelpers.RandomTestName();

            teacherGateway.Create(firstName, lastName);
            Teacher teacher1 = teacherGateway.FindByName(firstName, lastName);

            ClassGateway sut   = new ClassGateway(TestHelpers.ConnectionString);
            string       name  = TestHelpers.RandomTestName();
            string       level = TestHelpers.RandomLevel();

            sut.Create(name, level, teacher1.TeacherId);

            Class c;

            {
                c = sut.FindByName(name);
                CheckClass(c, name, level, teacher1.TeacherId);
            }

            {
                string firstName2 = TestHelpers.RandomTestName();
                string lastName2  = TestHelpers.RandomTestName();
                teacherGateway.Create(firstName2, lastName2);
                Teacher teacher2 = teacherGateway.FindByName(firstName2, lastName2);
                sut.AssignTeacher(c.ClassId, teacher2.TeacherId);
                c = sut.FindById(c.ClassId);
                CheckClass(c, name, level, teacher2.TeacherId);

                sut.AssignTeacher(c.ClassId, 0);
                c = sut.FindById(c.ClassId);
                CheckClass(c, name, level, 0);

                teacherGateway.Delete(teacher2.TeacherId);
            }

            sut.Delete(c.ClassId);
            teacherGateway.Delete(teacher1.TeacherId);
        }
        public async Task can_create_find_update_and_delete_class()
        {
            ClassGateway sut    = new ClassGateway(TestHelpers.ConnectionString);
            string       name   = TestHelpers.RandomTestName();
            string       level  = TestHelpers.RandomLevel();
            Result <int> result = await sut.Create(name, level);

            Assert.That(result.Status, Is.EqualTo(Status.Created));
            int classId = result.Content;

            Result <ClassData> classData;
            {
                classData = await sut.FindById(classId);

                CheckClass(classData, name, level);
            }

            {
                name  = TestHelpers.RandomTestName();
                level = TestHelpers.RandomLevel();
                await sut.Update(classId, name, level);

                classData = await sut.FindById(classId);

                CheckClass(classData, name, level);
            }

            {
                Result r = await sut.Delete(classId);

                Assert.That(r.Status, Is.EqualTo(Status.Ok));
                classData = await sut.FindById(classId);

                Assert.That(classData.Status, Is.EqualTo(Status.NotFound));
            }
        }
        public Result AssignClass(int teacherId, int classId)
        {
            Class c = null;

            if (_teacherGateway.FindById(teacherId) == null)
            {
                return(Result.Failure(Status.BadRequest, "Unknown teacher."));
            }
            if (classId != 0 && (c = _classGateway.FindById(classId)) == null)
            {
                return(Result.Failure(Status.BadRequest, "Unknown class."));
            }
            if (c != null && c.TeacherId != 0 && c.TeacherId != teacherId)
            {
                return(Result.Failure(Status.BadRequest, "Class already assigned."));
            }
            _teacherGateway.AssignClass(teacherId, classId);
            return(Result.Success(Status.Ok));
        }
Exemple #7
0
        public async Task <IActionResult> GetClassById(int id)
        {
            Result <ClassData> result = await _classGateway.FindById(id);

            return(this.CreateResult(result));
        }