Example #1
0
        /// <summary>
        ///
        /// </summary>
        private void Run()
        {
            var builder = new DbContextOptionsBuilder <OnderhoudBeheerContext>();

            builder.UseSqlServer(_dbConnectionString);
            var options = builder.Options;

            while (true)
            {
                try
                {
                    using (var rabbit = new RabbitMqConnection(_options))
                        using (var publisher = new EventPublisher(rabbit))
                            using (var service = new ApkEventService(options, publisher))
                                using (var dispatcher = new ApkDispatcher(rabbit, service))
                                {
                                    dispatcher.StartListening();
                                    while (rabbit.Channel.IsOpen)
                                    {
                                        Thread.Sleep(60000);
                                    }
                                    _service.Log(new LogMessage("Lost connection with RabbitMq"));
                                }
                }
                catch (Exception e)
                {
                    _service.LogException(new LogMessage(e.Message, e.StackTrace));
                    Thread.Sleep(5000);
                }
            }
        }
Example #2
0
        public void HandleApkRequestWithSteekproef()
        {
            var pubMock = new Mock <IEventPublisher>(MockBehavior.Strict);

            pubMock.Setup(x => x.Publish(It.IsAny <DomainEvent>()));
            var service = new ApkEventService(_options, pubMock.Object);

            long id = -1;

            using (var context = new OnderhoudBeheerContext(_options))
                using (var repo = new OnderhoudsopdrachtRepository(context))
                {
                    id = repo.Insert(new Onderhoudsopdracht()
                    {
                        Kenteken                   = "AA-BB-11",
                        HasApk                     = true,
                        Kilometerstand             = 100,
                        OnderhoudsBeschrijving     = "Achterlicht links vervangen",
                        OpdrachtAangemaakt         = DateTime.UtcNow,
                        OpdrachtStatus             = OpdrachtStatussen.Aangemeld().StatusId,
                        OpdrachtStatusBeschrijving = OpdrachtStatussen.Aangemeld().Beschrijving,
                        Bestuurder                 = "Rob",
                        TelefoonNrBestuurder       = "1232323"
                    });
                }


            var apkEvent = new ApkAfgemeldEvent();

            apkEvent.CorrelationID     = new Guid();
            apkEvent.HasSteekProef     = true;
            apkEvent.Kenteken          = "12-12-12";
            apkEvent.SteekProefDatum   = new DateTime(2016, 12, 12);
            apkEvent.TimeStamp         = new DateTime();
            apkEvent.RoutingKey        = "test";
            apkEvent.OnderhoudsBeurtId = id;

            service.HandlerApkEvent(apkEvent);

            pubMock.Verify(x => x.Publish(It.IsAny <DomainEvent>()), Times.Once);

            using (var context = new OnderhoudBeheerContext(_options))
                using (var repo = new OnderhoudsopdrachtRepository(context))
                {
                    var opdracht = repo.Find(id);
                    Assert.AreEqual(OpdrachtStatussen.Klaargemeld().StatusId, opdracht.OpdrachtStatus);
                    Assert.AreEqual(OpdrachtStatussen.Klaargemeld().Beschrijving, opdracht.OpdrachtStatusBeschrijving);
                }
        }
 public ApkDispatcher(IRabbitMqConnection connection, ApkEventService service) : base(connection)
 {
     _service = service;
 }