public async Task <JsonResult> Get(string filters = "", string sorts = "", int page = 1, int pageSize = 100, string fields = "") { DotNetCoreSieveModel sieveModel = new DotNetCoreSieveModel { Filters = filters, Sorts = sorts, Fields = fields }; var properties = (new Customer()).GetType().GetProperties(); if (!sieveModel.AreFiltersValid()) { throw new DotNetCoreRefDapperException(); } string message = string.Empty; if (!sieveModel.AreFieldsValid(properties, out message)) { throw new DotNetCoreRefDapperException(); } var result = await _implementation.GetAsync(filters, sorts, page, pageSize, fields); foreach (var res in result.Entities) { res.SetSerializableProperties(fields); } return(new JsonResult( result, new Newtonsoft.Json.JsonSerializerSettings() { ContractResolver = new ShouldSerializeContractResolver() })); }
public async Task <AgentResponse> GetAsync(string filters, string sorts, int page, int pageSize, string fields) { DotNetCoreSieveModel sieveModel = new DotNetCoreSieveModel { Filters = filters, Sorts = sorts, Fields = fields }; List <string> filterStrings = new List <string>(), sortStrings = new List <string>(); string filtering = string.Empty, sorting = string.Empty; if (sieveModel.GetFiltersParsed() != null) { foreach (var filter in sieveModel.GetFiltersParsed()) { filterStrings.Add(string.Format("{0}{1}{2}{3}", filter.Names[0], filter.Operator == "==" ? "='" : filter.Operator, filter.Value, filter.Operator == "==" ? "'" : "")); } filtering = String.Join(" AND ", filterStrings.ToArray()); } if (sieveModel.GetSortsParsed().Count > 0) { foreach (var sort in sieveModel.GetSortsParsed()) { sortStrings.Add(string.Format("{0} {1}", sort.Name.Replace("-", ""), sort.Descending ? "DESC" : "ASC")); } } else { sortStrings.Add("id ASC"); } sorting = String.Join(", ", sortStrings.ToArray()); using (IDbConnection conn = _connection) { DynamicParameters parameters = new DynamicParameters(); parameters.Add("@filters", filtering); parameters.Add("@sorts", sorting); parameters.Add("@page", page); parameters.Add("@pageSize", pageSize); parameters.Add("@fields", fields); conn.Open(); var reader = await conn.QueryMultipleAsync("AgentsGet", parameters, commandType : CommandType.StoredProcedure); int totalRows = (await reader.ReadAsync <int>()).FirstOrDefault(); var result = (await reader.ReadAsync <Agent>()).ToList(); var response = new AgentResponse() { Page = page, PageSize = pageSize, TotalItems = totalRows, Entities = result }; conn.Close(); return(await Task.Run(() => response)); } }