public async Task <IActionResult> GetList(DatatableRequest request) { var result = await _customerVipService.GetByPaging(request); if (result.IsSuccess) { return(Json(result.Data)); } return(Json(DatatableResponse <GetCustomerVipPagingResponse> .Init(request.Draw))); }
private static DatatableResponse Convert(DatatableRequest datatableRequest, Dictionary <string, Func <ResourceSet, string> > mapping, SearchResourceSetResult searchResult) { var response = new DatatableResponse(); var data = new List <List <object> >(); if (searchResult.Content != null) { foreach (var resource in searchResult.Content) { var row = new List <object>(); foreach (var column in datatableRequest.Columns.OrderBy(c => c.Data)) { if (!mapping.ContainsKey(column.Name)) { continue; } row.Add(mapping[column.Name](resource)); } row.Add(resource.Scopes); row.Add(resource.Id); var policies = new List <ResourcePolicyResponse>(); if (resource.AuthPolicies != null) { foreach (var policy in resource.AuthPolicies) { policies.Add(new ResourcePolicyResponse { PolicyId = policy.Id, Permissions = policy.Claims.Select(c => $"{c.Type} : {c.Value}"), Scopes = policy.Scopes }); } } row.Add(policies); data.Add(row); } } return(new DatatableResponse { Draw = datatableRequest.Draw, Data = data, RecordsFiltered = searchResult.TotalResults, RecordsTotal = searchResult.TotalResults }); }
public async Task <IActionResult> GetPendingRequests([FromBody] DatatableRequest datatableRequest) { var subject = User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value; var searchResult = await _pendingRequestsActions.GetPendingRequests(new GetPendingRequestsParameter { Count = datatableRequest.Length, StartIndex = datatableRequest.Start, Subject = subject }).ConfigureAwait(false); var data = new List <List <object> >(); if (searchResult.PendingRequests != null) { foreach (var pendingRequest in searchResult.PendingRequests) { var row = new List <object>(); foreach (var column in datatableRequest.Columns.OrderBy(c => c.Data)) { if (!_mappinNameToCallback.ContainsKey(column.Name)) { continue; } row.Add(_mappinNameToCallback[column.Name](pendingRequest)); } row.Add(pendingRequest.Id); data.Add(row); } } var response = new DatatableResponse { Draw = datatableRequest.Draw, RecordsFiltered = searchResult.TotalResults, RecordsTotal = searchResult.TotalResults, Data = data }; return(new JsonResult(response)); }
/// <summary> /// This method Retrieves data and applies filters/ordering/paging from our database /// </summary> /// <param name="model"></param> /// <returns></returns> protected async Task <DatatableResponse <T> > GetData(DatatablesPostModel model) { //counts the number of rows in the db. var total = await _context.Set <T>() .CountAsync(); //how many items per page. Example 10 var pageSize = model.Length; //calculates the page we want var pageIndex = (int)Math.Ceiling( (decimal)(model.Start / model.Length) + 1); //Column and how to sort. This is how datatables sends us the information var columnName = model.Columns[model.Order[0].Column].Data; //descending sort or asc var isDescending = model.Order[0].Dir == "desc"; //initializes the repository var repository = new Repository <T>(_context); //Here we get the search value from datatable var filter = GetFilter(model.Search.Value); //this method gets the includes for the entity var includes = GetIncludes(); var gridItems = await repository .GetAllWithPagingAsync(filter, includes, pageSize, pageIndex, t => t.OrderingHelper(columnName, isDescending)); //we map the data to the response we want to send var response = new DatatableResponse <T> { data = gridItems, draw = model.Draw, recordsFiltered = total, recordsTotal = total }; return(response); }
public DatatableResponse <DatatableDemoListViewModel> List(int total, [FromUri] DatatableResquest datatableRequest) { var list = new List <DatatableDemoListViewModel>(); for (long i = 1; i <= total; i++) { list.Add(new DatatableDemoListViewModel { Id = i, Name = $"Sample name {i}", Total = i * 10, CreatedDate = DateTime.Now.AddMinutes(-i), }); } var dataTableResult = new DatatableResponse <DatatableDemoListViewModel>(); dataTableResult.Draw = datatableRequest.Draw; dataTableResult.Data = list.Skip(datatableRequest.Start).Take(datatableRequest.Length); dataTableResult.RecordsTotal = list.Count(); dataTableResult.RecordsFiltered = list.Count(); return(dataTableResult); }
private static DatatableResponse DownloadDatatable(QuandlDatatable datatable) { using (PatientWebClient client = new PatientWebClient()) { try { var json = client.DownloadString(" https://www.quandl.com/api/v3/datatables/" + datatable.Name + ".json?api_key=" + Utils.Constants.API_KEY); DatatableResponse response = JsonConvert.DeserializeObject <DatatableResponse>(json, new JsonSerializerSettings { ContractResolver = Utils.Converters.MakeUnderscoreContract() }); Utils.ConsoleInformer.PrintProgress("1B", "Fetching datatable [" + datatable.Name + "]: ", Utils.Helpers.GetPercent(count, datatables.Count).ToString() + "%"); return(response); } catch (Exception e) { // Add error to inform and log later errors.Add(new Tuple <string, string>("Failed to fetch datatable: [" + datatable.Name + "]", "Ex: " + e.Message)); return(new DatatableResponse()); } } }