예제 #1
0
        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 object Post(Document added)
        {
            object json;
            string messageError = "";

            try
            {
                Document posted = repository.Add(added, ref messageError);

                if (posted != null)
                {
                    json = new
                    {
                        total   = 1,
                        data    = posted,
                        success = true
                    };
                }
                else
                {
                    json = new
                    {
                        message = messageError,
                        success = false
                    };
                };
            }
            catch (Exception ex)
            {
                LogManager.Write("ERROR:" + Environment.NewLine + "\tMETHOD = " + this.GetType().FullName + "." + MethodBase.GetCurrentMethod().Name + Environment.NewLine + "\tMESSAGE = " + ex.Message);

                object error = new { message = ex.Message };

                json = new
                {
                    message = ex.Message,
                    success = false
                };
            };

            return(json);
        }
        public void CreateDocumentsPivot(DocumentsPivot Documents)
        {
            GEN_Documents clas = Mapper.Map <DocumentsPivot, GEN_Documents>(Documents);

            documentsRepository.Add(clas);
        }