Exemple #1
0
        public void OnAutoAfgemeld(AutoKlaargemeldEvent autoKlaargemeldEvent)
        {
            if (autoKlaargemeldEvent.IsApk)
            {
                var garage = new Garage()
                {
                    GarageNaam = "Jomaya",
                    PlaatsNaam = "Utrecht",
                };
                autoKlaargemeldEvent.EigenaarNaam = GetEigenaarNaamFromKlantService(autoKlaargemeldEvent.KlantId);
                _service.Createmessage(autoKlaargemeldEvent, garage);

                var builder = new StringBuilder();

                builder.Append($"TimeStamp: {autoKlaargemeldEvent.TimeStamp} ");
                builder.Append($"Guid: {autoKlaargemeldEvent.GUID} ");
                builder.Append($"AutoID: {autoKlaargemeldEvent.AutoId} ");
                builder.Append($"Eigenaar: {autoKlaargemeldEvent.EigenaarNaam} ");
                builder.Append($"Kenteken: {autoKlaargemeldEvent.Kenteken} ");
                builder.Append($"KilometerStand: {autoKlaargemeldEvent.KilometerStand} ");
                builder.Append($"VoertuigType: personenauto ");

                LogToFile(builder.ToString());
            }
        }
Exemple #2
0
 private static APKKeuringsregistratieEvent CreateEvent(string response, AutoKlaargemeldEvent autoKlaargemeldEvent)
 {
     try
     {
         var apkKeuringsregistratieEvent = new APKKeuringsregistratieEvent()
         {
             GUID = Guid.NewGuid().ToString(), RoutingKey = "Jomaya.Onderhoudsopdracht.Updated", TimeStamp = DateTime.UtcNow
         };
         apkKeuringsregistratieEvent.Kenteken = response.Substring(response.IndexOf("<kenteken>") + 10, response.IndexOf("</kenteken>") - (response.IndexOf("<kenteken>") + 10));
         var steekproef = !response.Contains("<apk:steekproef xsi:nil=\"true\"/>");
         if (steekproef)
         {
             var steekproefDatum = response.Substring(response.IndexOf("<apk:steekproef>") + 16, response.IndexOf("</apk:steekproef>") - (response.IndexOf("<apk:steekproef>") + 16));
             apkKeuringsregistratieEvent.SteekproefDatum = DateTime.Parse(steekproefDatum);
             apkKeuringsregistratieEvent.Status          = Common.OnderhoudStatus.InSteekproef;
         }
         else
         {
             apkKeuringsregistratieEvent.Status = Common.OnderhoudStatus.Afgemeld;
         }
         apkKeuringsregistratieEvent.AutoId          = autoKlaargemeldEvent.AutoId;
         apkKeuringsregistratieEvent.OnderhoudId     = autoKlaargemeldEvent.OnderhoudId;
         apkKeuringsregistratieEvent.Kilometerstand  = autoKlaargemeldEvent.KilometerStand;
         apkKeuringsregistratieEvent.Werkzaamheden   = autoKlaargemeldEvent.Werkzaamheden;
         apkKeuringsregistratieEvent.OnderhoudsDatum = autoKlaargemeldEvent.OnderhoudsDatum;
         return(apkKeuringsregistratieEvent);
     }
     catch (Exception e)
     {
         ExceptionEventPublisher.PublishException(e);
         return(null);
     }
 }
Exemple #3
0
        public void Createmessage(AutoKlaargemeldEvent autoKlaargemeldEvent, Garage garage)
        {
            try
            {
                string message = @"<apkKeuringsverzoekRequestMessage xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
                                <keuringsverzoek xmlns='http://www.rdw.nl' xmlns:apk='http://www.rdw.nl/apk' correlatieId='51a33867-b5ec-4f10-9b31-b4e3ddcb58eb'>" +
                                 $"<voertuig type='personenauto'>" +
                                 $"<kenteken>{autoKlaargemeldEvent.Kenteken.Replace(" ", "")}</kenteken>" +
                                 $"<kilometerstand>{autoKlaargemeldEvent.KilometerStand}</kilometerstand>" +
                                 $"<naam>{autoKlaargemeldEvent.EigenaarNaam}</naam>" +
                                 $"</voertuig>" +
                                 $"<apk:keuringsdatum>{DateTime.Now.ToString("yyyy-MM-dd")}</apk:keuringsdatum>" +
                                 $"<apk:keuringsinstantie type='garage' kvk='3013 5370'>" +
                                 $"<apk:naam>{garage.GarageNaam}</apk:naam>" +
                                 $"<apk:plaats>{garage.PlaatsNaam}</apk:plaats>" +
                                 @"</apk:keuringsinstantie>
                                </keuringsverzoek>
                            </apkKeuringsverzoekRequestMessage>";
                string url = "http://rdwserver:18423/rdw/APKKeuringsverzoek";

                string response = PostMessage(url, message);
                APKKeuringsregistratieEvent apkKeuringsregistratieEvent = CreateEvent(response, autoKlaargemeldEvent);
                _publisher.Publish(apkKeuringsregistratieEvent);
            }
            catch (Exception e)
            {
                ExceptionEventPublisher.PublishException(e);
            }
        }
Exemple #4
0
        public void DispatcherGetsEventAndConnectToRDWAndGetAResponse()
        {
            var _configTo = new EventBusConfig()
            {
                ExchangeName = "jomaya.eventbus",
                Host         = Configuration.GetConnectionString("RabbitMQ") ?? "localhost",
                Port         = 5673,
                QueueName    = "DispatcherGetsEventAndConnectToRDWAndGetAResponseTo"
            };

            var _configFrom = new EventBusConfig()
            {
                ExchangeName = "jomaya.eventbus",
                Host         = Configuration.GetConnectionString("RabbitMQ") ?? "localhost",
                Port         = 5673,
                QueueName    = "DispatcherGetsEventAndConnectToRDWAndGetAResponseFrom"
            };
            var filePath = "integratie_test.txt";

            using (var eventSender = new EventPublisher(_configFrom))
                using (var testStarter = new EventPublisher(_configTo))
                    using (var rdwDispatcher = new RDWDispatcher(_configTo, new RDWService(eventSender)))
                        using (var testReceiver = new TestDispatcher(_configFrom))
                        {
                            rdwDispatcher.LogFilePath = filePath;
                            AutoKlaargemeldEvent aae = new AutoKlaargemeldEvent()
                            {
                                AutoId          = 1,
                                Kenteken        = "AB-BA-33",
                                GUID            = Guid.NewGuid().ToString(),
                                RoutingKey      = "",
                                TimeStamp       = DateTime.UtcNow,
                                KilometerStand  = 1234,
                                VoertuigType    = (int)Common.VoertuigTypes.Personenauto,
                                IsApk           = true,
                                KlantId         = 1,
                                Werkzaamheden   = "test",
                                OnderhoudId     = 1,
                                OnderhoudsDatum = DateTime.UtcNow
                            };
                            rdwDispatcher.Uri = new Uri("http://localhost:4003/");

                            testStarter.Publish(aae);

                            Thread.Sleep(2000);

                            Assert.AreEqual(2, testReceiver.ReceivedEventCount);
                            Assert.AreEqual("Jomaya.Common.Events.APKKeuringsregistratieEvent", testReceiver.ReceivedEvent.BasicProperties.Type);
                        }
        }
Exemple #5
0
        public void DispatcherLogsRDWRequests()
        {
            var _config = new EventBusConfig()
            {
                Host      = "localhost",
                Port      = 5673,
                QueueName = "DispatcherLogsRDWRequests"
            };

            var filePath = "test.txt";

            using (var eventSender = new EventPublisher(_config))
                using (var rdwDispatcher = new RDWDispatcher(_config, new RDWService(eventSender)))
                {
                    rdwDispatcher.LogFilePath = filePath;
                    rdwDispatcher.Uri         = new Uri("http://localhost:4003/");
                    var myEvent = new AutoKlaargemeldEvent()
                    {
                        AutoId         = 1,
                        GUID           = "TESTGUID",
                        Kenteken       = "TE-ST-55",
                        IsApk          = true,
                        KilometerStand = 123456,
                        RoutingKey     = "Niks",
                        TimeStamp      = DateTime.Now,
                        VoertuigType   = (int)Common.VoertuigTypes.Personenauto,
                        KlantId        = 1,
                    };


                    eventSender.Publish(myEvent);

                    Thread.Sleep(5000);

                    var logPath = Path.GetTempFileName();
                    var result  = File.ReadAllText(filePath);

                    var expectedFirstpart = $"TimeStamp: {myEvent.TimeStamp} Guid: TESTGUID AutoID: 1 Eigenaar: ";
                    var expectedLastPart  = $" Kenteken: TE-ST-55 KilometerStand: 123456 VoertuigType: 0 ";

                    Assert.IsTrue(result.Contains(expectedFirstpart));
                    Assert.IsTrue(result.Contains(expectedLastPart));
                    File.Delete(filePath);
                }
        }
Exemple #6
0
        public Onderhoudsopdracht UpdateOnderhoudsopdracht(Onderhoudsopdracht onderhoudsopdracht)
        {
            Onderhoudsopdracht oldOnderhoudsopdracht = _onderhoudRepository.Find(onderhoudsopdracht.Id);

            bool statusChanged    = false;
            bool klaargemeldEvent = false;

            if (oldOnderhoudsopdracht.Status != onderhoudsopdracht.Status)
            {
                statusChanged = true;
                if (onderhoudsopdracht.Status == Common.OnderhoudStatus.Klaargemeld && onderhoudsopdracht.IsApk)
                {
                    klaargemeldEvent = true;
                }
                else if (onderhoudsopdracht.Status == Common.OnderhoudStatus.Klaargemeld && !onderhoudsopdracht.IsApk)
                {
                    onderhoudsopdracht.Status = Common.OnderhoudStatus.Afgemeld;
                }
            }

            oldOnderhoudsopdracht.Status          = onderhoudsopdracht.Status;
            oldOnderhoudsopdracht.Kilometerstand  = onderhoudsopdracht.Kilometerstand;
            oldOnderhoudsopdracht.IsApk           = onderhoudsopdracht.IsApk;
            oldOnderhoudsopdracht.AutoId          = onderhoudsopdracht.AutoId;
            oldOnderhoudsopdracht.Werkzaamheden   = onderhoudsopdracht.Werkzaamheden;
            oldOnderhoudsopdracht.SteekproefDatum = onderhoudsopdracht.SteekproefDatum;

            _onderhoudRepository.Update(oldOnderhoudsopdracht);

            if (statusChanged)
            {
                OnderhoudStatusChangedEvent onderhoudStatusChangedEvent = CreateOnderhoudStatusChangedEvent(onderhoudsopdracht);
                _publisher.Publish(onderhoudStatusChangedEvent);
            }
            if (klaargemeldEvent)
            {
                AutoKlaargemeldEvent autoKlaargemeldEvent = CreateAutoKlaargemeldEvent(onderhoudsopdracht);
                _publisher.Publish(autoKlaargemeldEvent);
            }

            return(onderhoudsopdracht);
        }
Exemple #7
0
        public void CreateMessagePublishedEventOfRDWResponse()
        {
            var publisherMock = new Mock <IEventPublisher>(MockBehavior.Strict);

            publisherMock.Setup(pub => pub.Publish(It.IsAny <DomainEvent>()));
            var testEvent = new AutoKlaargemeldEvent()
            {
                VoertuigType = (int)VoertuigTypes.Personenauto, Kenteken = "AB-BA-22", KilometerStand = 1234, EigenaarNaam = "J. jansen", AutoId = 1, GUID = Guid.NewGuid().ToString(), RoutingKey = "", TimeStamp = DateTime.UtcNow
            };
            Garage testGarage = new Garage()
            {
                GarageNaam = "Jomaya", PlaatsNaam = "Utrecht"
            };

            using (var target = new RDWService(publisherMock.Object))
            {
                target.Createmessage(testEvent, testGarage);

                Thread.Sleep(1000);

                publisherMock.Verify(pub => pub.Publish(It.IsAny <DomainEvent>()), Times.Once());
            }
        }