示例#1
0
        public HttpResponseMessage Create([FromBody] RegistreerWerkgeverCommand command)
        {
            var werkgever = new PensioenSysteem.Domain.Werkgever.Werkgever();

            werkgever.Registreer(command);
            _repo.Save(werkgever, -1);
            return(new HttpResponseMessage(HttpStatusCode.Created));
        }
示例#2
0
        private bool Handle(DeelnemerGeregistreerd e)
        {
            // zoek de bijbehorende instantie van het RegistreerAanmelding proces
            ProcessState state = _repository.RaadpleegProcessState(e.CorrelationId);

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

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

            // werk het deelnemernummer bij
            state.DeelnemerNummer = e.Nummer;
            _repository.UpdateProcessState(state);

            // controleer aanwezigheid werkgever
            // TODO

            try {
                // registreer de werkgever
                WerkgeverGegevens          gegevens = state.InitierendCommand.WerkgeverGegevens;
                RegistreerWerkgeverCommand registreerWerkgeverCommand = new RegistreerWerkgeverCommand
                {
                    CorrelationId        = e.CorrelationId,
                    Id                   = gegevens.Id,
                    Version              = 0,
                    BedrijfsNaam         = gegevens.BedrijfsNaam,
                    NaamContactPersoon   = gegevens.NaamContactPersoon,
                    EmailAdres           = gegevens.EmailAdres,
                    Straat               = gegevens.Straat,
                    Huisnummer           = gegevens.Huisnummer,
                    HuisnummerToevoeging = gegevens.HuisnummerToevoeging,
                    Postcode             = gegevens.Postcode,
                    Plaats               = gegevens.Plaats
                };
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://localhost:24275");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage response = client.PostAsJsonAsync("/api/werkgever", registreerWerkgeverCommand).Result;
                }
            }
            catch (Exception ex)
            {
                state.Status      = "Fout";
                state.Foutmelding = ex.ToString();
                _repository.UpdateProcessState(state);
                return(false);
            }

            return(true);
        }
        public HttpResponseMessage Create([FromBody] RegistreerWerkgeverCommand command)
        {
            var werkgever = new PensioenSysteem.Domain.Werkgever.Werkgever();

            werkgever.Registreer(command);

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

            repo.Save(werkgever, -1);

            return(new HttpResponseMessage(HttpStatusCode.Created));
        }
 public void Registreer(RegistreerWerkgeverCommand command)
 {
     ApplyChange(new WerkgeverGeregistreerd
     {
         RoutingKey           = "Werkgever.Geregistreerd",
         CorrelationId        = command.CorrelationId,
         Id                   = command.Id,
         Nummer               = GenereerWerkgeverNummer(),
         BedrijfsNaam         = command.BedrijfsNaam,
         NaamContactPersoon   = command.NaamContactPersoon,
         EmailAdres           = command.EmailAdres,
         Straat               = command.Straat,
         Huisnummer           = command.Huisnummer,
         HuisnummerToevoeging = command.HuisnummerToevoeging,
         Postcode             = command.Postcode,
         Plaats               = command.Plaats
     });
 }