private async Task <VM.ApplicationUser> FindUserByInternalAccountAsync(AccountSpec accountSpec) { //return await FindUserByInternalAccountSqlAsync(accountSpec).ConfigureAwait(false); //return await _dbContext.Database // .SqlQuery<VM.ApplicationUser>(sql, // new SqlParameter(nameof(accountSpec.UserName), accountSpec.UserName), // new SqlParameter(nameof(accountSpec.Password), accountSpec.Password)) // .FirstOrDefaultAsync() // .ConfigureAwait(false); //var account = Repository.Find(accountSpec); //return new VM.ApplicationUser(account.UserId, account.UserName, account.Id, account.AccountType, true, null); return(await Repository.FindAll(accountSpec) .Select(a => new VM.ApplicationUser { Id = a.UserId, AccountId = a.Id, UserName = a.UserName, UserToken = a.UserName, Enabled = true, AccountType = a.AccountType }) .FirstOrDefaultAsync() .ConfigureAwait(false)); //var userQuery = from account in Repository.FindAll(accountSpec) // join u in Repository.FindAll<User>() // on account.UserId equals u.Id // select new { u, account }; //var userAccount = await userQuery.FirstOrDefaultAsync() // .ConfigureAwait(false); //return userAccount?.u.ToVm(userAccount.account); }
private static async Task <VM.ApplicationUser> FindUserByInternalAccountSqlAsync(AccountSpec accountSpec) { var sql = $"select top 1 * from Accounts where [AccountType] = 0 and [UserName] = @username and [Password] = @password "; using (var conn = new SqlConnection("Server=(localdb)\\projects;Database=DemoDb;Integrated Security=true;")) { await conn.OpenAsync() .ConfigureAwait(false); var cmd = new SqlCommand(sql, conn); cmd.Parameters.AddRange(new[] { new SqlParameter(nameof(accountSpec.UserName), accountSpec.UserName), new SqlParameter(nameof(accountSpec.Password), accountSpec.Password) }); var result = await cmd.ExecuteReaderAsync(CancellationToken.None) .ConfigureAwait(false); if (result.HasRows && await result.ReadAsync().ConfigureAwait(false)) { return(new VM.ApplicationUser((string)result["UserId"], (string)result["UserName"], (string)result["Id"], AccountType.Internal, true, (string)result["UserName"])); } return(null); } }