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()); } }
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); } }
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); } }
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); } }
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); } }
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); }
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()); } }