public async Task<IHttpActionResult> PostFinishedOrder(FinishedOrder finishedOrder)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.FinishedOrders.Add(finishedOrder);
            await db.SaveChangesAsync();

            db.Entry(finishedOrder).Reference(x => x.AuthorBuy).Load();
            db.Entry(finishedOrder).Reference(x => x.AuthorSell).Load();

            var dto = new FinishedOrderDTO()
            {
                Id = finishedOrder.Id,
                Price = finishedOrder.Price,
                Quantity = finishedOrder.Quantity,
                CommentBuy = finishedOrder.CommentBuy,
                CommentSell = finishedOrder.CommentSell,
                DateBuy = finishedOrder.DateBuy,
                DateSell = finishedOrder.DateSell,
                DateFinished = DateTime.Now,
                AuthorBuyName = finishedOrder.AuthorBuy.UserName,
                AuthorSellName = finishedOrder.AuthorSell.UserName,
            };

            return CreatedAtRoute("DefaultApi", new { id = finishedOrder.Id }, dto);
        }
        public async Task<IHttpActionResult> GetFinishedOrders()
        {
            // Это надо было бы повесить в какой-нибудь ncron, но у меня его нету =( {
            var buyOrders = (from a in db.BuyOrders
                             select a).ToList();

            var sellOrders = (from b in db.SellOrders
                              select b).ToList();

            foreach (SellOrder sellItem in sellOrders)
            {
                var goodBuyOrders = (from order in buyOrders
                                     where order.Price >= 1
                                     orderby order.Price
                                     select order).ToList();

                foreach (BuyOrder order in goodBuyOrders)
                {
                    var finishedCount = sellItem.Quantity - order.Quantity;
                    if (finishedCount > 0)
                    {
                        var finishedOrder = new FinishedOrder()
                        {
                            Price = order.Price,
                            Quantity = order.Quantity,
                            CommentBuy = order.Comment,
                            CommentSell = sellItem.Comment,
                            DateBuy = order.Date,
                            DateSell = sellItem.Date,
                            DateFinished = DateTime.Now,
                            AuthorBuyId = order.AuthorId,
                            AuthorSellId = sellItem.AuthorId
                        };
                        db.FinishedOrders.Add(finishedOrder);

                        sellItem.Quantity -= order.Quantity;
                        db.BuyOrders.Remove(order);
                        db.SellOrders.Attach(sellItem);
                        db.Entry(sellItem).State = EntityState.Modified;
                    }
                    if (finishedCount < 0)
                    {
                        var finishedOrder = new FinishedOrder()
                        {
                            Price = order.Price,
                            Quantity = sellItem.Quantity,
                            CommentBuy = order.Comment,
                            CommentSell = sellItem.Comment,
                            DateBuy = order.Date,
                            DateSell = sellItem.Date,
                            DateFinished = DateTime.Now,
                            AuthorBuyId = order.AuthorId,
                            AuthorSellId = sellItem.AuthorId
                        };
                        db.FinishedOrders.Add(finishedOrder);

                        order.Quantity -= sellItem.Quantity;
                        db.BuyOrders.Attach(order);
                        db.Entry(order).State = EntityState.Modified;
                        db.SellOrders.Remove(sellItem);
                    }
                    if (finishedCount == 0)
                    {
                        var finishedOrder = new FinishedOrder()
                        {
                            Price = order.Price,
                            Quantity = sellItem.Quantity,
                            CommentBuy = order.Comment,
                            CommentSell = sellItem.Comment,
                            DateBuy = order.Date,
                            DateSell = sellItem.Date,
                            DateFinished = DateTime.Now,
                            AuthorBuyId = order.AuthorId,
                            AuthorSellId = sellItem.AuthorId
                        };
                        db.FinishedOrders.Add(finishedOrder);

                        db.BuyOrders.Remove(order);
                        db.SellOrders.Remove(sellItem);
                    }
                    await db.SaveChangesAsync();
                }
            }
            // }

            var orders = await db.FinishedOrders.Include(b => b.AuthorBuy).Include(b => b.AuthorSell).Select(b =>
                new FinishedOrderDTO()
                {
                    Id = b.Id,
                    Price = b.Price,
                    Quantity = b.Quantity,
                    CommentBuy = b.CommentBuy,
                    CommentSell = b.CommentSell,
                    DateBuy = b.DateBuy,
                    DateSell = b.DateSell,
                    DateFinished = b.DateFinished,
                    AuthorBuyName = b.AuthorBuy.UserName,
                    AuthorSellName = b.AuthorSell.UserName
                }).ToListAsync();

            return Ok(orders);
        }
        public async Task<IHttpActionResult> PutFinishedOrder(int id, FinishedOrder finishedOrder)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != finishedOrder.Id)
            {
                return BadRequest();
            }

            db.Entry(finishedOrder).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!FinishedOrderExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }