public async Task <IEnumerable <PersonViewModel> > GetFiltered(PersonSearchDto personSearchDto)
        {
            IEnumerable <PersonViewModel> returnValue = null;

            personSearchDto.Name.IsSpecified            = !(string.IsNullOrWhiteSpace(personSearchDto.Name.Value));
            personSearchDto.Vorname.IsSpecified         = !(string.IsNullOrWhiteSpace(personSearchDto.Vorname.Value));
            personSearchDto.GeburtsdatumVon.IsSpecified = personSearchDto.GeburtsdatumVon.Value.HasValue;
            personSearchDto.GeburtsdatumBis.IsSpecified = personSearchDto.GeburtsdatumBis.Value.HasValue;


            string requestUri = string.Format($"/api/people/search");

            var requestBody   = JsonConvert.SerializeObject(personSearchDto);
            var stringContent = new StringContent(requestBody, Encoding.UTF8, "application/json");

            using (var response = await _httpClient.PostAsync(requestUri, stringContent, CancellationToken.None))
            {
                using (HttpContent content = response.Content)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();

                    var personDtos = JsonConvert.DeserializeObject <IEnumerable <PersonDto> >(responseBody);
                    returnValue = personDtos.Select(CopyDtoToViewModel);
                }
            }

            return(returnValue);
        }
Exemplo n.º 2
0
        public IEnumerable <PersonDto> GetPerson(PersonSearchDto person)
        {
            IFindFluent <PersonDto, PersonDto> find   = personCollection.Find(f => true);
            IEnumerable <PersonDto>            result = find.ToList();

            return(result);
        }
Exemplo n.º 3
0
        public GenericResponse <IEnumerable <PersonDto> > GetPerson(PersonSearchDto person)
        {
            IEnumerable <PersonDto> result = personRepository.GetPerson(person);
            GenericResponse <IEnumerable <PersonDto> > response = new GenericResponse <IEnumerable <PersonDto> >()
            {
                Result = result
            };

            return(response);
        }
        public IActionResult GetPerson([FromBody] PersonSearchDto person)
        {
            GenericResponse <IEnumerable <PersonDto> > response = personService.GetPerson(person);

            return(StatusCode(response.StatusCode, response));
        }
 public async Task <IActionResult> PostAndGetBySearchCriteria([FromBody] PersonSearchDto searchCriteria)
 {
     return(Ok(await _repository.GetByCriteriaAsync(searchCriteria)));
 }
        public async Task <IEnumerable <PersonDto> > GetByCriteriaAsync(PersonSearchDto searchCriteria)
        {
            var filter = PredicateBuilder.True <Person>();

            if (searchCriteria.Name.IsSpecified)
            {
                switch (searchCriteria.Name.LogicalOperator)
                {
                case LogicalOperators.Equals:
                    //filter = filter.And(p => 0 == string.Compare(p.Name, searchCriteria.Name.Value.Trim(new char[] { '%' }), true));
                    filter = filter.And(p => 0 == string.Compare(p.Name, searchCriteria.Name.Value, true));
                    break;

                case LogicalOperators.Contains:
                    filter = filter.And(p => p.Name.Contains(searchCriteria.Name.Value));
                    break;

                case LogicalOperators.StartsWith:
                    filter = filter.And(p => p.Name.StartsWith(searchCriteria.Name.Value));    //, true, CultureInfo.InvariantCulture
                    break;

                case LogicalOperators.EndsWith:
                    filter = filter.And(p => p.Name.EndsWith(searchCriteria.Name.Value));
                    break;

                default:
                    throw new Exception(string.Format(
                                            "Logischer Operator '{0}' wird für den Typ {1} nicht unterstützt.",
                                            Enum.GetName(typeof(LogicalOperators), searchCriteria.Name.LogicalOperator),
                                            searchCriteria.Name.Value.GetType().Name));
                }
            }

            if (searchCriteria.Vorname.IsSpecified)
            {
                switch (searchCriteria.Vorname.LogicalOperator)
                {
                case LogicalOperators.Equals:
                    filter = filter.And(p => 0 == string.Compare(p.Vorname, searchCriteria.Vorname.Value, true));
                    break;

                case LogicalOperators.Contains:
                    filter = filter.And(p => p.Vorname.Contains(searchCriteria.Vorname.Value));
                    break;

                case LogicalOperators.StartsWith:
                    filter = filter.And(p => p.Vorname.StartsWith(searchCriteria.Vorname.Value));
                    break;

                case LogicalOperators.EndsWith:
                    filter = filter.And(p => p.Vorname.EndsWith(searchCriteria.Vorname.Value));
                    break;

                default:
                    throw new Exception(string.Format(
                                            "Logischer Operator '{0}' wird für den Typ {1} nicht unterstützt.",
                                            Enum.GetName(typeof(LogicalOperators), searchCriteria.Vorname.LogicalOperator),
                                            searchCriteria.Vorname.Value.GetType().Name));
                }
            }

            if (searchCriteria.GeburtsdatumVon.IsSpecified)
            {
                switch (searchCriteria.GeburtsdatumVon.LogicalOperator)
                {
                case LogicalOperators.Equals:
                    filter = filter.And(p => p.Geburtsdatum == searchCriteria.GeburtsdatumVon.Value);
                    break;

                case LogicalOperators.GreaterThan:
                    filter = filter.And(p => p.Geburtsdatum > searchCriteria.GeburtsdatumVon.Value);
                    break;

                case LogicalOperators.GreaterThanOrEqual:
                    filter = filter.And(p => p.Geburtsdatum >= searchCriteria.GeburtsdatumVon.Value);
                    break;

                case LogicalOperators.LessThan:
                    filter = filter.And(p => p.Geburtsdatum < searchCriteria.GeburtsdatumVon.Value);
                    break;

                case LogicalOperators.LessThanOrEqual:
                    filter = filter.And(p => p.Geburtsdatum <= searchCriteria.GeburtsdatumVon.Value);
                    break;
                }
            }

            if (searchCriteria.GeburtsdatumBis.IsSpecified)
            {
                switch (searchCriteria.GeburtsdatumBis.LogicalOperator)
                {
                case LogicalOperators.Equals:
                    filter = filter.And(p => p.Geburtsdatum == searchCriteria.GeburtsdatumBis.Value);
                    break;

                case LogicalOperators.GreaterThan:
                    filter = filter.And(p => p.Geburtsdatum > searchCriteria.GeburtsdatumBis.Value);
                    break;

                case LogicalOperators.GreaterThanOrEqual:
                    filter = filter.And(p => p.Geburtsdatum >= searchCriteria.GeburtsdatumBis.Value);
                    break;

                case LogicalOperators.LessThan:
                    filter = filter.And(p => p.Geburtsdatum < searchCriteria.GeburtsdatumBis.Value);
                    break;

                case LogicalOperators.LessThanOrEqual:
                    filter = filter.And(p => p.Geburtsdatum <= searchCriteria.GeburtsdatumBis.Value);
                    break;
                }
            }

            var dbResult = await _adressbuchDbContext.Personen.Where(filter).ToListAsync();

            return(dbResult.Select(CopyDbModelToDto));
        }