public async Task <IAccount> FindByEmailAsync(string email) { var account = await _accountRepository.FindByEmailAsync(email); if (account != null) { account.User = await _userRepository.FindByAccountIdAsync(account.Id); if (account.AccountRoles == null || account.AccountRoles.Count() == 0) { var accountRoles = await _accountRoleRepository.FindByAccountIdAsync(account.Id); account.AccountRoles = accountRoles.ToList(); if (account.AccountRoles != null && account.AccountRoles.Count > 0) { if (account.AccountRoles[0].Role == null) { foreach (var accountRole in account.AccountRoles) { accountRole.Account = account; accountRole.Role = await _roleRepository.FindByIdAsync(accountRole.RoleId); } } } } } return(account); }