Esempio 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)}]");
        }
Esempio n. 2
0
        public void GenerateParentId_WithSingleId_ShouldGenerateIdForParent()
        {
            var id = _idGeneratorService.GenerateParentId();

            id.Should().StartWith(GlobalConstants.ParentIdPrefix.ToString());
        }