Пример #1
0
        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
            });
        }
Пример #3
0
        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));
        }
Пример #4
0
        /// <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);
    }
Пример #6
0
        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());
                }
            }
        }