Ejemplo n.º 1
0
        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)}]");
        }
Ejemplo n.º 2
0
        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);
        }