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));
            }
        }