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)); }
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)); }