protected virtual async Task <List <Trait> > GetAllTraits() { var filter = new TraitFilter(); var results = await _traitRepository.SearchAsync(filter); return(results.ToList()); }
public async Task <IActionResult> Get([FromBody] TraitFilter filter) { if (!ModelState.IsValid) { return(BadRequest()); } var traits = await _traitRepository.SearchAsync(filter); return(Ok(_mapper.Map <List <TraitDto> >(traits))); }
public async Task <IActionResult> Post(PetDto pet) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var petToInsert = new Pet { Name = pet.Name, Gender = pet.Gender, Birthday = pet.Birthday, Description = pet.Description, Source = pet.Source, SourceLink = pet.SourceLink, AnimalTypeId = pet.AnimalTypeId, UserId = pet.UserId }; petToInsert.MetaFileLinks = new List <MetaFileLink>(); foreach (var mflId in pet.MetaFileLinkIds) { MetaFileLink mfl = _mflRepository.GetByIdAsync(mflId).Result; petToInsert.MetaFileLinks.Add(mfl); } var traitsFilter = new TraitFilter { AnimalTypeId = pet.AnimalTypeId }; //get list of all traits by AnimalTypeId List <Trait> traitsByAnimal = _traitRepository.SearchAsync(traitsFilter).Result.ToList(); petToInsert.PetTraits = new List <PetTrait>(); foreach (KeyValuePair <string, string> entry in pet.Traits) { //Use entry.Value & entry.Key var foundTrait = traitsByAnimal.FirstOrDefault(traitItem => traitItem.Id == int.Parse(entry.Key)); var foundTraitOption = foundTrait.TraitOptions.FirstOrDefault(op => op.Id == int.Parse(entry.Value)); petToInsert.PetTraits.Add( new PetTrait { Trait = foundTrait, TraitOption = foundTraitOption }); } await _petHandler.AddPet(petToInsert); await _unitOfWork.SaveChangesAsync(); return(Ok(_mapper.Map <PetDto>(petToInsert))); } catch (Exception ex) { return(BadRequest()); } }