Example #1
0
        public async Task <IActionResult> UpdateEnrollment(int id, [FromBody] EnrollmentResource enrollmentResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var enrollment = await enrollmentRepository.GetEnrollment(id);

            if (enrollment == null)
            {
                return(NotFound());
            }

            mapper.Map <EnrollmentResource, Enrollment>(enrollmentResource, enrollment);
            var student = await studentRepository.GetStudentByEmail(enrollmentResource.StudentEmail);

            enrollment.Student = student;

            var group = await groupRepository.GetGroup(enrollmentResource.GroupId);

            enrollment.Group = group;

            var lecturer = await lecturerRepository.GetLecturer(enrollmentResource.LecturerId);

            enrollment.Lecturer = lecturer;
            //case: enrollment's type and project's type is different
            //if (group.Project.Type != enrollmentResource.Type)
            //{
            //    ModelState.AddModelError("Error", "Enrollment's type and Project Type of Group are not the same.");
            //    return BadRequest(ModelState);
            //}
            //else
            //{
            //    enrollment.Group = await groupRepository.GetGroup(enrollmentResource.GroupId);
            //}

            ////case student registed another group with the same type
            //if (!studentRepository.CheckStudentEnrollments(student, enrollmentResource.Type))
            //{
            //    ModelState.AddModelError("Error", "Student has an enrollment for this type of projectin another group");
            //    return BadRequest(ModelState);
            //}
            //else
            //{
            //    enrollment.Student = student;
            //}

            var quarter = await quarterRepository.GetQuarter(enrollmentResource.QuarterId);

            enrollment.Quarter = quarter;

            await unitOfWork.Complete();

            var result = mapper.Map <Enrollment, EnrollmentResource>(enrollment);

            return(Ok(result));
        }
Example #2
0
        public async Task <IActionResult> CreateEnrollment([FromBody] EnrollmentResource enrollmentResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var enrollment = mapper.Map <EnrollmentResource, Enrollment>(enrollmentResource);
            var student    = await studentRepository.GetStudentByEmail(enrollmentResource.StudentEmail);

            enrollment.Student = student;

            var lecturer = await lecturerRepository.GetLecturer(enrollmentResource.LecturerId);

            enrollment.Lecturer = lecturer;
            SendMail(student.Name, lecturer.Email);
            //case: enrollment's type and project's type is different and the student has been already in group
            var group = await groupRepository.GetGroup(enrollmentResource.GroupId);

            if (group != null && group.Project.Type != enrollmentResource.Type)
            {
                ModelState.AddModelError("Error", "Enrollment's type and Project Type of Group are not the same.");
                return(BadRequest(ModelState));
            }
            else if (group != null && !groupRepository.CheckEnrollment(group, enrollment))
            {
                ModelState.AddModelError("Warning", "This group already has this student.");
                return(BadRequest(ModelState));
            }
            else
            {
                enrollment.Group = group;
            }

            var quarter = await quarterRepository.GetQuarter(enrollmentResource.QuarterId);

            enrollment.Quarter = quarter;

            enrollmentRepository.AddEnrollment(enrollment);
            await unitOfWork.Complete();

            enrollment = await enrollmentRepository.GetEnrollment(enrollment.EnrollmentId);

            var result = mapper.Map <Enrollment, EnrollmentResource>(enrollment);

            return(Ok(result));
        }