コード例 #1
0
ファイル: DocumentsService.cs プロジェクト: evgshk/StoreHouse
        public async Task <bool> AddItem(DocumentAddItemModel model)
        {
            try
            {
                //Это "немножко" плохой код; ввиду реализации всей инфраструктуры я потратил достаточное количество времени(для тестового задания).
                //Реализация методов обновления остатков должна быть заложена в репозиторий, что я не успеваю сделать :)
                //Тем не менее требуемый функционал реализован.
                var ctx = new StoreHouseContext();

                var entityFrom = ctx.Stocks.SingleOrDefault(x => x.ProductId == model.Product.Id && x.WarehouseId == model.WarehouseFrom.Id);
                entityFrom.Value -= model.Value;
                ctx.Stocks.Update(entityFrom);

                var entityTo = ctx.Stocks.SingleOrDefault(x => x.ProductId == model.Product.Id && x.WarehouseId == model.WarehouseTo.Id);
                entityTo.Value += model.Value;
                ctx.Stocks.Update(entityTo);
                //плохой код закончен

                var warehouseFromItem = await _warehouseRepo.GetItemByid(model.WarehouseFrom.Id);

                //var warehouseFromStock = warehouseFromItem.Stocks.SingleOrDefault(x => x.ProductId == model.Product.Id);
                //warehouseFromStock.Value -= model.Value;

                //var warehouseToItem = await _warehouseRepo.GetItemByid(model.WarehouseTo.Id);
                //var warehouseToStock = warehouseFromItem.Stocks.SingleOrDefault(x => x.ProductId == model.Product.Id);
                //warehouseToStock.Value += model.Value;

                _documentsRepo.Add(new Documents
                {
                    StockId       = model.Product.Id,
                    WarehouseFrom = model.WarehouseFrom.Id,
                    WarehouseTo   = model.WarehouseTo.Id,
                    Value         = model.Value
                });

                ctx.SaveChanges();//сохранение контекста, вызванное плохим кодом выше
                _documentsRepo.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
コード例 #2
0
 public ProductsRepository(StoreHouseContext dbContext) : base(dbContext)
 {
 }
コード例 #3
0
 public WarehousesRepository(StoreHouseContext dbContext) : base(dbContext)
 {
 }
コード例 #4
0
 public TypesController(StoreHouseContext context)
 {
     _context = context;
 }
コード例 #5
0
 public ClassificationsController(StoreHouseContext context)
 {
     _context = context;
 }
コード例 #6
0
 public OrderLinesController(StoreHouseContext context)
 {
     _context = context;
 }
コード例 #7
0
 public OrderObjectsController(StoreHouseContext context)
 {
     _context = context;
 }
コード例 #8
0
 public StocksRepository(StoreHouseContext dbContext) : base(dbContext)
 {
 }
コード例 #9
0
ファイル: RepositoryBase.cs プロジェクト: evgshk/StoreHouse
 protected RepositoryBase(StoreHouseContext dbContext)
 {
     _dbContext = dbContext;
     DbSet      = _dbContext.Set <T>();
 }
コード例 #10
0
 public DocumentsRepository(StoreHouseContext dbContext) : base(dbContext)
 {
 }