public ActionResult <InschrijvingVoorRaadpleegDto> ToevoegenInschrijving([FromBody] InschrijvingVoorAanmaakDto inschrijving)
        {
            var inschrijvingEntity = _mapper.Map <Entities.Inschrijving>(inschrijving);

            inschrijvingEntity.DatumInschrijving = DateTime.UtcNow.AddHours(2);

            // === START Controle voor manipulatie === // // === EINDE Controle voor manipulatie === //
            if (!_betaalmethodeRepository.BestaatBetaalmethode(inschrijvingEntity.BetaalmethodeId.Value))
            {
                return(NotFound($"Betaalmethode '{inschrijvingEntity.BetaalmethodeId.Value}' niet gevonden."));
            }

            if (!_inschrijvingsstatusRepository.BestaatInschrijvingsstatus(inschrijvingEntity.InschrijvingsstatusId.Value))
            {
                return(NotFound($"Inschrijvingsstatus '{inschrijvingEntity.InschrijvingsstatusId.Value}' niet gevonden."));
            }

            if (!_evenementRepository.BestaatEvenement(inschrijvingEntity.EvenementId.Value))
            {
                return(NotFound($"Evenement '{inschrijvingEntity.EvenementId.Value}' niet gevonden."));
            }

            if (inschrijvingEntity.LidId.HasValue)
            {
                if (!_lidRepository.BestaatLid(inschrijvingEntity.LidId.Value))
                {
                    return(NotFound($"Lid '{inschrijvingEntity.LidId.Value}' niet gevonden."));
                }
            }

            if (inschrijvingEntity.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Gepland().Id)
            {
                if (string.IsNullOrWhiteSpace(inschrijvingEntity.Standnummer))
                {
                    return(Conflict($"Bij het plannen van een inschrijving moet een standnummer worden opgegeven."));
                }
            }

            if (inschrijvingEntity.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Afgekeurd().Id)
            {
                if (string.IsNullOrWhiteSpace(inschrijvingEntity.RedenAfkeuring))
                {
                    return(Conflict($"Bij het afkeuren van een inschrijving moet een reden tot afkeuring worden opgegeven."));
                }
            }

            if (inschrijvingEntity.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Goedgekeurd().Id | inschrijvingEntity.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Gepland().Id)
            {
                if (inschrijvingEntity.BetaalmethodeId.Value == _betaalmethodeRepository.GetBetaalmethode_Overschrijving().Id)
                {
                    if (string.IsNullOrWhiteSpace(inschrijvingEntity.GestructureerdeMededeling))
                    {
                        inschrijvingEntity.GestructureerdeMededeling = GestructureerdeMededeling.GetNieuweGestructureerdeMededeling(_inschrijvingRepository);
                    }
                }

                if (string.IsNullOrWhiteSpace(inschrijvingEntity.QRCode))
                {
                    inschrijvingEntity.QRCode = QRCode.GetNieuweQRCode();
                }
            }
            // === EINDE Controle voor manipulatie === //

            // === START null waarden wegwerken === //
            if (!inschrijvingEntity.AantalWagens.HasValue)
            {
                inschrijvingEntity.AantalWagens = 0;
            }
            if (!inschrijvingEntity.AantalAanhangwagens.HasValue)
            {
                inschrijvingEntity.AantalAanhangwagens = 0;
            }
            if (!inschrijvingEntity.AantalMobilhomes.HasValue)
            {
                inschrijvingEntity.AantalMobilhomes = 0;
            }
            // === EINDE null waarden wegwerken === //



            _inschrijvingRepository.ToevoegenInschrijving(inschrijvingEntity);
            _inschrijvingRepository.Opslaan();

            if (inschrijvingEntity.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Aangevraagd().Id)
            {
                _mailing.VerstuurMail_NieuweAanvraag(inschrijvingEntity);
            }

            var inschrijvingTeRetourneren = _mapper.Map <InschrijvingVoorRaadpleegDto>(inschrijvingEntity);

            return(CreatedAtRoute("GetInschrijving", new { inschrijvingsId = inschrijvingTeRetourneren.Id }, inschrijvingTeRetourneren));
        }
        public IActionResult GedeeltelijkeUpdateInschrijving(Guid inschrijvingsId, [FromBody] JsonPatchDocument <InschrijvingVoorUpdateDto> patchDocument)
        {
            var inschrijvingVanRepo = _inschrijvingRepository.GetInschrijving(inschrijvingsId);

            if (inschrijvingVanRepo == null)
            {
                return(NotFound($"Inschrijving '{inschrijvingsId}' niet gevonden."));
            }
            Guid inschrijvingsStatusVoorPatch = inschrijvingVanRepo.InschrijvingsstatusId.Value;

            var inschrijvingTePatchen = _mapper.Map <InschrijvingVoorUpdateDto>(inschrijvingVanRepo);

            patchDocument.ApplyTo(inschrijvingTePatchen, ModelState);

            if (!TryValidateModel(inschrijvingTePatchen))
            {
                return(ValidationProblem(ModelState));
            }

            _mapper.Map(inschrijvingTePatchen, inschrijvingVanRepo);

            // === START Controle voor manipulatie === // // === EINDE Controle voor manipulatie === //
            if (!_betaalmethodeRepository.BestaatBetaalmethode(inschrijvingVanRepo.BetaalmethodeId.Value))
            {
                return(NotFound($"Betaalmethode '{inschrijvingVanRepo.BetaalmethodeId.Value}' niet gevonden."));
            }

            if (!_inschrijvingsstatusRepository.BestaatInschrijvingsstatus(inschrijvingVanRepo.InschrijvingsstatusId.Value))
            {
                return(NotFound($"Inschrijvingsstatus '{inschrijvingVanRepo.InschrijvingsstatusId.Value}' niet gevonden."));
            }

            if (!_evenementRepository.BestaatEvenement(inschrijvingVanRepo.EvenementId.Value))
            {
                return(NotFound($"Evenement '{inschrijvingVanRepo.EvenementId.Value}' niet gevonden."));
            }

            if (inschrijvingVanRepo.LidId.HasValue)
            {
                if (!_lidRepository.BestaatLid(inschrijvingVanRepo.LidId.Value))
                {
                    return(NotFound($"Lid '{inschrijvingVanRepo.LidId.Value}' niet gevonden."));
                }
            }

            if (inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Gepland().Id)
            {
                if (string.IsNullOrWhiteSpace(inschrijvingVanRepo.Standnummer))
                {
                    return(Conflict($"Bij het plannen van een inschrijving moet een standnummer worden opgegeven."));
                }
            }

            if (inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Afgekeurd().Id)
            {
                if (string.IsNullOrWhiteSpace(inschrijvingVanRepo.RedenAfkeuring))
                {
                    return(Conflict($"Bij het afkeuren van een inschrijving moet een reden tot afkeuring worden opgegeven."));
                }
            }

            if (inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Goedgekeurd().Id | inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Gepland().Id)
            {
                if (inschrijvingVanRepo.BetaalmethodeId.Value == _betaalmethodeRepository.GetBetaalmethode_Overschrijving().Id)
                {
                    if (string.IsNullOrWhiteSpace(inschrijvingVanRepo.GestructureerdeMededeling))
                    {
                        inschrijvingVanRepo.GestructureerdeMededeling = GestructureerdeMededeling.GetNieuweGestructureerdeMededeling(_inschrijvingRepository);
                    }
                }

                if (string.IsNullOrWhiteSpace(inschrijvingVanRepo.QRCode))
                {
                    inschrijvingVanRepo.QRCode = QRCode.GetNieuweQRCode();
                }
            }
            // === EINDE Controle voor manipulatie === //

            // === START null waarden wegwerken === //
            if (!inschrijvingVanRepo.AantalWagens.HasValue)
            {
                inschrijvingVanRepo.AantalWagens = 0;
            }
            if (!inschrijvingVanRepo.AantalAanhangwagens.HasValue)
            {
                inschrijvingVanRepo.AantalAanhangwagens = 0;
            }
            if (!inschrijvingVanRepo.AantalMobilhomes.HasValue)
            {
                inschrijvingVanRepo.AantalMobilhomes = 0;
            }
            // === EINDE null waarden wegwerken === //

            _inschrijvingRepository.UpdatenInschrijving(inschrijvingVanRepo);
            _inschrijvingRepository.Opslaan();

            if (inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Goedgekeurd().Id)
            {
                if (inschrijvingsStatusVoorPatch == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Aangevraagd().Id)
                {
                    _mailing.VerstuurMail_AanvraagGoedgekeurd(inschrijvingVanRepo);
                }
            }

            if (inschrijvingVanRepo.InschrijvingsstatusId.Value == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Afgekeurd().Id)
            {
                if (inschrijvingsStatusVoorPatch == _inschrijvingsstatusRepository.GetInschrijvingsstatus_Aangevraagd().Id)
                {
                    _mailing.VerstuurMail_AanvraagAfgekeurd(inschrijvingVanRepo);
                }
            }

            //return NoContent();
            var inschrijvingTeRetourneren = _mapper.Map <InschrijvingVoorRaadpleegDto>(inschrijvingVanRepo);

            return(CreatedAtRoute("GetInschrijving", new { inschrijvingsId = inschrijvingTeRetourneren.Id }, inschrijvingTeRetourneren));
        }