public async Task <T> CreateParentAsync <T>(ParentInputModel inputModel) { var studentIds = inputModel.StudentIds.Select(int.Parse); var students = _studentsRepository.All().Where(s => studentIds.Contains(s.Id)); if (students.Any()) { var parent = new Parent { FirstName = inputModel.FirstName, LastName = inputModel.LastName, PhoneNumber = inputModel.PhoneNumber, UniqueId = _idGeneratorService.GenerateParentId() }; await _parentsRepository.AddAsync(parent); await _parentsRepository.SaveChangesAsync(); foreach (var student in students) { var studentParentPair = new StudentParent { Student = student, Parent = parent }; await _studentParentsMappingRepository.AddAsync(studentParentPair); } await _studentParentsMappingRepository.SaveChangesAsync(); BasePersonModel baseModel = _parentsRepository.All().FirstOrDefault(p => p.UniqueId == parent.UniqueId); return(AutoMapperConfig.MapperInstance.Map <T>(baseModel)); } throw new ArgumentException($"Sorry, we couldn't any student with id in the following list: [{string.Join(", ", studentIds)}]"); }
public async Task CreateParentAsync_WithoutAnyStudentIds() { OneTimeSetUp(); var parent = NewParentCreate(); var newParentInputModel = new ParentInputModel() { FirstName = parent.FirstName, LastName = parent.LastName, PhoneNumber = parent.PhoneNumber, StudentIds = new List <string> { } }; try { await _parentsService.CreateParentAsync <Parent>(newParentInputModel); } catch (ArgumentException ae) { ae.Message.Should().Be($"Sorry, we couldn't any student with id in the following list: [{string.Join(", ", newParentInputModel.StudentIds)}]"); } _parentsRepositoryMock.Object.All().Count().Should().Be(1); }