public AppActionResult Run(CurrentUserDto user, IEnumerable <Order> orders)
        {
            var shippingDbSet = _dataService.GetDbSet <Shipping>();

            var poolingInfo = "Эту перевозку можно отправить в Pooling";

            var shipping = new Shipping
            {
                Status               = ShippingState.ShippingCreated,
                PoolingState         = ShippingPoolingState.PoolingAvailable,
                PoolingInfo          = poolingInfo,
                Id                   = Guid.NewGuid(),
                ShippingNumber       = ShippingNumberProvider.GetNextShippingNumber(),
                ProviderId           = user.ProviderId,
                ShippingCreationDate = DateTime.UtcNow
            };

            _historyService.Save(shipping.Id, "shippingSetCreated", shipping.ShippingNumber);

            shipping.DeliveryType      = DeliveryType.Delivery;
            shipping.TarifficationType = _shippingTarifficationTypeDeterminer.GetTarifficationTypeForOrders(orders);

            shippingDbSet.Add(shipping);

            UnionOrderInShipping(orders, orders, shipping, _historyService);

            var changes       = _dataService.GetChanges <Shipping>().FirstOrDefault(x => x.Entity.Id == shipping.Id);
            var changeTracker = _changeTrackerFactory.CreateChangeTracker()
                                .TrackAll <Shipping>()
                                .Remove <Shipping>(x => x.Id);

            changeTracker.LogTrackedChanges(changes);

            return(new AppActionResult
            {
                IsError = false,
                Message = "shippingSetCreated".Translate(user.Language, shipping.ShippingNumber)
            });
        }
        private static void InitDatabase(IServiceCollection services, IConfiguration configuration, bool migrateDb)
        {
            var connectionString = configuration.GetConnectionString("DefaultDatabase");

            var buildServiceProvider = services.AddEntityFrameworkNpgsql()
                                       .AddDbContext <AppDbContext>(options =>
            {
                options.UseNpgsql(connectionString);
            })
                                       .BuildServiceProvider();

            var appDbContext = buildServiceProvider.GetService <AppDbContext>();

            if (migrateDb)
            {
                //appDbContext.DropDb();
                appDbContext.Migrate(connectionString);
            }

            var shippingsCount = appDbContext.Shippings.Count();

            ShippingNumberProvider.InitLastNumber(shippingsCount);
        }
Example #3
0
        public AppActionResult Run(CurrentUserDto user, IEnumerable <Order> orders)
        {
            var shippingDbSet = _dataService.GetDbSet <Shipping>();

            var shipping = new Shipping
            {
                Status               = ShippingState.ShippingCreated,
                PoolingState         = ShippingPoolingState.PoolingAvailable,
                Id                   = Guid.NewGuid(),
                ShippingNumber       = ShippingNumberProvider.GetNextShippingNumber(),
                ProviderId           = orders.FirstOrDefault()?.ProviderId ?? user.ProviderId,
                ShippingCreationDate = DateTime.UtcNow,
                UserCreatorId        = user.Id.Value
            };

            _historyService.Save(shipping.Id, "shippingSetCreated", shipping.ShippingNumber);

            shipping.DeliveryType = DeliveryType.Delivery;

            shippingDbSet.Add(shipping);

            UnionOrderInShipping(orders, orders, shipping, _historyService);

            var changes       = _dataService.GetChanges <Shipping>().FirstOrDefault(x => x.Entity.Id == shipping.Id);
            var changeTracker = _changeTrackerFactory.CreateChangeTracker()
                                .TrackAll <Shipping>()
                                .Remove <Shipping>(x => x.Id);

            changeTracker.LogTrackedChanges(changes);

            UpdateShippingFromIntegrations(shipping);
            return(new AppActionResult
            {
                IsError = false,
                Message = "shippingSetCreated".Translate(user.Language, shipping.ShippingNumber)
            });
        }