コード例 #1
0
        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);
            }
        }