public async Task <IActionResult> Post(
            [FromServices] LegacyContext legacyContext,
            [FromServices] SyndicationContext syndicationContext,
            [FromServices] IOptions <ResponseOptions> responseOptions,
            [FromBody] BosaStreetNameRequest request,
            CancellationToken cancellationToken = default)
        {
            if (Request.ContentLength.HasValue && Request.ContentLength > 0 && request == null)
            {
                return(Ok(new StreetNameBosaResponse()));
            }

            var filter = new StreetNameNameFilter(request);

            if (_useProjectionsV2Toggle.FeatureEnabled)
            {
                var streetNameBosaResponseV2 = await
                                               new StreetNameBosaQueryV2(
                    legacyContext,
                    syndicationContext,
                    responseOptions)
                                               .FilterAsync(filter, cancellationToken);

                return(Ok(streetNameBosaResponseV2));
            }

            var streetNameBosaResponse = await
                                         new StreetNameBosaQuery(
                legacyContext,
                syndicationContext,
                responseOptions)
                                         .FilterAsync(filter, cancellationToken);

            return(Ok(streetNameBosaResponse));
        }
 public StreetNameNameFilter(BosaStreetNameRequest request)
 {
     ObjectId             = request?.StraatnaamCode?.ObjectId;
     StreetNameVersion    = request?.StraatnaamCode?.VersieId;
     StreetName           = request?.Straatnaam?.Spelling;
     Language             = request?.Straatnaam?.Taal?.ConvertFromTaal();
     Status               = request?.StraatnaamStatus?.ConvertFromStraatnaamStatus();
     MunicipalityObjectId = request?.GemeenteCode?.ObjectId;
     MunicipalityVersion  = request?.GemeenteCode?.VersieId != null ? new Rfc3339SerializableDateTimeOffset(request.GemeenteCode.VersieId.Value).ToString() : string.Empty;
     IsContainsFilter     = (request?.Straatnaam?.SearchType ?? BosaSearchType.Bevat) == BosaSearchType.Bevat;
 }
 public async Task <IActionResult> SearchBestAddStreetName(
     [FromServices] IActionContextAccessor actionContextAccessor,
     [FromServices] IOptions <MunicipalityOptions> responseOptions,
     [FromHeader(Name = HeaderNames.IfNoneMatch)] string ifNoneMatch,
     [FromBody] BosaStreetNameRequest searchBody,
     CancellationToken cancellationToken = default)
 => await SearchBestAddStreetNameWithFormat(
     null,
     actionContextAccessor,
     responseOptions,
     ifNoneMatch,
     searchBody,
     cancellationToken);
        public async Task <IActionResult> SearchBestAddStreetName(
            [FromServices] IActionContextAccessor actionContextAccessor,
            [FromServices] IOptions <MunicipalityOptions> responseOptions,
            [FromHeader(Name = HeaderNames.IfNoneMatch)] string ifNoneMatch,
            [FromBody] BosaStreetNameRequest searchBody,
            CancellationToken cancellationToken = default)
        {
            var contentFormat = DetermineFormat(actionContextAccessor.ActionContext);

            IRestRequest BackendRequest() => CreateBackendSearchBestAddRequest(searchBody);

            var value = await GetFromBackendAsync(
                contentFormat.ContentType,
                BackendRequest,
                CreateDefaultHandleBadRequest(),
                cancellationToken);

            return(BackendListResponseResult.Create(value, Request.Query, responseOptions.Value.VolgendeUrl));
        }
 private static IRestRequest CreateBackendSearchBestAddRequest(BosaStreetNameRequest searchBody)
 => new RestRequest("straatnamen/bosa", Method.POST).AddJsonBodyOrEmpty(searchBody);