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 void GenerateParentId_WithSingleId_ShouldGenerateIdForParent() { var id = _idGeneratorService.GenerateParentId(); id.Should().StartWith(GlobalConstants.ParentIdPrefix.ToString()); }