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)); }