public async Task Handle(AddVehicleCommand command)
        {
            if (await _dataAccessObject.AnyAsync(m => m.Id == command.Id))
            {
                _logger.LogWarning("Vehicle {id} already added", command.Id);

                await _bus.Publish(new VehicleAddedEvent { VehicleId = command.Id });

                return;
            }

            _logger.LogInformation("Add vehicle with {plate} requested by {user}", command.Plate, _userAccessor.User?.Identity.Name);

            //using (var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
            //{
            //    transaction.EnlistRebus();

            var vehicle = new DomainModel.Vehicle(command.Id)
            {
                Plate    = command.Plate,
                Model    = command.Model,
                Brand    = command.Brand,
                Color    = command.Color,
                Customer = command.Customer,
                Year     = command.Year,
            };
            await _repository.AddAsync(vehicle);

            await _bus.Publish(new VehicleAddedEvent { VehicleId = command.Id });

            //    transaction.Complete();
            //}

            await _bus.Reply(command.Id);
        }
        public async Task Handle(RemoveVehicleCommand command)
        {
            DomainModel.Vehicle vehicle = await _repository.GetAsync(command.Id);

            if (vehicle == null)
            {
                return;
            }
            await _repository.RemoveAsync(vehicle);
        }
Esempio n. 3
0
        public static Repository.Models.Vehicle ConvertFrom(DomainModel.Vehicle vehicle)
        {
            var vehicleDTO = new Repository.Models.Vehicle();

            vehicleDTO.VehicleId = vehicle.Id;
            vehicleDTO.Location  = new GeoLocation(vehicle.Latitude, vehicle.Longitude);
            vehicleDTO.Route     = vehicle.Route;
            vehicleDTO.Date      = DateTime.Now;
            return(vehicleDTO);
        }
Esempio n. 4
0
        public static DomainModel.Vehicle ConvertToDomain(this Vehicle vehicle, double lat, double lon)
        {
            var origin   = new GeoCoordinate(lat, lon);
            var destin   = new GeoCoordinate(vehicle.Latitude, vehicle.Longitude);
            var distance = origin.GetDistanceTo(destin);

            var vehicleDomain = new DomainModel.Vehicle(vehicle.Id, vehicle.Route, vehicle.Latitude, vehicle.Longitude, vehicle.SecondsSinceReport, distance);

            return(vehicleDomain);
        }
Esempio n. 5
0
        public static Model.Vehicle ConvertFromDomain(DomainModel.Vehicle source)
        {
            var destin = new Model.Vehicle();

            destin.Id                 = source.Id;
            destin.Route              = source.Route;
            destin.Latitude           = source.Latitude;
            destin.Longitude          = source.Longitude;
            destin.SecondsSinceReport = source.SecondsSinceReport;
            destin.Distance           = source.DistanceFromBusStop.ToString("N0");
            destin.CreatedOn          = DateTime.Now;
            return(destin);
        }
Esempio n. 6
0
        public static DomainModel.Vehicle ConvertToDomain(this Vehicle vehicle)
        {
            var vehicleDomain = new DomainModel.Vehicle(vehicle.Id, vehicle.Route, vehicle.Latitude, vehicle.Longitude, vehicle.SecondsSinceReport, -1);

            return(vehicleDomain);
        }