Exemple #1
0
        public async Task <bool> Handle(
            AddStoreProductPriceCommand request,
            CancellationToken cancellationToken)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var store = await _dbContext.Stores
                        .FirstOrDefaultAsync(x => x.Id == request.StoreId);

            if (store == null)
            {
                throw new Exception($"Couldn't find any store # {request.StoreId}");
            }

            var storeProductPrice = StoreProductPrice.Of(
                Guid.NewGuid(),
                store.Id,
                request.ProductId,
                request.Price,
                request.Rop,
                request.Eoq);

            await _dbContext.StoreProductPrices.AddAsync(storeProductPrice);

            var effectedRows = await _dbContext.SaveChangesAsync();

            return(effectedRows > 0);
        }
        protected override void OnModelCreating(
            ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <Store>().ToTable("Store", "inv");
            modelBuilder.Entity <Store>().HasKey(x => x.Id);
            modelBuilder.Entity <Store>().Ignore(x => x.DomainEvents);

            modelBuilder.Entity <StoreProductPrice>().ToTable("StoreProductPrice", "inv");
            modelBuilder.Entity <StoreProductPrice>().HasKey(x => x.Id);
            modelBuilder.Entity <StoreProductPrice>().Ignore(x => x.DomainEvents);

            modelBuilder.Entity <Store>()
            .HasMany(x => x.StoreProductPrices)
            .WithOne(x => x.Store)
            .HasForeignKey(x => x.StoreId)
            .IsRequired();

            // seed data
            var models = "Infrastructure/Persistence/SeedData/inventories.json".ReadData <List <StoreDto> >(
                AppContext.BaseDirectory);

            //Console.WriteLine(models.SerializeObject());
            foreach (var inv in models)
            {
                modelBuilder.Entity <Store>().HasData(
                    Store.Of(
                        inv.Id.ConvertTo <Guid>(),
                        inv.Location,
                        inv.Description,
                        inv.Website
                        )
                    );
            }

            var storeProducts = "Infrastructure/Persistence/SeedData/store-product-price.json"
                                .ReadData <List <StoreProductPriceDto> >(
                AppContext.BaseDirectory);

            //Console.WriteLine(storeProducts.SerializeObject());
            foreach (var sp in storeProducts)
            {
                modelBuilder.Entity <StoreProductPrice>().HasData(
                    StoreProductPrice.Of(
                        sp.Id.ConvertTo <Guid>(),
                        sp.StoreId.ConvertTo <Guid>(),
                        sp.ProductId.ConvertTo <Guid>(),
                        sp.Price,
                        sp.Rop,
                        sp.Eoq
                        )
                    );
            }
        }