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);
        }
Beispiel #2
0
        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);
        }