public System.Threading.Tasks.Task BindModelAsync(Microsoft.AspNetCore.Mvc.ModelBinding.ModelBindingContext bindingContext) { if (bindingContext == null) { throw new ArgumentNullException(nameof(bindingContext)); } var filterLogic = bindingContext.ValueProvider.GetValue("filter[logic]"); // if (filterLogic == ValueProviderResult.None) // return Task.CompletedTask; //?page=1&pageSize=20&sort[0][field]=Date&sort[0][dir]=asc&filter[logic]=and&filter[filters][0][field]=Date&filter[filters][0][operator]=gte&filter[filters][0][value]=4/1/2018 //?page=1&pageSize=20&sort[0][field]=Name&sort[0][dir]=asc&filter[logic]=and&filter[filters][0][field]=Name&filter[filters][0][operator]=contains&filter[filters][0][value]=schuebel //&filter[logic]=and&filter[filters][0][field]=Name&filter[filters][0][operator]=contains&filter[filters][0][value]=schuebel var page = bindingContext.ValueProvider.GetValue("page").FirstValue;// bindingContext.ModelName); var pageSize = bindingContext.ValueProvider.GetValue("pageSize").FirstValue; var filtering = GetFilterObjects(bindingContext, filterLogic.FirstValue); var sorting = GetSortObjects(bindingContext); var result = new coreevent.SearchRequest { Page = int.Parse(page ?? "0"), PageSize = int.Parse(pageSize ?? "25"), FilterObjectWrapper = filtering, SortObjects = sorting }; bindingContext.Result = ModelBindingResult.Success(result); return(Task.CompletedTask); }
public ActionResult <IEnumerable <coreevent.Person> > Get([ModelBinder(binderType: typeof(SearchBinder))] coreevent.SearchRequest srch) { try { var evts = _personService.GetAllPersons().ToList(); if ((srch == null) || (srch != null && srch.FilterObjectWrapper.FilterObjects.Count == 0 && srch.SortObjects.Count == 0 && srch.Page == 0 && srch.PageSize == 25)) { //return Ok(evts); HttpContext.Response.Headers.Add("Paging-TotalRecords", JsonConvert.SerializeObject(evts.Count)); return(Ok(evts)); } else { //Most javascript grids are 1 based page if (srch.Page > 0) { srch.Page--; } var fp = new coreevent.FilterParsing <coreevent.Person>(); string filtering = "true"; try { filtering = fp.GetFiltering(srch); } catch (Exception fex) { ModelState.AddModelError("Person:Get:FilterParse", fex.Message); return(BadRequest(ModelState)); } var sorting = "true"; try { sorting = coreevent.FilterParsing <coreevent.Person> .GetSorting(srch); } catch (Exception sex) { ModelState.AddModelError("Person:Get:SortParse", sex.Message); return(BadRequest(ModelState)); } IQueryable <coreevent.Person> query = evts.AsQueryable().Where(filtering).OrderBy(sorting); int RowCount = 0; var newList = new List <coreevent.Person>(); try { RowCount = query.Count(); int skip = srch.Page * srch.PageSize; newList = query.Skip(skip).Take(srch.PageSize).ToList(); } catch {} // Setting Header HttpContext.Response.Headers.Add("Paging-TotalRecords", JsonConvert.SerializeObject(RowCount)); //var newList = query.ToList(); // var newRes = new FilterDTO<IEnumerable<coreevent.Person>>() { total=RowCount, data=newList }; //new { total = mdl.RowCount, data = res } return(Ok(newList)); } } catch (Exception ex) { ModelState.AddModelError("Person:Get", ex.Message); return(BadRequest(ModelState)); } }
public ActionResult <IEnumerable <coreevent.Event> > Get([ModelBinder(binderType: typeof(SearchBinder))] coreevent.SearchRequest srch) { try { //need to pull back all for all request or adjusting birthday dates for queires var evts = _eventService.GetAllEvents().ToList(); if ((srch == null) || (srch != null && srch.FilterObjectWrapper.FilterObjects.Count == 0 && srch.SortObjects.Count == 0 && srch.Page == 0 && srch.PageSize == 25)) { //return Ok(evts); HttpContext.Response.Headers.Add("Paging-TotalRecords", JsonConvert.SerializeObject(evts.Count)); return(Ok(evts)); } else { foreach (var item in evts) { if ((item.RepeatYearly == true) || (item.TopicId == 1 && item.Date != null)) { item.Date = new DateTime(DateTime.Now.Year, item.Date.Value.Month, item.Date.Value.Day); } } //Most javascript grids are 1 based page if (srch.Page > 0) { srch.Page--; } var fp = new coreevent.FilterParsing <coreevent.Event>(); string filtering = "true"; try { filtering = fp.GetFiltering(srch); } catch (Exception fex) { ModelState.AddModelError("Person:Get:FilterParse", fex.Message); return(BadRequest(ModelState)); } var sorting = "true"; try { sorting = coreevent.FilterParsing <coreevent.Event> .GetSorting(srch); } catch (Exception sex) { ModelState.AddModelError("Person:Get:SortParse", sex.Message); return(BadRequest(ModelState)); } //if filter and date range if (srch.FilterObjectWrapper.FilterObjects.Count == 2) { if (srch.FilterObjectWrapper.FilterObjects.ElementAt(0).Field1 == "Date" && srch.FilterObjectWrapper.FilterObjects.ElementAt(1).Field1 == "Date" && srch.FilterObjectWrapper.FilterObjects.ElementAt(0).Value1 != "" && srch.FilterObjectWrapper.FilterObjects.ElementAt(1).Value1 != "") { var startDate = ParseConvertDate(srch.FilterObjectWrapper.FilterObjects.ElementAt(0).Value1); var endtDate = ParseConvertDate(srch.FilterObjectWrapper.FilterObjects.ElementAt(1).Value1); var cevt = _eventService.GetCalculatedEventsByDateRange(startDate, endtDate); evts.AddRange(cevt); } } IQueryable <coreevent.Event> query = evts.AsQueryable().Where(filtering).OrderBy(sorting); int RowCount = 0; var newList = new List <coreevent.Event>(); try { RowCount = query.Count(); int skip = srch.Page * srch.PageSize; newList = query.Skip(skip).Take(srch.PageSize).ToList(); } catch {} //var newList = query.ToList(); HttpContext.Response.Headers.Add("Paging-TotalRecords", JsonConvert.SerializeObject(RowCount)); //new { total = mdl.RowCount, data = res } return(Ok(newList)); } } catch (Exception ex) { ModelState.AddModelError("Person:Get", ex.Message); return(BadRequest(ModelState)); } }