public async Task <JsonResult> DeleteDetailClass([FromBody] ClassDetailDto dto) { WebApiSimpleResponse <ClassDetail> res; try { if (dto == null) { throw new Exception("Entity not found"); } var detailClassEntity = _classDetailRepository.GetAll().FirstOrDefault(x => x.Id == dto.ClassDetailId); if (detailClassEntity == null) { throw new Exception("Invalid detail class is selected"); } var studentsInClass = _classDetailStudentRepository.GetAll() .Where(x => x.ClassDetailId == dto.ClassDetailId); if (studentsInClass.Count() > 0) { throw new Exception("The given class has some students"); } await _classDetailRepository.Delete(new ClassDetail { Id = dto.ClassDetailId }); res = new WebApiSimpleResponse <ClassDetail> { Result = detailClassEntity, Message = ResponseMessage.OperationSucceeded.GetDescription() }; } catch (Exception ex) { Logger.ErrorException(ex.Message, ex); res = new WebApiSimpleResponse <ClassDetail> { ErrorFlag = true, Message = ResponseMessage.OperationFailed.GetDescription() }; } return(new JsonResult(res)); }
public async Task <JsonResult> SaveDetailClass([FromBody] ClassDetailDto dto) { WebApiSimpleResponse <ClassDetail> res; try { if (dto == null) { throw new Exception("Entity not found"); } var masterClassEntity = _classMasterRepository.GetAll().FirstOrDefault(x => x.Id == dto.ClassMasterId); if (masterClassEntity == null) { throw new Exception("Master class not found"); } var detailClassEntity = await _classDetailRepository.Insert(new ClassDetail { ClassMasterId = dto.ClassMasterId, CreationDate = DateTime.Now, ModificationDate = DateTime.Now }); res = new WebApiSimpleResponse <ClassDetail> { Result = detailClassEntity, Message = ResponseMessage.OperationSucceeded.GetDescription() }; } catch (Exception ex) { Logger.ErrorException(ex.Message, ex); res = new WebApiSimpleResponse <ClassDetail> { ErrorFlag = true, Message = ResponseMessage.OperationFailed.GetDescription() }; } return(new JsonResult(res)); }
public async Task DeleteStudent() { var options = new DbContextOptionsBuilder <BackendTestDbContext>() .UseInMemoryDatabase(databaseName: "UpdateStudentDatabase") .Options; var savedMasterClass = new ClassMaster(); var savedDetailClass = new ClassDetail(); #region SaveMasterClass using (var context = new BackendTestDbContext(options)) { var classMasterRepository = new ClassMasterRepository(context); var classDetailRepository = new ClassDetailRepository(context); var studentRepository = new StudentRepository(context); var classDetailStudentRepository = new ClassDetailStudentRepository(context); var classController = new ClassController(classMasterRepository, classDetailRepository, studentRepository, classDetailStudentRepository); var toBeSavedEntity = new ClassMasterDto { Classname = "Computer Engineering", Location = "Some where", TeacherName = "Dr. Demberg" }; var rawJson = await classController.SaveMasterClass(toBeSavedEntity); var res = (WebApiSimpleResponse <ClassMaster>)rawJson.Value; savedMasterClass = res.Result; Assert.IsFalse(res.ErrorFlag); } #endregion #region SaveDetailClass using (var context = new BackendTestDbContext(options)) { var classMasterRepository = new ClassMasterRepository(context); var classDetailRepository = new ClassDetailRepository(context); var studentRepository = new StudentRepository(context); var classDetailStudentRepository = new ClassDetailStudentRepository(context); var classController = new ClassController(classMasterRepository, classDetailRepository, studentRepository, classDetailStudentRepository); var toBeSavedEntity = new ClassDetailDto { ClassMasterId = savedMasterClass.Id }; var rawJson = await classController.SaveDetailClass(toBeSavedEntity); var res = (WebApiSimpleResponse <ClassDetail>)rawJson.Value; savedDetailClass = res.Result; Assert.IsFalse(res.ErrorFlag); } #endregion var student = new Student(); #region SaveStudent using (var context = new BackendTestDbContext(options)) { var _studentRepository = new StudentRepository(context); var _classDetailStudentRepository = new ClassDetailStudentRepository(context); var studentController = new StudentController(_studentRepository, _classDetailStudentRepository); var toBeSavedStudent = new StudentDto { FirstName = "John", LastName = "Smith", Gpa = (decimal)15.2, Age = 20 }; var rawJsonRes1 = await studentController.SaveStudent(toBeSavedStudent); student = ((WebApiSimpleResponse <Student>)rawJsonRes1.Value).Result; Assert.IsFalse(((WebApiSimpleResponse <Student>)rawJsonRes1.Value).ErrorFlag); } #endregion #region AddStudentToDetailClass using (var context = new BackendTestDbContext(options)) { var classMasterRepository = new ClassMasterRepository(context); var classDetailRepository = new ClassDetailRepository(context); var studentRepository = new StudentRepository(context); var classDetailStudentRepository = new ClassDetailStudentRepository(context); var classController = new ClassController(classMasterRepository, classDetailRepository, studentRepository, classDetailStudentRepository); var toBeSavedEntity = new ClassDetailDto { ClassDetailId = savedDetailClass.Id, StudentDtos = new List <StudentDto> { new StudentDto { Id = student.Id } } }; var rawJson = await classController.AddStudentsToDetailClass(toBeSavedEntity); var res = (WebApiSimpleResponse <ClassDetailStudent>)rawJson.Value; Assert.IsFalse(res.ErrorFlag); } #endregion #region DeleteWithNullValue using (var context = new BackendTestDbContext(options)) { var _studentRepository = new StudentRepository(context); var _classDetailStudentRepository = new ClassDetailStudentRepository(context); var studentController = new StudentController(_studentRepository, _classDetailStudentRepository); var rawJsonDelete = await studentController.DeleteStudent(null); var deleteStudentRes = (WebApiSimpleResponse <Student>)rawJsonDelete.Value; Assert.IsTrue(deleteStudentRes.ErrorFlag); } #endregion #region DeleteAStudentEnrolledInAClass using (var context = new BackendTestDbContext(options)) { var _studentRepository = new StudentRepository(context); var _classDetailStudentRepository = new ClassDetailStudentRepository(context); var studentController = new StudentController(_studentRepository, _classDetailStudentRepository); var toBeDeletedStudent = new StudentDto { Id = student.Id, }; var rawJsonDelete = await studentController.DeleteStudent(toBeDeletedStudent); var deleteStudentRes = (WebApiSimpleResponse <Student>)rawJsonDelete.Value; Assert.IsTrue(deleteStudentRes.ErrorFlag); } #endregion #region RemoveStudentFromDetailClass using (var context = new BackendTestDbContext(options)) { var classMasterRepository = new ClassMasterRepository(context); var classDetailRepository = new ClassDetailRepository(context); var studentRepository = new StudentRepository(context); var classDetailStudentRepository = new ClassDetailStudentRepository(context); var classController = new ClassController(classMasterRepository, classDetailRepository, studentRepository, classDetailStudentRepository); var toBeSavedEntity = new ClassDetailDto { ClassDetailId = savedDetailClass.Id, StudentDtos = new List <StudentDto> { new StudentDto { Id = student.Id } } }; var rawJson = await classController.RemoveStudentsFromDetailClass(toBeSavedEntity); var res = (WebApiSimpleResponse <ClassMasterDto>)rawJson.Value; Assert.IsFalse(res.ErrorFlag); } #endregion #region NiceStudentDelete using (var context = new BackendTestDbContext(options)) { var _studentRepository = new StudentRepository(context); var _classDetailStudentRepository = new ClassDetailStudentRepository(context); var studentController = new StudentController(_studentRepository, _classDetailStudentRepository); var toBeDeletedStudent = new StudentDto { Id = student.Id, }; var rawJsonDelete = await studentController.DeleteStudent(toBeDeletedStudent); var deleteStudentRes = (WebApiSimpleResponse <Student>)rawJsonDelete.Value; Assert.IsFalse(deleteStudentRes.ErrorFlag); var rawJsonGetStudentById = studentController.GetStudentById(toBeDeletedStudent.Id); var getStudentByIdRes = (WebApiSimpleResponse <StudentDto>)rawJsonGetStudentById.Value; Assert.IsTrue(getStudentByIdRes.ErrorFlag); } #endregion #region InvalidId using (var context = new BackendTestDbContext(options)) { var _studentRepository = new StudentRepository(context); var _classDetailStudentRepository = new ClassDetailStudentRepository(context); var studentController = new StudentController(_studentRepository, _classDetailStudentRepository); var toBeDeletedStudent = new StudentDto { Id = student.Id, }; var rawJsonDelete = await studentController.DeleteStudent(toBeDeletedStudent); var deleteStudentRes = (WebApiSimpleResponse <Student>)rawJsonDelete.Value; Assert.IsTrue(deleteStudentRes.ErrorFlag); } #endregion }
public async Task <JsonResult> RemoveStudentsFromDetailClass([FromBody] ClassDetailDto dto) { WebApiSimpleResponse <ClassMasterDto> res; try { if (dto == null) { throw new Exception("Entity not found"); } var detailClassEntity = _classDetailRepository.GetAll().FirstOrDefault(x => x.Id == dto.ClassDetailId); if (detailClassEntity == null) { throw new Exception("Detail class not found"); } if (dto.StudentDtos == null || dto.StudentDtos.Count <= 0) { throw new Exception("No student is selcted!"); } var toBeRemovedEntities = new List <ClassDetailStudent>(); foreach (var studentDto in dto.StudentDtos) { var studentEntity = _studentRepository.GetAll().FirstOrDefault(x => x.Id == studentDto.Id); if (studentEntity == null) { throw new Exception("Student not found"); } var detailClassStudentEntity = _classDetailStudentRepository.GetAll() .FirstOrDefault(x => x.ClassDetailId == detailClassEntity.Id && x.StudentId == studentDto.Id); if (detailClassStudentEntity == null) { throw new Exception("The given student is not registered in the given class"); } toBeRemovedEntities.Add(detailClassStudentEntity); } foreach (var classDetailStudent in toBeRemovedEntities) { await _classDetailStudentRepository.Delete(classDetailStudent); } res = new WebApiSimpleResponse <ClassMasterDto> { Message = ResponseMessage.OperationSucceeded.GetDescription() }; } catch (Exception ex) { Logger.ErrorException(ex.Message, ex); res = new WebApiSimpleResponse <ClassMasterDto> { ErrorFlag = true, Message = ResponseMessage.OperationFailed.GetDescription() }; } return(new JsonResult(res)); }
public async Task <JsonResult> AddStudentsToDetailClass([FromBody] ClassDetailDto dto) { WebApiSimpleResponse <ClassDetailStudent> res; try { if (dto == null) { throw new Exception("Entity not found"); } if (dto.StudentDtos == null || dto.StudentDtos.Count <= 0) { throw new Exception("No student is selcted!"); } var detailClassEntity = _classDetailRepository.GetAll().FirstOrDefault(x => x.Id == dto.ClassDetailId); if (detailClassEntity == null) { throw new Exception("Detail class not found"); } var detailClassStudents = _classDetailStudentRepository.GetAll().Where(x => x.ClassDetailId == dto.ClassDetailId); var toBeSavedEntities = new List <ClassDetailStudent>(); var newStudents = new List <Student>(); foreach (var studentDto in dto.StudentDtos) { var studentEntity = _studentRepository.GetAll().FirstOrDefault(x => x.Id == studentDto.Id); if (studentEntity == null) { throw new Exception("Student not found"); } var detailClassStudentEntity = detailClassStudents.FirstOrDefault(x => x.StudentId == studentDto.Id); if (detailClassStudentEntity != null) { throw new Exception("The given student is already registered in the given class"); } var doesStudentWithSameSurnameExist = detailClassStudents.Count(x => x.Student.LastName == studentEntity.LastName); if (doesStudentWithSameSurnameExist > 0) { throw new Exception("Students with duplicate surnames in the same class!"); } var toBeSavedDuplicateSurname = newStudents.FirstOrDefault(x => x.LastName == studentEntity.LastName); if (toBeSavedDuplicateSurname != null) { throw new Exception("Students with duplicate surnames in the same class!"); } toBeSavedEntities.Add(new ClassDetailStudent { StudentId = studentDto.Id, ClassDetailId = detailClassEntity.Id, CreationDate = DateTime.Now, ModificationDate = DateTime.Now }); newStudents.Add(studentEntity); } foreach (var classDetailStudent in toBeSavedEntities) { await _classDetailStudentRepository.Insert(classDetailStudent); } res = new WebApiSimpleResponse <ClassDetailStudent> { Message = ResponseMessage.OperationSucceeded.GetDescription() }; } catch (Exception ex) { Logger.ErrorException(ex.Message, ex); res = new WebApiSimpleResponse <ClassDetailStudent> { ErrorFlag = true, Message = ResponseMessage.OperationFailed.GetDescription() }; } return(new JsonResult(res)); }
public JsonResult GetDetailClass(int masterClassId) { WebApiSimpleResponse <ClassDetailDto> res; try { var classMasterEntity = _classMasterRepository.GetAll().FirstOrDefault(x => x.Id == masterClassId); if (classMasterEntity == null) { var ex = new Exception("Class not found"); throw ex; } var classDetailEntity = _classDetailRepository.GetAll().FirstOrDefault(x => x.ClassMasterId == masterClassId); if (classDetailEntity == null) { var ex = new Exception("Class not found"); throw ex; } var classDetailStudentEntity = _classDetailStudentRepository.GetAll() .Where(x => x.ClassDetailId == classDetailEntity.Id).Select(x => x.Student).ToList(); var lst = new ClassDetailDto { ClassDetailId = classDetailEntity.Id, ClassName = classMasterEntity.ClassName, ClassMasterId = classMasterEntity.Id, StudentDtos = new List <StudentDto>() }; if (classDetailStudentEntity.Count > 0) { foreach (var classDetailStudent in classDetailStudentEntity) { lst.StudentDtos.Add(new StudentDto { Id = classDetailStudent.Id, LastName = classDetailStudent.LastName, FirstName = classDetailStudent.FirstName, Gpa = classDetailStudent.Gpa, Age = classDetailStudent.Age }); } } res = new WebApiSimpleResponse <ClassDetailDto> { Result = lst, Message = ResponseMessage.OperationSucceeded.GetDescription() }; } catch (Exception ex) { Logger.ErrorException(ex.Message, ex); res = new WebApiSimpleResponse <ClassDetailDto> { ErrorFlag = true, Message = ResponseMessage.OperationFailed.GetDescription() }; } return(new JsonResult(res)); }