public override async Task <IActionResult> VervangZakelijkGerechtigde(string kadastraalOnroerendeZaakIdentificatie, string zakelijkGerechtigdeIdentificatie, [FromBody] ZakelijkGerechtigdeNieuw body)
        {
            var input = mapper.Map <Domain.Entities.ZakelijkGerechtigde>(body);
            var id    = long.Parse(kadastraalOnroerendeZaakIdentificatie);

            var koz = await repository.GetAsync(id);

            if (koz == null)
            {
                return(NotFound($"Onbekend kadastraalOnroerendeZaakIdentificatie: {kadastraalOnroerendeZaakIdentificatie}"));
            }

            var zgId = long.Parse(zakelijkGerechtigdeIdentificatie);

            var zakelijkGerechtigde = koz.ZakelijkGerechtigden.SingleOrDefault(z => z.Id == zgId);

            if (zakelijkGerechtigde == null)
            {
                return(NotFound($"Onbekend zakelijkGerechtigdeIdentificatie: {zakelijkGerechtigdeIdentificatie}"));
            }

            zakelijkGerechtigde.Update(input);
            await repository.SaveChangesAsync();

            var laatsteEvent = await laatsteEventsRepository.GetAsync(id);

            var evt = eventFactory.CreateFrom(koz, laatsteEvent);

            var laatsteEventId = await producer.ProduceAsync("kadastraalonroerendezaken", evt);

            if (!string.IsNullOrWhiteSpace(laatsteEventId))
            {
                laatsteEvent.EventIdentificatie = laatsteEventId;
                await repository.SaveChangesAsync();
            }

            return(Ok());
        }
        public override async Task <ActionResult <ZakelijkGerechtigde> > CreerZakelijkGerechtigde(string kadastraalOnroerendeZaakIdentificatie, [FromBody] ZakelijkGerechtigdeNieuw body)
        {
            var zakelijkGerechtigde = mapper.Map <Domain.Entities.ZakelijkGerechtigde>(body);
            var id = long.Parse(kadastraalOnroerendeZaakIdentificatie);

            var koz = await repository.GetAsync(id);

            if (koz == null)
            {
                return(NotFound($"Onbekend kadastraalOnroerendeZaakIdentificatie: {kadastraalOnroerendeZaakIdentificatie}"));
            }

            koz.CreerZakelijkGerechtigde(zakelijkGerechtigde);
            await repository.SaveChangesAsync();

            var laatsteEvent = await laatsteEventsRepository.GetAsync(id);

            var evt = eventFactory.CreateFrom(koz, laatsteEvent);

            var laatsteEventId = await producer.ProduceAsync("kadastraalonroerendezaken", evt);

            if (!string.IsNullOrWhiteSpace(laatsteEventId))
            {
                laatsteEvent.EventIdentificatie = laatsteEventId;
                await repository.SaveChangesAsync();
            }

            return(Ok(mapper.Map <ZakelijkGerechtigde>(zakelijkGerechtigde)));
        }