コード例 #1
0
        public async Task <WarehouseItemModel> GetItem(Guid id)
        {
            var item = await _warehousesRepo.GetItemByid(id);

            return(new WarehouseItemModel
            {
                Id = item.Id,
                Name = item.Name ?? String.Empty,
                Code = item.Code ?? String.Empty,
                Adress = item.Adress ?? String.Empty,
                Stocks = item.Stocks.Select(x => new StockItemModel
                {
                    Product = new ProductItemModel
                    {
                        Id = (Guid)x.ProductId,
                        Name = x.Product.Name
                    },
                    Value = (int)x.Value
                }).ToList()
            });
        }
コード例 #2
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);
            }
        }