public async Task RegisterShipAsync(string eventId, string shipCode, string portCode, string shipName) { var port = await serviceProvider.GetService <ISingleQueryPortByIntCode>().UseIntCode(portCode).ExecuteAsync(); var shipRef = referenceService.GetRef(); var @event = new RegisterShipEvent(DateTime.Now, eventId, shipRef, port, shipName, shipCode); await queueService.AddEvent(@event); }
public void RegisterShip(RegisterShipEvent @event) { if (!string.IsNullOrEmpty(RegistrationCode)) { throw new Exception($"Ship already registered: {Name}: {RegistrationCode} : {Location.Name}"); } if (@event.Port == null || @event.Port.Name == Port.AT_SEA.Name) { throw new Exception($"Can't register ship At Sea location: {@event.Name}: {@event.Name} : {@event.Port?.Name ?? "port not set"}"); } Name = @event.Name; RegistrationCode = @event.Code; Location = @event.Port; }
public void RegisterShipEventSuccess() { var s = new Ship(); var p = new Port() { Name = "port name", IntlCode = "int code of port" }; var @event = new RegisterShipEvent(DateTime.Now, "id", new TestEntityRef <Ship>("id", s), p, "ship name", "ship reg code"); @event.Process(); Assert.Equal("ship name", s.Name); Assert.Equal("ship reg code", s.RegistrationCode); Assert.NotNull(s.Location); Assert.Equal(p, s.Location); }
public void RegisterShipDataMap() { var configuration = new MapperConfiguration(cfg => { cfg.AddMaps(typeof(RegisterShipEventData).Assembly); }); var mapper = new Mapper(configuration); var registerShipEvent = new RegisterShipEvent(DateTime.Now, "id", new TestEntityRef <Ship>("ship id", null), new Port() { Id = "port id", Name = "port name", IntlCode = "intl code" }, "ship name", "ship code"); var registerShipEventData = mapper.Map <RegisterShipEventData>(registerShipEvent); Assert.Equal(registerShipEvent.Id, registerShipEventData.Id); Assert.Equal(registerShipEvent.Ship.Id, registerShipEventData.ShipId); Assert.Equal(registerShipEvent.Port.IntlCode, registerShipEventData.PortIntlCode); Assert.Equal(registerShipEvent.Name, registerShipEventData.Name); Assert.Equal(registerShipEvent.Code, registerShipEventData.Code); Assert.Equal(new DateTimeOffset(registerShipEvent.Occured).ToUnixTimeMilliseconds(), registerShipEventData.Occured); Assert.Equal(new DateTimeOffset(registerShipEvent.Recorded).ToUnixTimeMilliseconds(), registerShipEventData.Recorded); }