Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }