public Orders AddOrder() { double total = 0.0; double ShipPrice = 0; int Number = 0; OrderFunction = new OrderFunction(); Basket = db.Basket.Where(b => b.FollowerId == FollowerId && b.Enable && b.BotInfoId == BotInfo.Id).Include(b => b.Product.CurrentPrice).ToList(); OrderTmp = db.OrderTemp.Where(o => o.FollowerId == FollowerId && o.BotInfoId == BotInfo.Id).FirstOrDefault(); var LastOrder = db.Orders.OrderByDescending(o => o.Id).FirstOrDefault(); //Общая строимость корзины total = BusinessLayer.BasketFunction.BasketTotalPrice(Basket); if (LastOrder != null) // Узнаем последний номер заказа в БД { Number = Convert.ToInt32(LastOrder.Number); } if (OrderTmp != null && OrderTmp.PaymentTypeId != null && Basket.Count > 0) { Orders NewOrder = new Orders { DateAdd = DateTime.Now, FollowerId = FollowerId, Text = OrderTmp.Text, Number = Number + 1, Paid = false, BotInfoId = BotInfo.Id, }; if (OrderTmp.PickupPointId != null)// самовывоз { NewOrder.PickupPointId = OrderTmp.PickupPointId; } if (Invoice != null) // проверяем создался ли инвойс. Если нет то у пользователя будет способ оплаты при получении { NewOrder.InvoiceId = Invoice.Id; } db.Orders.Add(NewOrder); db.SaveChanges(); // добавляем инф. о доставке в БД if (OrderTmp != null) { AddAddressToOrder(NewOrder.Id, OrderTmp.AddressId, ShipPrice); } // переносим из корзины в Состав заказа NewOrder.OrderProduct = BusinessLayer.BasketFunction.FromBasketToOrderPosition(NewOrder.Id, Basket); var CurrentStarus = OrderFunction.InsertOrderStatus(NewOrder.Id, FollowerId); NewOrder = OrderFunction.UpdCurrentStatus(NewOrder, CurrentStarus); OrderFunction.RemoveOrderTmp(FollowerId, BotInfo.Id); db.SaveChanges(); db.Dispose(); return(NewOrder); } else { return(null); } }