public async Task <IActionResult> Get([FromBody] TraitOptionFilter filter)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     return(Ok(await _traitOptionRepository.SearchAsync(filter)));
 }
Esempio n. 2
0
        private async Task AddGenderTrait(Pet animal)
        {
            var traitGenderId = await _traitRepository.SearchAsync(new TraitFilter()
            {
                PerPage   = 1000,
                TraitName = "מין"
            });

            var id = traitGenderId
                     .Where(t => t.AnimalTypeId == animal.AnimalTypeId)
                     .FirstOrDefault().Id;

            var filter = new TraitOptionFilter
            {
                TraitId = id
            };
            var options = await _traitOptionRepository.SearchAsync(filter);

            string gender = (int)animal.Gender == 1 ? "זכר" : "נקבה";

            var optionId = options
                           .Where(o => o.Option == gender)
                           .FirstOrDefault().Id;

            //var genderTraitAlreadyExist = animal.PetTraits.Any(pt => pt.TraitId == id);
            //var pet = await _petRepository.GetByIdAsync(animal.Id);
            //if (pet != null)
            //{
            //    genderTraitAlreadyExist = genderTraitAlreadyExist || pet.PetTraits.Any(pt => pt.TraitId == id);
            //    if (genderTraitAlreadyExist)
            //    {
            //        return;
            //    }

            //}

            if (animal.PetTraits.Any(pt => pt.TraitId == id || pt.Trait?.Id == id))
            {
                return;
            }

            animal.PetTraits.Add(new PetTrait
            {
                TraitId       = id,
                TraitOptionId = optionId
            });
        }
        public async Task <IEnumerable <TraitOption> > SearchAsync(TraitOptionFilter filter)
        {
            var query = entities.AsQueryable();

            if (filter.TraitId.HasValue)
            {
                query = query.Where(o => o.TraitId == filter.TraitId);
            }

            if (!string.IsNullOrWhiteSpace(filter.Name))
            {
                query = query.Where(o => o.Trait.Name.StartsWith(filter.Name));
            }

            query = base.SearchAsync(query, filter);

            return(await query.ToListAsync());
        }