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() }); }
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); } }