public async Task <IActionResult> GetSalesInvoiceList(DataTableAjaxPostModel dataTableAjaxPostModel, string searchFilter) { // deserilize string search filter. SearchFilterSalesInvoiceModel searchFilterModel = JsonConvert.DeserializeObject <SearchFilterSalesInvoiceModel>(searchFilter); // get data. DataTableResultModel <SalesInvoiceModel> resultModel = await _salesInvoice.GetSalesInvoiceList(dataTableAjaxPostModel, searchFilterModel); return(await Task.Run(() => { return Json(new { dataTableAjaxPostModel.draw, recordsTotal = resultModel.TotalResultCount, recordsFiltered = resultModel.TotalResultCount, data = resultModel.ResultList }); })); }
/// <summary> /// get records from database. /// </summary> /// <param name="searchBy"></param> /// <param name="take"></param> /// <param name="skip"></param> /// <param name="sortBy"></param> /// <param name="sortDir"></param> /// <returns></returns> private async Task <DataTableResultModel <SalesInvoiceModel> > GetDataFromDbase(SearchFilterSalesInvoiceModel searchFilterModel, string searchBy, int take, int skip, string sortBy, string sortDir) { DataTableResultModel <SalesInvoiceModel> resultModel = new DataTableResultModel <SalesInvoiceModel>(); IQueryable <Salesinvoice> query = GetQueryByCondition(w => w.InvoiceId != 0); if (!string.IsNullOrEmpty(searchFilterModel.InvoiceNo)) { query = query.Where(w => w.InvoiceNo.Contains(searchFilterModel.InvoiceNo)); } if (null != searchFilterModel.CustomerLedgerId) { query = query.Where(w => w.CustomerLedgerId == searchFilterModel.CustomerLedgerId); } if (null != searchFilterModel.FromDate) { query = query.Where(w => w.InvoiceDate >= searchFilterModel.FromDate); } if (null != searchFilterModel.ToDate) { query = query.Where(w => w.InvoiceDate <= searchFilterModel.ToDate); } // get total count. resultModel.TotalResultCount = await query.CountAsync(); // get records based on pagesize. query = query.Skip(skip).Take(take); resultModel.ResultList = await query.Select(s => new SalesInvoiceModel { InvoiceId = s.InvoiceId, InvoiceNo = s.InvoiceNo, InvoiceDate = s.InvoiceDate, NetAmount = s.NetAmount, }).OrderByDescending(o => o.InvoiceDate).ToListAsync(); // get filter record count. resultModel.FilterResultCount = await query.CountAsync(); return(resultModel); // returns. }
/// <summary> /// get search sales invoice result list. /// </summary> /// <param name="dataTableAjaxPostModel"></param> /// <param name="searchFilterModel"></param> /// <returns> /// return list. /// </returns> public async Task <DataTableResultModel <SalesInvoiceModel> > GetSalesInvoiceList(DataTableAjaxPostModel dataTableAjaxPostModel, SearchFilterSalesInvoiceModel searchFilterModel) { string searchBy = dataTableAjaxPostModel.search?.value; int take = dataTableAjaxPostModel.length; int skip = dataTableAjaxPostModel.start; string sortBy = string.Empty; string sortDir = string.Empty; if (dataTableAjaxPostModel.order != null) { sortBy = dataTableAjaxPostModel.columns[dataTableAjaxPostModel.order[0].column].data; sortDir = dataTableAjaxPostModel.order[0].dir.ToLower(); } // search the dbase taking into consideration table sorting and paging DataTableResultModel <SalesInvoiceModel> resultModel = await GetDataFromDbase(searchFilterModel, searchBy, take, skip, sortBy, sortDir); return(resultModel); // returns. }