public IActionResult Create([FromBody] OrderObject item)
        {
            if (item == null)
            {
                return(BadRequest());
            }

            _context.OrderObject.Add(item);
            _context.SaveChanges();

            return(CreatedAtRoute("GetObj", new { id = item.ObjectId }, item));
        }
        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);
            }
        }
Exemple #3
0
 public void SaveChanges()
 {
     _dbContext.SaveChanges();
 }
        public IActionResult Create(string id)
        {
            string s  = "ee723a5c-4f3d-4c96-8fc9-19961257d1af";
            int    co = s.Length;

            char[] UsIdCH = new char[co];
            for (int i = 0; i < co; i++)
            {
                UsIdCH[i] = id[i];
            }
            string UsId = new string(UsIdCH);

            char[] GoodIdStrCH = new char[id.Length - co];;

            for (int i = co; i < id.Length; i++)
            {
                GoodIdStrCH[i - co] = id[i];
            }

            string GoodIdStr = new string(GoodIdStrCH);

            int GoodId = Int32.Parse(GoodIdStr);

            //Order Norder = new Order();
            //Norder.Date = DateTime.Today;
            //Norder.SoldOut = false;
            //Norder.UserId = UsId;
            //_context.Order.Add(Norder);

            //_context.SaveChanges();
            //return new NoContentResult();



            _context.Order.Load();
            foreach (Order od in _context.Order.Include(obj => obj.OrderLine))
            {
                if (od.UserId == UsId)
                {
                    if (!od.SoldOut)
                    {
                        foreach (OrderLine line in od.OrderLine)
                        {
                            if (line.ObjectId == GoodId)
                            {
                                var    NLiine = _context.OrderLine.FirstOrDefault(t => t.LineId == line.LineId);
                                double price  = NLiine.Price / NLiine.Amount;
                                NLiine.Amount++;
                                NLiine.Price += price;
                                _context.OrderLine.Update(NLiine);
                                _context.SaveChanges();
                                return(new NoContentResult());
                            }
                        }


                        var good = _context.OrderObject.FirstOrDefault(t => t.ObjectId == GoodId);

                        OrderLine Nline = new OrderLine();
                        Nline.Amount   = 1;
                        Nline.ObjectId = GoodId;
                        Nline.OrderId  = od.OrderId;
                        Nline.Price    = good.Price;

                        _context.OrderLine.Add(Nline);
                        _context.SaveChanges();
                        return(new NoContentResult());
                    }
                }
            }

            Order Norder = new Order();

            Norder.Date    = DateTime.Today;
            Norder.SoldOut = false;
            Norder.UserId  = UsId;
            _context.Order.Add(Norder);
            _context.SaveChanges();


            _context.Order.Load();
            foreach (Order od in _context.Order.Include(obj => obj.OrderLine))
            {
                if (od.UserId == UsId)
                {
                    if (!od.SoldOut)
                    {
                        foreach (OrderLine line in od.OrderLine)
                        {
                            if (line.ObjectId == GoodId)
                            {
                                var    NLiine = _context.OrderLine.FirstOrDefault(t => t.LineId == line.LineId);
                                double price  = NLiine.Price / NLiine.Amount;
                                NLiine.Amount++;
                                NLiine.Price += price;
                                _context.OrderLine.Update(NLiine);
                                _context.SaveChanges();
                                return(new NoContentResult());
                            }
                        }
                        var good = _context.OrderObject.FirstOrDefault(t => t.ObjectId == GoodId);

                        OrderLine Nline = new OrderLine();
                        Nline.Amount   = 1;
                        Nline.ObjectId = GoodId;
                        Nline.OrderId  = od.OrderId;
                        Nline.Price    = good.Price;

                        _context.OrderLine.Add(Nline);
                        _context.SaveChanges();
                        return(new NoContentResult());
                    }
                }
            }
            return(new NoContentResult());
        }