Skip to content

Instantly share code, notes, and snippets.

@christopherbauer
Last active September 12, 2015 15:03
Show Gist options
  • Select an option

  • Save christopherbauer/af878b77f6f4956feea6 to your computer and use it in GitHub Desktop.

Select an option

Save christopherbauer/af878b77f6f4956feea6 to your computer and use it in GitHub Desktop.
using System;
using System.Linq;
using System.Web.Http;
using Customer.Models;
namespace Customer.api
{
public class DataTablesController : ApiController
{
private readonly ICustomerRepository _customerRepository;
private readonly ICustomerModelArranger _customerModelArranger;
public DataTablesController(ICustomerRepository customerRepository, ICustomerModelArranger customerModelArranger)
{
_customerRepository = customerRepository;
_customerModelArranger = customerModelArranger;
}
public DataTableResult Get([FromUri]DataTableParameters parameters)
{
var globalSearchValue = parameters.search.value;
var customerIdSearchValue = parameters.columns[0].search.value;
var customerCitySearchValue = parameters.columns[1].search.value;
var customerStateSearchValue = parameters.columns[3].search.value;
var customerFirstNameSearchValue = parameters.columns[4].search.value;
var customerLastNameSearchValue = parameters.columns[5].search.value;
var totalCustomers = _customerRepository.GetCustomerCount();
var customers = _customerRepository.GetCustomers(cardNumberSearchValue, globalSearchValue, customerFirstNameSearchValue, customerLastNameSearchValue, applicationStoreSearchValue, employeeIdSearchValue);
var columnIndex = parameters.order[0].column;
var sortDirection = (parameters.order[0].dir ?? "");
var orderedCustomers = _customerModelArranger.GetCustomersOrderedBy(customers, sortDirection, columnIndex);
var pageCustomers = orderedCustomers.Skip(parameters.start).Take(parameters.length).ToArray();
return new DataTableResult
{
draw = Convert.ToInt32(parameters.draw),
recordsTotal = totalCustomers,
recordsFiltered = customers.Count(),
data = pageCustomers,
error = ""
};
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment