示例#1
0
        //删除外卖单

        public bool DeletedTakeoutOrder(int id)
        {
            if (id < 0)
            {
                return(false);
            }
            using (ChooseDishesEntities entities = new ChooseDishesEntities())
            {
                try
                {
                    TakeoutOrder booktype = new TakeoutOrder()
                    {
                        TakeoutId = id,
                    };
                    DbEntityEntry <TakeoutOrder> entry = entities.Entry <TakeoutOrder>(booktype);
                    entry.State = EntityState.Deleted;
                    entities.SaveChanges();
                    return(true);
                }
                catch (Exception e)
                {
                    e.ToString();
                    return(false);
                }
            }
        }
        public void AddTakeoutOrder()
        {
            TakeoutOrderDataService at = new TakeoutOrderDataService();
            TakeoutOrder            to = new TakeoutOrder()
            {
                OrderId        = new Random().Next(10000) + 1,
                OrderPeopleId  = 15,
                DeliveryManNum = "000b",
                Num            = "001",
                AdvanceAmount  = 200,
                DeliverTime    = DateTime.Now,
                SendTime       = DateTime.Now,
                CreateBy       = 1,
                CreateDatetime = DateTime.Now,
                Status         = 0,
                Deleted        = 0
            };

            Assert.IsTrue(at.AddTakeoutOrder(to));
        }
        public void UpdateTakeoutOrder()
        {
            TakeoutOrderDataService at = new TakeoutOrderDataService();
            TakeoutOrder            to = new TakeoutOrder()
            {
                OrderId        = 1694,
                TakeoutId      = 1,
                OrderPeopleId  = 14,
                DeliveryManNum = "aaa",
                Num            = "003",
                AdvanceAmount  = 500,
                DeliverTime    = DateTime.Today,
                SendTime       = DateTime.Today,
                Status         = 0,
                Deleted        = 0,
                UpdateBy       = 1,
                UpdateDatetime = DateTime.Now
            };

            Assert.IsTrue(at.UpdateTakeoutOrder(to));
        }
示例#4
0
 //添加外卖单
 public bool AddTakeoutOrder(TakeoutOrder To)
 {
     if (To == null)
     {
         return(false);
     }
     //添加
     using (ChooseDishesEntities entities = new ChooseDishesEntities())
     {
         try
         {
             entities.TakeoutOrder.Add(To);
             entities.SaveChanges();
             return(true);
         }
         catch (Exception e)
         {
             e.ToString();
             return(false);
         }
     }
 }
示例#5
0
 //修改外卖单
 public bool UpdateTakeoutOrder(TakeoutOrder To)
 {
     if (To == null)
     {
         return(false);
     }
     //修改  直接修改
     using (ChooseDishesEntities entities = new ChooseDishesEntities())
     {
         try
         {
             var type = entities.TakeoutOrder.SingleOrDefault(bt => bt.OrderId == To.OrderId);
             if (type != null)
             {
                 type.OrderPeopleId  = To.OrderPeopleId;
                 type.DeliveryManNum = To.DeliveryManNum;
                 type.Num            = To.Num;
                 type.AdvanceAmount  = To.AdvanceAmount;
                 type.DeliverTime    = To.DeliverTime;
                 type.SendTime       = To.SendTime;
                 type.Status         = To.Status;
                 type.Deleted        = To.Deleted;
                 type.UpdateBy       = To.UpdateBy;
                 type.UpdateDatetime = To.UpdateDatetime;
                 entities.SaveChanges();
                 return(true);
             }
         }
         catch (Exception e)
         {
             e.ToString();
             return(false);
         }
         return(false);
     }
 }
示例#6
0
        //确定落单
        private void CommitOrder()
        {
            if (string.IsNullOrEmpty(ContactNumber))
            {
                MessageBox.Show("请填写联系电话");
                return;
            }
            if (string.IsNullOrEmpty(OrderPeople))
            {
                MessageBox.Show("请填写或者选择订餐人");
                return;
            }
            if (string.IsNullOrEmpty(Address))
            {
                MessageBox.Show("请填写订餐人地址");
                return;
            }
            bool flag = false;
            //1.将订餐人信息插入到外卖客户信息表中
            TakeoutClientInfo info = _DataService.FindTakeoutClientByTelephone(ContactNumber);

            if (info == null)
            {
                info = new TakeoutClientInfo()
                {
                    OrderPeopleId   = new Random().Next(1000) + 1,
                    Order_people    = OrderPeople,
                    Telephone       = ContactNumber,
                    Address         = Address,
                    Create_by       = 0, //操作人id
                    Create_datetime = DateTime.Now,
                    Status          = 0,
                    Deleted         = 0
                };

                flag = _DataService.AddTakeoutClientInfo(info);
            }
            else
            {
                info.Order_people    = OrderPeople;
                info.Telephone       = ContactNumber;
                info.Address         = Address;
                info.Status          = 0;
                info.Deleted         = 0;
                info.Update_by       = 0; //操作人id
                info.Update_datetime = DateTime.Now;
                flag = _DataService.UpdateTakeoutClientInfo(info);
            }
            if (flag)
            {
                TakeoutOrder to = new TakeoutOrder();
                to.OrderPeopleId  = info.OrderPeopleId;
                to.OrderId        = 1222;        //订单号,去订单中查询获取
                to.DeliveryManNum = DeliveryMan; //需要去员工数据库查找确定
                to.Num            = "Q000";
                to.AdvanceAmount  = 0;
                to.DeliverTime    = DateTime.Now; //送出时指定
                to.SendTime       = DateTime.Now;
                to.Status         = 0;            //0表示未送出状态,1表示在送出状态,2表示送达未签收状态,3.送达已签收状态
                to.Deleted        = 0;
                to.CreateBy       = 0;            //操作人id
                to.CreateDatetime = DateTime.Now;
                //2.将订单信息插入到订单表中
                flag = _DataService.AddTakeoutOrder(to);
                if (flag)
                {
                    //关闭所有页面
                    //通知主线程执行关闭操作
                    DispatcherHelper.CheckBeginInvokeOnUI(() => TakeoutOrderWindow.getInstance().Close());
                    //3.在厨房打印出厨打单
                    return;
                }
            }
            DispatcherHelper.CheckBeginInvokeOnUI(() => MessageBox.Show("外卖单录入失败"));
        }
        public void CreateTakeoutPriorityOrderQueue(AddOrderedMealViewModel model)
        {
            var usrID = HttpContext.Session.GetInt32("userID");

            var users = _context.Users.Include(t => t.TakeoutOrders).Include(r => r.Reservations).ToList();

            foreach (var user in users)
            {
                user.LoyalityPoints  = user.Reservations.Where(r => r.State != (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints -= user.Reservations.Where(r => r.State == (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints += user.TakeoutOrders.Where(r => r.State != (int)OrderState.Canceled).ToList().Count;
                user.LoyalityPoints -= user.TakeoutOrders.Where(r => r.State == (int)OrderState.Canceled).ToList().Count;
            }

            var takeout = new TakeoutOrder
            {
                OrderedByUserId   = (int)usrID,
                OrderDate         = DateTime.Now,
                OrderedForDate    = (DateTime)model.OrderedForDate,
                Price             = 0,
                State             = (int)OrderState.Created,
                ManagedByWaiterId = 1
            };

            var  minDate           = takeout.OrderedForDate.AddMinutes(-5);
            var  maxDate           = takeout.OrderedForDate.AddMinutes(5);
            var  beforeTake        = _context.TakeoutOrders.Where(d => DateTime.Compare(minDate, d.OrderedForDate) <= 0);
            var  afterTake         = beforeTake.Where(d => DateTime.Compare(maxDate, d.OrderedForDate) >= 0).Include(u => u.OrderedBy);
            var  overlaped         = afterTake.FirstOrDefault();
            bool overlap           = overlaped != null ? true : false;
            int  currentUserPoints = users.Where(l => l.UserId == (int)usrID).FirstOrDefault().LoyalityPoints;
            int  overlapUserPoints = overlap ? overlaped.OrderedBy.LoyalityPoints : 0;

            if (overlap)
            {
                if (overlapUserPoints >= currentUserPoints)
                {
                    takeout.State = (int)OrderState.Canceled;
                    _context.Add(takeout);
                    _context.SaveChanges();

                    foreach (var m in model.OrderedMeals)
                    {
                        var om = new OrderedMeal
                        {
                            InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                            MenuEntryId             = m.MenuEntryId,
                            Quantity = m.Quantity,
                            Comment  = m.Comment,
                            Price    = m.Price
                        };
                        _context.Add(om);
                    }
                }
                else
                {
                    overlaped.State = (int)OrderState.Canceled;
                    _context.Update(overlaped);
                    _context.Add(takeout);
                    _context.SaveChanges();

                    foreach (var m in model.OrderedMeals)
                    {
                        var om = new OrderedMeal
                        {
                            InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                            MenuEntryId             = m.MenuEntryId,
                            Quantity = m.Quantity,
                            Comment  = m.Comment,
                            Price    = m.Price
                        };
                        _context.Add(om);
                    }
                }
            }
            else // No overlap detected
            {
                _context.Add(takeout);
                _context.SaveChanges();

                foreach (var m in model.OrderedMeals)
                {
                    var om = new OrderedMeal
                    {
                        InTakeoutTakeoutOrderId = takeout.TakeoutOrderId,
                        MenuEntryId             = m.MenuEntryId,
                        Quantity = m.Quantity,
                        Comment  = m.Comment,
                        Price    = m.Price
                    };
                    _context.Add(om);
                }
            }



            _context.SaveChanges();
        }