コード例 #1
0
        public async Task StudentsController_Post_PostGrade_Success()
        {
            ServiceResponse <CourseGrade> response = new ServiceResponse <CourseGrade>
            {
                Data = new CourseGrade {
                    gradeId = 1, courseId = 2032, grade = 4
                },
                Success = true,
                Message = $"One of several failures occured inside studentsService.PostGrade"
            };

            CourseGrade grade = new CourseGrade {
                courseId = 2032, studentId = 2
            };

            _mockStudentsService.Setup(service => service.PostGrade(grade)).Returns(Task.Run(() => { return(response); }));


            // Act
            var result = await _controller.PostGrade(grade) as ActionResult <CourseGrade>;

            CourseGrade newGrade = ((Microsoft.AspNetCore.Mvc.ObjectResult)result.Result).Value as CourseGrade;

            // Assert
            Assert.IsType <CreatedAtActionResult>(result.Result);
            Assert.True(newGrade != null);
        }
コード例 #2
0
ファイル: Reference.cs プロジェクト: thexur/1code
        /// <summary>
        /// Create a new CourseGrade object.
        /// </summary>
        /// <param name="enrollmentID">Initial value of EnrollmentID.</param>
        public static CourseGrade CreateCourseGrade(int enrollmentID)
        {
            CourseGrade courseGrade = new CourseGrade();

            courseGrade.EnrollmentID = enrollmentID;
            return(courseGrade);
        }
コード例 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!(Session["user"] is Student))
            {
                Response.Redirect("login.aspx");
            }
            Master.TitelLabelText = "Karakterer";
            Student            student      = (Student)Session["user"];
            List <CourseGrade> courseGrades = CourseGrade.GetByConditions("StudentID=" + student.ID);
            int gradeSum = 0;

            foreach (CourseGrade grade in courseGrades)
            {
                gradeSum += Convert.ToInt32(grade.Grade);
                TableRow gradeRow = new TableRow();
                gradeRow.Cells.Add(new TableCell {
                    Text = grade.Course.Name
                });
                gradeRow.Cells.Add(new TableCell {
                    Text = grade.Grade
                });
                GradesTable.Rows.Add(gradeRow);
                if (grade.Comment == string.Empty)
                {
                    continue;
                }
                TableRow commentRow = new TableRow();
                commentRow.Cells.Add(new TableCell {
                    Text = grade.Course.Name
                });
                commentRow.Cells.Add(new TableCell {
                    Text = grade.Comment
                });
                CommentsTable.Rows.Add(commentRow);
            }
            if (courseGrades.Count > 0) // Avoid DivideByZero
            {
                TableRow  averageRow = new TableRow();
                TableCell textCell   = new TableCell
                {
                    Text     = "Gennemsnit",
                    CssClass = "average-grade"
                };
                averageRow.Cells.Add(textCell);
                TableCell averageCell = new TableCell {
                    Text = ((double)gradeSum / (double)courseGrades.Count).ToString()
                };
                averageCell.Attributes.Add("class", "average-grade");
                averageRow.Cells.Add(averageCell);
                GradesTable.Rows.Add(averageRow);
            }
            if (GradesTable.Rows.Count == 1)
            {
                AddAlertRow(GradesTable, "Du har ikke fået nogen kursus karakterer");
            }
            if (CommentsTable.Rows.Count == 1)
            {
                AddAlertRow(CommentsTable, "Du har ikke fået nogen karakter kommentarer");
            }
        }
コード例 #4
0
        public void RemoverRemoveCourse_ValidParameters_CourseRemoved()
        {
            // Arrange
            Creator.CreateCourse(Instances.Name, Instances.Description);
            Course course = Course.GetByID(1);

            Creator.CreateStudent(Instances.Name, Instances.Username, Instances.Password);
            Student student = Student.GetByID(2);

            course.AddStudent(student);
            Creator.CreateTeacher(Instances.Name, Instances.Username, Instances.Password);
            Teacher teacher = Teacher.GetByID(3);

            course.AddTeacher(teacher);
            Creator.CreateLesson(course, Instances.Description, Instances.Online,
                                 Instances.Date, Instances.Rooms, Instances.Filepaths);
            Creator.CreateAssignmentDescription(course, Instances.Description, Instances.Date, Instances.Filepaths);
            Creator.CreateCourseGrade(course, student, Instances.Grade, Instances.Comment);

            // Act
            Remover.RemoveCourse(course);

            // Assert
            Assert.AreEqual(0, Course.GetAll().Count);
            Assert.AreEqual(0, student.Courses.Count);
            Assert.AreEqual(0, teacher.Courses.Count);
            Assert.AreEqual(0, Lesson.GetAll().Count);
            Assert.AreEqual(0, AssignmentDescription.GetAll().Count);
            Assert.AreEqual(0, CourseGrade.GetAll().Count);
        }
コード例 #5
0
        public async Task <IActionResult> Edit(int id, [Bind("CourseGradeId,StudentId,CourseId,ExamGrade,LabGrade,BonusPoints,IsGraduated")] CourseGrade courseGrade)
        {
            if (id != courseGrade.CourseGradeId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    courseGradeService.UpdateCourseGrade(courseGrade);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!courseGradeService.CourseGradeExists(courseGrade.CourseGradeId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["CourseId"]  = new SelectList(courseGradeService.GetAllCourses(), "CourseId", "Name");
            ViewData["StudentId"] = new SelectList(courseGradeService.GetAllStudents(), "StudentId", "FirstName");
            return(View(courseGrade));
        }
コード例 #6
0
        private int FindCourseId(string course, string grade)
        {
            int courseGradeId = 0;

            int courseId = int.Parse(course);

            var courseGrade = (from cg in _dataContext.CourseGrade where (cg.CourseId == courseId && cg.Grade == grade) select cg).ToList();

            if (courseGrade.Count > 0)
            {
                courseGradeId = courseGrade[0].Id;
            }
            else
            {
                var cg = new CourseGrade()
                {
                    CourseId = int.Parse(course), Grade = grade
                };
                _dataContext.CourseGrade.Add(cg);
                _dataContext.SaveChanges();
                courseGradeId = cg.Id;
            }

            return(courseGradeId);
        }
コード例 #7
0
        private bool ValidateCourseGrade(CourseGrade courseGrade, ref string errorMessage)
        {
            _log.LogDebug("StudentService.ValidateCourseGrade called");

            if (!StudentExists(courseGrade.studentId))
            {
                errorMessage = $"Student Id = {courseGrade.studentId} does not exist";

                _log.LogDebug($"StudentService.Validation: {errorMessage}");

                return(false);
            }

            if (!CourseExists(courseGrade.courseId))
            {
                errorMessage += $"Course Id = {courseGrade.courseId} does not exist";

                _log.LogDebug($"StudentService.Validation: {errorMessage}");

                return(false);
            }

            //
            // Note: I have a constaint on the grade column which will prevent inserts not meeting the null or range of 0 - 4
            // However, I prefer not to hit the database if are not in a valid state because the SQL constraint error
            // may not provide enough information (other than the name of the constraint violated).
            // I also have Model validation through Data Annotations on the models exposed to the world.
            // This is just bullet proofing in case the user gets around Model validation somehow
            //
            if (courseGrade.grade != null)
            {
                bool validRange = (courseGrade.grade >= 0 && courseGrade.grade <= 4);

                if (!validRange)
                {
                    errorMessage = $"Invalid Grade Value {courseGrade.grade}: A value of null or between 0 and 4 is required.\r\n";

                    _log.LogDebug($"StudentService.Validation: {errorMessage}");

                    return(false);
                }
            }

            //
            // We cannot have more than one grade per course per student.
            //
            var existingGrade = _uow.Context.StudentGrade.Where(e => e.CourseId == courseGrade.courseId && e.StudentId == courseGrade.studentId).FirstOrDefault();

            if (existingGrade != null)
            {
                errorMessage = $"The student already has a grade entered for CourseId = {courseGrade.courseId}.  Did you meant to use PUT/Update?";

                _log.LogDebug($"StudentService.Validation: {errorMessage}");

                return(false);
            }

            return(true);
        }
コード例 #8
0
        /// <summary>
        /// Create a new CourseGrade object.
        /// </summary>
        /// <param name="enrollmentID">Initial value of EnrollmentID.</param>
        /// <param name="courseID">Initial value of CourseID.</param>
        /// <param name="studentID">Initial value of StudentID.</param>
        public static CourseGrade CreateCourseGrade(int enrollmentID, int courseID, int studentID)
        {
            CourseGrade courseGrade = new CourseGrade();

            courseGrade.EnrollmentID = enrollmentID;
            courseGrade.CourseID     = courseID;
            courseGrade.StudentID    = studentID;
            return(courseGrade);
        }
コード例 #9
0
 public async Task <IActionResult> Create([Bind("CourseGradeId,StudentId,CourseId,ExamGrade,LabGrade,BonusPoints,IsGraduated")] CourseGrade courseGrade)
 {
     if (ModelState.IsValid)
     {
         courseGradeService.Create(courseGrade);
         return(RedirectToAction(nameof(Index)));
     }
     ViewData["CourseId"]  = new SelectList(courseGradeService.GetAllCourses(), "CourseId", "Name");
     ViewData["StudentId"] = new SelectList(courseGradeService.GetAllStudents(), "StudentId", "FirstName");
     return(View(courseGrade));
 }
コード例 #10
0
        public IActionResult AddGrade(CourseGrade courseGrade)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            courseGrade.CreatedDate = DateTime.Now;
            _db.Grades.Add(courseGrade);
            _db.SaveChanges();
            return(RedirectToAction(nameof(StudentController.Index), "Student"));
        }
        /// <summary>
        /// This event handler handles the RowEdited event of the DataGrid control
        /// It updates the edited Grade via an async REST call to ADO.NET Data Service.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mainDataGrid_RowEditEnded(object sender, DataGridRowEditEndedEventArgs e)
        {
            ScoreCardForSchoolLinqToEntities s = e.Row.DataContext as ScoreCardForSchoolLinqToEntities;

            if (s != null)
            {
                CourseGrade recordforupdate = s.CourseGrade;
                _entities.UpdateObject(recordforupdate);
                _entities.BeginSaveChanges(SaveChangesOptions.ReplaceOnUpdate,
                                           OnChangesSaved, _entities);
            }
        }
コード例 #12
0
        /// <summary>
        /// This event handler handles the Click event of the Delete Button control
        /// It deletes the record that is on the same row of the Delete Button,
        /// via an async REST call to ADO.NET Data Service.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DeleteButton_Click(object sender, RoutedEventArgs e)
        {
            Button b = (Button)sender;
            ScoreCardForSchoolLinqToSQL s = b.DataContext as ScoreCardForSchoolLinqToSQL;

            if (s != null)
            {
                CourseGrade recordfordelete = s.CourseGrade;
                _context.DeleteObject(recordfordelete);
                _context.BeginSaveChanges(SaveChangesOptions.None,
                                          OnChangesSaved, _context);
            }
        }
コード例 #13
0
        public ActionResult Edit_CourseGrade(CourseGrade ob)
        {
            if (ModelState.IsValid)
            {
                CourseGradeBL.Update(ob);

                return(RedirectToAction("course_Grade"));
            }
            else
            {
                return(View());
            }
        }
コード例 #14
0
        public async Task <ActionResult <CourseGrade> > PostGrade(CourseGrade courseGrade)
        {
            ServiceResponse <CourseGrade> response = await _studentsService.PostGrade(courseGrade);

            if (!response.Success)
            {
                // We were unable to create a new StudentGrade record.
                return(BadRequest(new BadRequestResponse(response.Message)));
            }

            CourseGrade newCourseGrade = response.Data as CourseGrade;

            return(CreatedAtAction("PostGrade", newCourseGrade));
        }
コード例 #15
0
        public void CourseGradeNew_ValidParameters_ValuesMatch()
        {
            // Arrange
            var course  = Course.New(Instances.Name, Instances.Description);
            var student = Student.New(Instances.Name, Instances.Username, Instances.Password);

            // Act
            var courseGrade = CourseGrade.New(course, student, Instances.Grade, Instances.Comment);

            // Assert
            Assert.AreEqual(course.ID, courseGrade.Course.ID);
            Assert.AreEqual(student.ID, courseGrade.Student.ID);
            Assert.AreEqual(Instances.Grade, courseGrade.Grade);
            Assert.AreEqual(Instances.Comment, courseGrade.Comment);
        }
コード例 #16
0
        /// <summary>
        /// PostGrade creates a new Course grade for a given student.
        /// </summary>
        /// <param name="courseGrade"></param>
        /// <returns>A Tuple containing CourseGrade and a error message string</returns>
        public async Task <ServiceResponse <CourseGrade> > PostGrade(CourseGrade courseGrade)
        {
            _log.LogDebug("StudentService.PostGrade called");

            string errorMessage = string.Empty;

            if (!ValidateCourseGrade(courseGrade, ref errorMessage))
            {
                _log.LogError($"StudentService.PostGrade: {errorMessage??"Validation Error"}");

                //
                // Validation failed. There was a validation issue preventing this post.
                //
                return(new ServiceResponse <CourseGrade>
                {
                    Success = false,
                    Message = errorMessage,
                    Data = courseGrade // returning the value passed into us
                });
            }

            _log.LogDebug("StudentService.PostGrade: Adding new CourseGrade");

            StudentGrade newGrade = new StudentGrade
            {
                StudentId = courseGrade.studentId,
                CourseId  = courseGrade.courseId,
                Grade     = courseGrade.grade
            };

            //
            // This is interesting:  GetRepository lazy load/adds a StudentGrade repository here when requested.
            // This is something new I am playing with in this code challenge.
            _uow.GetRepository <StudentGrade>().Add(newGrade);

            await Task.Run(() => _uow.Commit());

            CourseGrade newCourseGrade = _mapper.Map <CourseGrade>(newGrade);

            _log.LogDebug($"StudentService.PostGrade: CourseGrade.gradeId = {newCourseGrade.gradeId} Added Successfully ");

            return(new ServiceResponse <CourseGrade>
            {
                Success = true,
                Message = errorMessage,
                Data = newCourseGrade
            });
        }
コード例 #17
0
        public void RemoverRemoveCourseGrade_ValidParameters_CourseGradeRemoved()
        {
            // Arrange
            Creator.CreateCourse(Instances.Name, Instances.Description);
            Course course = Course.GetByID(1);

            Creator.CreateCourseGrade(course, Instances.Student, Instances.Grade, Instances.Comment);
            CourseGrade courseGrade = CourseGrade.GetByID(1);

            // Act
            Remover.RemoveCourseGrade(courseGrade);

            // Assert
            Assert.AreEqual(0, course.CourseGrades.Count);
            Assert.AreEqual(0, CourseGrade.GetAll().Count);
        }
コード例 #18
0
        public CourseGrade GetStudentGrade(Guid courseId, Student student)
        {
            CourseGrade courseGrade    = null;
            var         selectedCourse = dbContext.Courses
                                         .Where(course => course.Id == courseId)
                                         .SingleOrDefault();

            if (selectedCourse != null)
            {
                courseGrade = selectedCourse.CourseGrades
                              .Where(grade => grade.Student.Id == student.Id)
                              .SingleOrDefault();
            }

            return(courseGrade);
        }
コード例 #19
0
        public void RemoverRemoveCourseGrade_ValidParameters_CourseGradeRemoved()
        {
            // Arrange
            var courseGrade   = CourseGrade.New(Instances.Course, Instances.Student, Instances.Grade, Instances.Comment);
            var courseGradeid = courseGrade.ID;

            // Act
            courseGrade.Remove();

            // Assert
            try
            {
                CourseGrade.GetByID(courseGradeid);
                Assert.Fail();
            }
            catch (InvalidIDException) { }
        }
コード例 #20
0
        //public Nullable<double> CalculateGrade(Course course, CourseGrade grade)
        public double?CalculateGrade(Course course, CourseGrade grade)
        {
            List <ModuleGrade> mods = grade.Modules;
            //Let's just do something basic as a token effort given the time!

            /*courseCache = courseIO.LoadData();
             * return courseCache;*/
            List <AssignmentGrade> allAGs = new List <AssignmentGrade>();

            //IEnumerable filteredAGs;

            if (mods != null)
            {
                mods.ForEach((mod) => {
                    List <AssignmentGrade> agList = mod.Assignments;

                    if (agList != null)
                    {
                        allAGs.AddRange(agList);
                    }
                });
            }

            IEnumerable <AssignmentGrade> filteredAGs = allAGs.Where((ag) => {
                return(ag.Score != null);
            });

            Nullable <double> totalScore;

            if (filteredAGs.Count() > 0)
            {
                totalScore = filteredAGs.Average((ag) => {
                    return(ag.Score);
                });

                //return totalScore;
            }
            else
            {
                totalScore = null;
            }


            return(totalScore);
        }
コード例 #21
0
        public ActionResult Index()
        {
            //Test
            Session["user"] = Student.GetByConditions("name='Iver Clausen'").Single();
            //Actual
            Person person = (Person)Session["user"];

            if (person == null)
            {
                return(RedirectToAction("Index", "Login"));
            }
            if (person is Student)
            {
                List <CourseGrade> grades = CourseGrade.GetByConditions("StudentID=" + person.ID);
                return(View(new CourseGradeViewModel {
                    Grades = grades
                }));
            }
            return(RedirectToAction("Index", "News"));
        }
コード例 #22
0
        public ActionResult Index(int id)
        {
            //Test
            Session["user"] = Student.GetByConditions("name='Iver Clausen'").Single();
            //Actual
            Person      person = (Person)Session["user"];
            CourseGrade currentGrade;

            if (person == null)
            {
                try
                {
                    currentGrade = CourseGrade.GetByID(Convert.ToUInt32(id));
                }
                catch (InvalidIDException)
                {
                    return(RedirectToAction("Index", "Login"));
                }
            }
            return(RedirectToAction("Index", "News"));
        }
コード例 #23
0
        public CourseGradeEstimatorInit()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            Course      courseData = dataLayer.LoadCourseData();
            CourseGrade gradeData  = dataLayer.LoadGradeData();

            Routings initRoute = courseData != null ? Routings.CourseSummary: Routings.Start;

            DataDTO <Course, Course, CourseGrade> data = null;

            if (courseData != null)
            {
                data = new DataDTO <Course, Course, CourseGrade> {
                    Data = courseData, Grade = gradeData
                };
            }

            router.navTo(initRoute, data);

            Application.Run(router);
        }
コード例 #24
0
        public async Task StudentsController_Post_PostGrade_Failure()
        {
            CourseGrade grade = new CourseGrade {
                gradeId = 1, courseId = 2032, studentId = 2
            };

            ServiceResponse <CourseGrade> response = new ServiceResponse <CourseGrade>
            {
                Data    = grade,
                Success = false, // we failed to post the new grade for some reason
                Message = $"One of several failures occured inside studentsService.PostGrade"
            };

            _mockStudentsService.Setup(service => service.PostGrade(grade)).Returns(Task.Run(() => { return(response); }));

            // Act
            var result = await _controller.PostGrade(grade) as ActionResult <CourseGrade>;

            // Assert
            Assert.IsType <BadRequestObjectResult>(result.Result);

            // Validate that it is sending School.API.Utility.NotFoundResponse
            Assert.IsType <School.API.Utility.BadRequestResponse>(((Microsoft.AspNetCore.Mvc.ObjectResult)result.Result).Value);
        }
コード例 #25
0
        public void CreateCourse(Course course)
        {
            var courseExists = (from c in _dataContext.Course.Where(c => c.Subject == course.Subject) select c).ToList();

            //is new course
            if (courseExists.Count == 0)
            {
                AddCourse(course);
                AddCourseGrade(new CourseGrade {
                    CourseId = course.Id, Grade = course.Grade
                });
                return;
            }
            var existingCourseId = courseExists[0].Id;

            try
            {
                var courseGradeExists =
                    (from cg in
                     _dataContext.CourseGrade.Where(cg => cg.CourseId == existingCourseId && cg.Grade == course.Grade)
                     select cg).ToList();

                //is new grade for existing course
                if (courseGradeExists.Count == 0)
                {
                    var courseGrade = new CourseGrade {
                        CourseId = existingCourseId, Grade = course.Grade
                    };
                    AddCourseGrade(courseGrade);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #26
0
ファイル: Reference.cs プロジェクト: zealoussnow/OneCode
 /// <summary>
 /// There are no comments for CourseGrades in the schema.
 /// </summary>
 public void AddToCourseGrades(CourseGrade courseGrade)
 {
     base.AddObject("CourseGrades", courseGrade);
 }
コード例 #27
0
ファイル: Reference.cs プロジェクト: zealoussnow/OneCode
 /// <summary>
 /// Create a new CourseGrade object.
 /// </summary>
 /// <param name="enrollmentID">Initial value of EnrollmentID.</param>
 /// <param name="courseID">Initial value of CourseID.</param>
 /// <param name="studentID">Initial value of StudentID.</param>
 public static CourseGrade CreateCourseGrade(int enrollmentID, int courseID, int studentID)
 {
     CourseGrade courseGrade = new CourseGrade();
     courseGrade.EnrollmentID = enrollmentID;
     courseGrade.CourseID = courseID;
     courseGrade.StudentID = studentID;
     return courseGrade;
 }
コード例 #28
0
ファイル: Reference.cs プロジェクト: zealoussnow/OneCode
 /// <summary>
 /// Create a new CourseGrade object.
 /// </summary>
 /// <param name="enrollmentID">Initial value of EnrollmentID.</param>
 public static CourseGrade CreateCourseGrade(int enrollmentID)
 {
     CourseGrade courseGrade = new CourseGrade();
     courseGrade.EnrollmentID = enrollmentID;
     return courseGrade;
 }
コード例 #29
0
 public void RemoveCourseGrade(CourseGrade courseGrade)
 {
     _courseGradeRepository.DeleteCourseGrade(courseGrade);
 }
コード例 #30
0
 public void UpdateCourseGrade(CourseGrade courseGrade)
 {
     _courseGradeRepository.UpdateCourseGrade(courseGrade);
 }
コード例 #31
0
 public void AddCourseGrade(CourseGrade courseGrade)
 {
     _courseGradeRepository.InsertCourseGrade(courseGrade);
 }
コード例 #32
0
 public void UpdateCourseGrade(CourseGrade courseGrade)
 {
     _repo.CourseGrade.Update(courseGrade);
     _repo.Save();
 }
コード例 #33
0
 public void Create(CourseGrade courseGrade)
 {
     _repo.CourseGrade.Create(courseGrade);
     _repo.Save();
 }