Exemplo n.º 1
0
        protected virtual async Task <List <Trait> > GetAllTraits()
        {
            var filter  = new TraitFilter();
            var results = await _traitRepository.SearchAsync(filter);

            return(results.ToList());
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 3
0
        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());
            }
        }