public async Task <IActionResult> GetCrittersFilteredValueDescription([FromBody] CritterExGetCrittersFilteredAjax ajax)
 {
     return(Json(await this.GetCrittersFilteredNoRender(ajax)
                 .Select(c => new { value = c.CritterId, description = c.Name })
                 .ToListAsync()
                 ));
 }
        public async Task <IActionResult> GetCrittersFilteredAndRender([FromBody] CritterExGetCrittersFilteredAjax ajax)
        {
            var list = await this.GetCrittersFilteredNoRender(ajax).ToListAsync();

            if (ajax.Design == "card-horiz")
            {
                return(PartialView("_CardHoriz", list));
            }
            else if (ajax.Design == "card-vert")
            {
                return(PartialView("_CardVert", list));
            }
            else if (ajax.Design == "table")
            {
                return(PartialView("_Table", list));
            }

            return(NotFound());
        }
 private IQueryable <Critter> GetCrittersFilteredNoRender(CritterExGetCrittersFilteredAjax ajax)
 {
     return(this._livestock.Critter
            .Include(v => v.Breed)
            .Include(v => v.CritterType)
            .Include(v => v.DadCritter)
            .Include(v => v.MumCritter)
            .Include(v => v.OwnerContact)
            .Where(c => (ajax.BreedId ?? -999) == -999 ||
                   c.BreedId == ajax.BreedId)
            .Where(c => (ajax.CritterTypeId ?? -999) == -999 ||
                   c.CritterTypeId == ajax.CritterTypeId)
            .Where(c => ajax.Gender == null ||
                   c.Gender == ajax.Gender)
            .Where(c => ajax.CanReproduce == null ||
                   c.CanReproduce == ajax.CanReproduce)
            .Where(c => String.IsNullOrWhiteSpace(ajax.Name) ||
                   Regex.IsMatch(c.Name.ToLower(), ajax.Name.ToLower()))
            .Where(c => String.IsNullOrWhiteSpace(ajax.Tag) ||
                   Regex.IsMatch(c.TagNumber.ToLower(), ajax.Tag.ToLower()))
            .OrderBy(c => c.Name));
 }