/// <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 async Task <PositionViewModel> GetPosition(int?id) { if (id == null) { return(null); } var position = await _context.Set <Position>() .FindAsync(id); if (position == null) { return(null); } var viewModel = _mapper.Map <PositionViewModel>(position); viewModel.Departments = await _context.Departments .ToListAsync(); return(viewModel); }
public Repository(ChocolateDbContext context) { _context = context; _set = _context.Set <TEntity>(); }