Beispiel #1
0
        private async Task AsociateExistingParentWithNewStudent(User parentUser, User studentUser)
        {
            var roles = parentUser.UserRoles.Select(ur => ur.RoleId);

            if (roles.All(r => r != (int)RoleTypes.Parent))
            {
                var userRole = new UserRole
                {
                    RoleId = (int)RoleTypes.Parent,
                    UserId = parentUser.Id
                };
                _userRoleRepository.Create(userRole);
            }

            var parentStudentsResult = await _parentStudentRepository.FindAll(ps => ps.ParentId == parentUser.Id);

            var students = parentStudentsResult.Select(ps => ps.StudentId);

            if (students.Any(s => s == studentUser.Id))
            {
                return;
            }

            var parentStudent = new ParentStudent
            {
                ParentId     = parentUser.Id,
                StudentId    = studentUser.Id,
                Relationship = ParentRelationship.Father
            };

            _parentStudentRepository.Create(parentStudent);

            await _parentStudentRepository.Save();

            await _mailService.SendEmailToExistingParentToValidateStudent(studentUser, parentUser);
        }
        public async Task <IOperationResult <IEnumerable <User> > > GetStudentsByParentId(int parentId)
        {
            var parentStudents = await _parentStudentRepository
                                 .FindAll(x => x.ParentId == parentId,
                                          x => x.Student);

            if (parentStudents == null || !parentStudents.Any())
            {
                return(BasicOperationResult <IEnumerable <User> > .Fail("Los datos del usuario no fueron encontrados"));
            }

            var studentsUsers = parentStudents.Select(ps => ps.Student);

            return(BasicOperationResult <IEnumerable <User> > .Ok(studentsUsers));
        }