#ConectionString from startup
public static string ConnectionString { get; private set; }
ConnectionString = Configuration.GetValue
#method
[HttpGet(“userprofile/api/{categoryId}/gettopFiveUserbycategoryid”)]
public async Task> GetTopFiveUserByCategoryId(Guid categoryId)
{
List
String connectionString = Startup.ConnectionString;
if (categoryId != Guid.Empty)
{
summeries = await queryFactory.ResolveQuery
}
else
{
summeries = await queryFactory.ResolveQuery
}
summeries = new UserSummaryFilter().GetUserSummaryFilter(summeries,queryFactory,configuration);
return summeries;
}
#Task encapsulation
public async Task> GetUserSummnaryByCategoryId(Guid categoryId, string connectionString)
{
List
string query = String.Format(“SpTopUserCalculation null,'{0}'”, categoryId);
userSummery = await Task.Run(() => DataReaderToListHelper.DataReaderToList
return userSummery;
}
#helpers
public class DataReaderToListHelper
{
public static T DataReaderToObject
{
SqlDataReader reader;
T obj = new T();
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
reader = command.ExecuteReader();
// T list = new T();
var columns = new List
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
while (reader.Read())
{
foreach (var prop in obj.GetType().GetProperties())
{
try
{
PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(obj, Convert.ChangeType(reader[prop.Name], propertyInfo.PropertyType), null);
}
catch
{
continue;
}
}
}
}
return obj;
}
public static List
{
List
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader;
reader = command.ExecuteReader();
var columns = new List
for (int i = 0; i < reader.FieldCount; i++)
{
columns.Add(reader.GetName(i));
}
while (reader.Read())
{
T obj = new T();
foreach (var prop in obj.GetType().GetProperties())
{
try
{
PropertyInfo propertyInfo = obj.GetType().GetProperty(prop.Name);
propertyInfo.SetValue(obj,
Convert.ChangeType(reader[prop.Name], propertyInfo.PropertyType), null);
}
catch
{
continue;
}
}
list.Add(obj);
}
}
return list;
}
}