public async Task <ActionResult <AccountListDTO> > LookupAccount( [FromQuery] short?l1, [FromQuery] short?l2, [FromQuery] short?l3, [FromQuery] short?l4) { try { var accountQuery = _accountRepo.GetAccounts(); if (l1.HasValue) { accountQuery = accountQuery.Where(a => a.Level1 == l1.Value); } if (l2.HasValue) { accountQuery = accountQuery.Where(a => a.Level2 == l2.Value); } if (l3.HasValue) { accountQuery = accountQuery.Where(a => a.Level3 == l3.Value); } if (l4.HasValue) { accountQuery = accountQuery.Where(a => a.Level4 == l4.Value); } var accounts = await accountQuery .OrderBy(a => a.AccountId) .ToListAsync(); var accountList = _mapper.Map <List <Account>, List <AccountDTO> >(accounts); var accountListCount = accountList.Count; var dto = new AccountListDTO { Accounts = accountList, TotalItems = accountListCount, TotalPages = 1, CurrentPage = 1, ItemsPerPage = accountListCount }; return(dto); } catch (Exception e) { _logger.LogError("Exception occurred during an Account lookup.\nError: " + e.Message); return(BadRequest()); } }
/// <summary> /// Returns a list of account dimensions /// </summary> /// <param name="Page"></param> /// <param name="PageSize"></param> /// <returns></returns> public AccountListDTO GetAccountDimensions(int Page, int PageSize, string AccountName = "") { try { AccountListDTO list = DimensionDAL.GetAccountDimensions(Page, PageSize, AccountName); return(list); } catch (Exception) { throw; } }
/// <summary> /// Returns a list of accounts from the database /// </summary> /// <returns></returns> public AccountListDTO GetAccountDimensions(int Page, int PageSize, string AccountName = "") { AccountListDTO list = new AccountListDTO(); SQLAzure.DbConnection dbConn = new SQLAzure.DbConnection(_connectionString); try { dbConn.Open(); SQLAzure.RetryLogic.DbCommand dbComm = new SQLAzure.RetryLogic.DbCommand(dbConn); if (AccountName != string.Empty) { dbComm.CommandText = String.Format("SELECT ID, AccountID, AccountName, TotalCount = COUNT(ID) OVER() FROM DimAccount WHERE AccountName LIKE '%' + @AccountName + '%' ORDER BY ID OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY", (Page * PageSize), PageSize); dbComm.Parameters.Add(new SqlParameter("AccountName", AccountName)); } else { dbComm.CommandText = String.Format("SELECT ID, AccountID, AccountName, TotalCount = COUNT(ID) OVER() FROM DimAccount ORDER BY ID OFFSET {0} ROWS FETCH NEXT {1} ROWS ONLY", (Page * PageSize), PageSize); } System.Data.IDataReader rdr = dbComm.ExecuteReader(System.Data.CommandType.Text); while (rdr.Read()) { AccountDTO account = new AccountDTO(); account.ID = Convert.ToInt32(rdr["ID"]); account.AccountID = Guid.Parse(rdr["AccountID"].ToString()); account.AccountName = rdr["AccountName"].ToString(); list.RecordCount = Convert.ToInt32(rdr["TotalCount"]); list.Items.Add(account); } list.PageNumber = Page; list.PageSize = PageSize; list.TotalPages = GetNumberOfPagesAvailable(PageSize, list.RecordCount); } catch (SqlException) { throw; } finally { dbConn.Close(); } return(list); }
public async Task <AccountListDTO> GetAccountList(int?pageNumber, string searchKey) { var users = _accountRepository.Query().Where(x => string.IsNullOrEmpty(searchKey) || x.Name.ToLower().Contains(searchKey) || x.Email.ToLower().Contains(searchKey) || x.Players.Any(y => y.Name.ToLower().Contains(searchKey))); var currentPageNum = pageNumber ?? 1; var offset = (ServerInfo.ItemsPerPage * currentPageNum) - ServerInfo.ItemsPerPage; var model = new AccountListDTO() { TotalResults = await users.CountAsync() }; var result = await users .Skip(offset) .Take(ServerInfo.ItemsPerPage) .ToListAsync(); foreach (var account in result) { var isAccountBanned = await _banService.IsBanned(account); var isAccountLocked = await _userManager.IsLockedOutAsync(account.AccountIdentity); var AccountRole = (await _userManager.GetRolesAsync(account.AccountIdentity)).Single(); var banReason = isAccountBanned ? account.AccountBan.Reason : string.Empty; var accountListItem = new AccountListItemDTO() { Id = account.Id, AccountName = account.Name, Email = account.Email, Characters = account.Players.Select(x => x.Name), IsLocked = isAccountLocked, Role = AccountRole, IsBanned = isAccountBanned, IsBannedReason = banReason }; model.Accounts.Add(accountListItem); } return(model); }
public IHttpActionResult Get(int Page, int PageSize, string AccountName = "") { ValidateModel(); try { AccountListDTO list = _dimensionBLL.GetAccountDimensions(Page, PageSize, AccountName); AccountDimensionList accountDimensions = new AccountDimensionList(); foreach (AccountDTO l in list.Items) { accountDimensions.Items.Add((AccountDimension)l); } if (accountDimensions.Items.Count > 0) { accountDimensions.PageNumber = list.PageNumber; accountDimensions.PageSize = list.PageSize; accountDimensions.RecordCount = list.RecordCount; accountDimensions.TotalPages = list.TotalPages; return(Ok(accountDimensions)); } else { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.NoContent); response.Content = new StringContent("No Content"); return(ResponseMessage(response)); } } catch (Exception ex) { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.InternalServerError); response.Content = new StringContent("Unknown Error"); // Insert Logging here Console.WriteLine(ex); return(ResponseMessage(response)); } }
public async Task <ActionResult <AccountListDTO> > GetAccounts([FromQuery] int page = 1, [FromQuery] int itemsPerPage = 20) { try { if (page < 1 || itemsPerPage < 1) { return(BadRequest("Request contained one or more invalid paging values.")); } var accounts = await _accountRepo.GetAccounts() .Skip((page - 1) * itemsPerPage) .Take(itemsPerPage) .OrderBy(a => a.AccountId) .ToListAsync(); var accountCount = await _accountRepo.GetAccounts().CountAsync(); var accountList = _mapper.Map <List <Account>, List <AccountDTO> >(accounts); var dto = new AccountListDTO { Accounts = accountList, TotalItems = accountCount, TotalPages = decimal.ToInt32(Math.Ceiling((decimal)accountCount / (decimal)itemsPerPage)), CurrentPage = page, ItemsPerPage = itemsPerPage }; return(dto); } catch (Exception e) { _logger.LogError("Exception occurred while attempting to retrieve Accounts.\nError: " + e.Message); return(BadRequest()); } }