private async Task <IEnumerable <UserRankingResponseData> > GetUserRankingData(TableSets data) { var res = await Task.Run(() => { var result = new List <UserRankingResponseData>(); var tmpDate = data.Elements.First(); foreach (var row in tmpDate.Rows) { result.Add( new UserRankingResponseData { Place = Convert.ToInt32(row.Elements[0]), NickName = Convert.ToString(row.Elements[1]), Kills = Convert.ToInt32(row.Elements[2]), KD = Convert.ToDouble(row.Elements[3]), GamesPlayed = Convert.ToInt32(row.Elements[4]), GamesWon = Convert.ToInt32(row.Elements[5]), ClanName = Convert.ToString(row.Elements[6]) }); } return(result); }); return(res); }
public async Task <TableSets> ExecuteDataCommand(string command, CommandType commandType, int?timeout = null, params SqlParameter[] parameters) { SqlConnection connection = null; TableSets tableSets = new TableSets(); try { connection = new SqlConnection(GetSqlConnection()); await connection.OpenAsync(); using (var sqlCommand = connection.CreateCommand()) { sqlCommand.CommandText = command; sqlCommand.CommandType = commandType; sqlCommand.Parameters.AddRange(parameters); sqlCommand.CommandTimeout = 3000; if (timeout.HasValue) { sqlCommand.CommandTimeout = timeout.Value; } using (var sqlReader = await sqlCommand.ExecuteReaderAsync()) { do { TableSet tableSet = new TableSet(); var columnSchema = sqlReader.GetColumnSchema(); if (columnSchema == null) { throw new Exception("Table schema does not contain data"); } var columns = columnSchema.Select(t => new { Type = t.DataType.FullName, Value = t.ColumnName }).ToDictionary(t => t.Value, v => v.Type); tableSet.SetTableHeader(columns); while (sqlReader.ReadAsync().Result) // Read the row { Row row = new Row(); foreach (var column in columns) // Read single value { var item = sqlReader.GetFieldValueAsync <object>(sqlReader.GetOrdinal(column.Key)).Result; row.Elements.Add(item); } tableSet.Rows.Add(row); } tableSets.Elements.Add(tableSet); } while (sqlReader.NextResultAsync().Result); // Get next table } } } catch (Exception e) { Console.WriteLine(e); throw; } finally { connection?.CloseAsync(); } return(tableSets); }
private async Task <IEnumerable <ClanRankingResponseModel> > GetClanRankingData(TableSets data) { return(await Task.Run(() => { var result = new List <ClanRankingResponseModel>(); var tmpDate = data.Elements.First(); foreach (var row in tmpDate.Rows) { result.Add( new ClanRankingResponseModel { Name = Convert.ToString(row.Elements[0]), Wins = Convert.ToInt32(row.Elements[1]), Losses = Convert.ToInt32(row.Elements[2]), Draws = Convert.ToInt32(row.Elements[3]), Experience = Convert.ToInt32(row.Elements[4]) }); } return result; })); }