public HttpResponseMessage Create([FromBody] RegistreerArbeidsverhoudingCommand command)
        {
            var arbeidsverhouding = new PensioenSysteem.Domain.Arbeidsverhouding.Arbeidsverhouding();

            arbeidsverhouding.Registreer(command);
            _repo.Save(arbeidsverhouding, -1);
            return(new HttpResponseMessage(HttpStatusCode.Created));
        }
        public HttpResponseMessage Create([FromBody] RegistreerArbeidsverhoudingCommand command)
        {
            var arbeidsverhouding = new PensioenSysteem.Domain.Arbeidsverhouding.Arbeidsverhouding();

            arbeidsverhouding.Registreer(command);

            var repo = new EventSourcedAggregateRepository <PensioenSysteem.Domain.Arbeidsverhouding.Arbeidsverhouding>(
                new FileEventStore(new RabbitMQEventPublisher()));

            repo.Save(arbeidsverhouding, -1);

            return(new HttpResponseMessage(HttpStatusCode.Created));
        }
Exemple #3
0
        private bool Handle(WerkgeverGeregistreerd e)
        {
            // zoek de bijbehorende instantie van het RegistreerAanmelding proces
            ProcessState state = _repository.RaadpleegProcessState(e.CorrelationId);

            if (state == null)
            {
                return(false);
            }

            // als de werkgever al bekend is, beschouw het event als afgehandeld (idempotentie)
            if (!string.IsNullOrEmpty(state.WerkgeverNummer))
            {
                return(true);
            }

            // werk het werkgevernummer bij
            state.WerkgeverNummer = e.Nummer;
            _repository.UpdateProcessState(state);

            try
            {
                // registreer de arbeidsverhouding
                RegistreerArbeidsverhoudingCommand registreerArbeidsverhoudingCommand = new RegistreerArbeidsverhoudingCommand
                {
                    CorrelationId   = e.CorrelationId,
                    Id              = Guid.NewGuid(),
                    Version         = 0,
                    DeelnemerNummer = state.DeelnemerNummer,
                    WerkgeverNummer = state.WerkgeverNummer,
                    Ingangsdatum    = state.InitierendCommand.IngangsDatum,
                    EindDatum       = state.InitierendCommand.EindDatum
                };
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:24693");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage response = client.PostAsJsonAsync("/api/arbeidsverhouding", registreerArbeidsverhoudingCommand).Result;
                }
            }
            catch (Exception ex)
            {
                state.Status      = "Fout";
                state.Foutmelding = ex.ToString();
                _repository.UpdateProcessState(state);
                return(false);
            }

            return(true);
        }
Exemple #4
0
 public void Registreer(RegistreerArbeidsverhoudingCommand command)
 {
     this.ApplyChange(new ArbeidsverhoudingGeregistreerd
     {
         RoutingKey      = "Arbeidsverhouding.Geregistreerd",
         CorrelationId   = command.CorrelationId,
         Id              = command.Id,
         Nummer          = GenereerArbeidsverhoudingNummer(),
         DeelnemerNummer = command.DeelnemerNummer,
         WerkgeverNummer = command.WerkgeverNummer,
         Ingangsdatum    = command.Ingangsdatum,
         EindDatum       = command.EindDatum
     });
 }
        private bool Handle(WerkgeverGeregistreerd e)
        {
            // zoek de bijbehorende instantie van het RegistreerAanmelding proces
            ProcesState state = RaadpleegProcesState(e.CorrelationId);
            if (state == null)
            {
                return false;
            }

            // als de werkgever al bekend is, beschouw het event als afgehandeld (idempotentie)
            if (!string.IsNullOrEmpty(state.WerkgeverNummer))
            {
                return true;
            }

            // werk het werkgevernummer bij
            state.WerkgeverNummer = e.Nummer;
            UpdateProcesState(state);

            try
            {
                // registreer de arbeidsverhouding
                RegistreerArbeidsverhoudingCommand registreerArbeidsverhoudingCommand = new RegistreerArbeidsverhoudingCommand
                {
                    CorrelationId = e.CorrelationId,
                    Id = Guid.NewGuid(),
                    Version = 0,
                    DeelnemerNummer = state.DeelnemerNummer,
                    WerkgeverNummer = state.WerkgeverNummer,
                    Ingangsdatum = state.InitierendCommand.IngangsDatum,
                    EindDatum = state.InitierendCommand.EindDatum
                };
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:24693");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage response = client.PostAsJsonAsync("/api/arbeidsverhouding", registreerArbeidsverhoudingCommand).Result;
                }
            }
            catch (Exception ex)
            {
                state.Status = "Fout";
                state.Foutmelding = ex.ToString();
                UpdateProcesState(state);
                return false;
            }

            return true;
        }