コード例 #1
0
        public async Task <IActionResult> Get(
            [FromServices] LegacyContext legacyContext,
            [FromServices] IOptions <ResponseOptions> responseOptions,
            [FromRoute] int persistentLocalId,
            [FromRoute] DateTimeOffset versie,
            CancellationToken cancellationToken = default)
        {
            var streetName = await legacyContext
                             .StreetNameVersions
                             .AsNoTracking()
                             .Where(x => !x.Removed)
                             .SingleOrDefaultAsync(item => item.PersistentLocalId == persistentLocalId && item.VersionTimestampAsDateTimeOffset == versie, cancellationToken);

            if (streetName != null && streetName.Removed)
            {
                throw new ApiException("Straatnaam verwijderd.", StatusCodes.Status410Gone);
            }

            if (streetName == null || !streetName.Complete)
            {
                throw new ApiException("Onbestaande straatnaam.", StatusCodes.Status404NotFound);
            }

            var gemeente = new StraatnaamDetailGemeente
            {
                ObjectId = streetName.NisCode,
                Detail   = string.Format(responseOptions.Value.GemeenteDetailUrl, streetName.NisCode),
                // TODO: get the name for this nisCode's municipality.
                // Not feasible yet, at least not yet without calling the Municipality Api.
                Gemeentenaam = new Gemeentenaam(new GeografischeNaam(null, Taal.NL))
            };

            return(Ok(
                       new StreetNameResponse(
                           responseOptions.Value.Naamruimte,
                           persistentLocalId,
                           streetName.Status.ConvertFromStreetNameStatus(),
                           gemeente,
                           streetName.VersionTimestampAsDateTimeOffset.Value,
                           streetName.NameDutch,
                           streetName.NameFrench,
                           streetName.NameGerman,
                           streetName.NameEnglish,
                           streetName.HomonymAdditionDutch,
                           streetName.HomonymAdditionFrench,
                           streetName.HomonymAdditionGerman,
                           streetName.HomonymAdditionEnglish)));
        }
コード例 #2
0
        public async Task <StreetNameResponse> FilterAsync(int persistentLocalId, CancellationToken ct = default)
        {
            var streetName = await _legacyContext
                             .StreetNameDetail
                             .AsNoTracking()
                             .SingleOrDefaultAsync(item => item.PersistentLocalId == persistentLocalId, ct);

            if (streetName == null)
            {
                throw new ApiException("Onbestaande straatnaam.", StatusCodes.Status404NotFound);
            }

            if (streetName.Removed)
            {
                throw new ApiException("Straatnaam verwijderd.", StatusCodes.Status410Gone);
            }

            var municipality = await _syndicationContext
                               .MunicipalityLatestItems
                               .AsNoTracking()
                               .OrderByDescending(m => m.Position)
                               .FirstOrDefaultAsync(m => m.NisCode == streetName.NisCode, ct);

            var municipalityDefaultName = GetDefaultMunicipalityName(municipality);
            var gemeente = new StraatnaamDetailGemeente
            {
                ObjectId     = streetName.NisCode,
                Detail       = string.Format(_responseOptions.GemeenteDetailUrl, streetName.NisCode),
                Gemeentenaam = new Gemeentenaam(new GeografischeNaam(municipalityDefaultName.Value, municipalityDefaultName.Key))
            };

            return(new StreetNameResponse(
                       _responseOptions.Naamruimte,
                       streetName.PersistentLocalId.Value,
                       streetName.Status.ConvertFromStreetNameStatus(),
                       gemeente,
                       streetName.VersionTimestamp.ToBelgianDateTimeOffset(),
                       streetName.NameDutch,
                       streetName.NameFrench,
                       streetName.NameGerman,
                       streetName.NameEnglish,
                       streetName.HomonymAdditionDutch,
                       streetName.HomonymAdditionFrench,
                       streetName.HomonymAdditionGerman,
                       streetName.HomonymAdditionEnglish));
        }
        private async Task <StraatnaamDetailGemeente> GetStraatnaamDetailGemeente(string nisCode, CancellationToken ct)
        {
            var municipality = await _syndicationContext
                               .MunicipalityLatestItems
                               .AsNoTracking()
                               .OrderByDescending(m => m.Position)
                               .FirstOrDefaultAsync(m => m.NisCode == nisCode, ct);

            var municipalityDefaultName = GetDefaultMunicipalityName(municipality);
            var gemeente = new StraatnaamDetailGemeente
            {
                ObjectId     = nisCode,
                Detail       = string.Format(_responseOptions.GemeenteDetailUrl, nisCode),
                Gemeentenaam = new Gemeentenaam(new GeografischeNaam(municipalityDefaultName.Value, municipalityDefaultName.Key))
            };

            return(gemeente);
        }
コード例 #4
0
        public StreetNameOsloResponse(
            string naamruimte,
            string contextUrlDetail,
            int persistentLocalId,
            StraatnaamStatus status,
            StraatnaamDetailGemeente gemeente,
            DateTimeOffset version,
            string nameDutch              = "",
            string nameFrench             = "",
            string nameGerman             = "",
            string nameEnglish            = "",
            string homonymAdditionDutch   = "",
            string homonymAdditionFrench  = "",
            string homonymAdditionGerman  = "",
            string homonymAdditionEnglish = "")
        {
            Context          = contextUrlDetail;
            Identificator    = new StraatnaamIdentificator(naamruimte, persistentLocalId.ToString(), version);
            StraatnaamStatus = status;
            Gemeente         = gemeente;

            var straatNamen = new List <GeografischeNaam>
            {
                new GeografischeNaam(nameDutch, Taal.NL),
                new GeografischeNaam(nameFrench, Taal.FR),
                new GeografischeNaam(nameGerman, Taal.DE),
                new GeografischeNaam(nameEnglish, Taal.EN)
            };

            Straatnamen = straatNamen.Where(x => !string.IsNullOrEmpty(x.Spelling)).ToList();

            var homoniemen = new List <GeografischeNaam>
            {
                new GeografischeNaam(homonymAdditionDutch, Taal.NL),
                new GeografischeNaam(homonymAdditionFrench, Taal.FR),
                new GeografischeNaam(homonymAdditionGerman, Taal.DE),
                new GeografischeNaam(homonymAdditionEnglish, Taal.EN)
            };

            HomoniemToevoegingen = homoniemen.Where(x => !string.IsNullOrEmpty(x.Spelling)).ToList();
        }