예제 #1
0
        public static List <MenuForUserDTO> ToUserMenuDto(this List <Menu> model)
        {
            var resultList = new List <MenuForUserDTO>();

            foreach (var item in model)
            {
                var newMenuForUser = new MenuForUserDTO();
                newMenuForUser.Date              = item.Date;
                newMenuForUser.MenuId            = item.Id;
                newMenuForUser.Body              = item.Body;
                newMenuForUser.WithFirst         = item.PriceWithFirst;
                newMenuForUser.WithoutFirst      = item.PriceWithoutFirst;
                newMenuForUser.OrderWithFirst    = item.Order == null?0: item.Order[0].WithFirst ? 1 : 0;
                newMenuForUser.OrderWithoutFirst = item.Order != null? item.Order[0].WithoutFirst ? 1 : 0:0;
                newMenuForUser.Reviews           = new List <ReviewDTO>();
                if (item.Reviews != null)
                {
                    foreach (var item2 in item.Reviews)
                    {
                        var newReviews = new ReviewDTO();
                        newReviews.Body           = item2.Body;
                        newReviews.User           = new UserForReviewDTO();
                        newReviews.User.Id        = item2.UserId;
                        newReviews.User.FirstName = item2.User.FirstName;
                        newReviews.User.LastName  = item2.User.LastName;
                        newReviews.User.ImgType   = item2.User.ImgType;
                        newMenuForUser.Reviews.Add(newReviews);
                    }
                }
                newMenuForUser.Reviews.Add(new ReviewDTO());
                resultList.Add(newMenuForUser);
            }
            return(resultList);
        }
예제 #2
0
 public bool UpdateUserOrder(MenuForUserDTO model, int userId)
 {
     using (var work = new PechkaContext())
     {
         var orderForUpdate = work.Orders.FirstOrDefault(u => u.MenuId == model.MenuId && u.UserId == userId);
         orderForUpdate.WithFirst    = model.OrderWithFirst != 0;
         orderForUpdate.WithoutFirst = model.OrderWithoutFirst != 0;
         work.Orders.AddOrUpdate(orderForUpdate);
         work.SaveChanges();
         return(true);
     }
 }
예제 #3
0
        public ActionResult OrderNewOrEditing(MenuForUserDTO model)
        {
            var user = userService.GetUser(User.Identity.Name);
            var menu = menuService.GetMenu(model.MenuId);

            if (model.NewReview != null)
            {
                reviewService.AddNewReview(user.Id, model.MenuId, model.NewReview);
            }
            decimal money = user.LastScore.Money;
            var     order = orderService.GetUserOrderByDateAndUserId(menu.Date, user.Id);

            if (order == null && (model.OrderWithFirst != 0 && user.LastScore.Money - model.WithFirst > 0 || model.OrderWithoutFirst != 0 && user.LastScore.Money - model.WithoutFirst > 0))
            {
                var change = model.OrderWithFirst != 0 ? menu.PriceWithFirst : menu.PriceWithoutFirst;
                if (orderService.AddNewOrder(model, user.Id))
                {
                    var id = scoreService.ChangeScoreByUserId(user.Id, user.LastScore.Money - change);
                    userService.SetUserLastScore(user.Id, id.Value);
                }
            }

            else if (order != null && order.Menu.Date > DateTime.Now.AddHours(9) && (order.WithoutFirst != (model.OrderWithoutFirst != 0) || order.WithFirst != (model.OrderWithFirst != 0)))
            {
                if (order.WithoutFirst)
                {
                    money += menu.PriceWithoutFirst;
                }
                if (order.WithFirst)
                {
                    money += menu.PriceWithFirst;
                }
                if (model.OrderWithFirst != 0)
                {
                    money -= menu.PriceWithFirst;
                }
                if (model.OrderWithoutFirst != 0)
                {
                    money -= menu.PriceWithoutFirst;
                }
                if (money > 0)
                {
                    if (orderService.UpdateUserOrder(model, user.Id))
                    {
                        var newScoreId = scoreService.ChangeScoreByUserId(user.Id, money);
                        userService.SetUserLastScore(user.Id, newScoreId.Value);
                    }
                }
            }
            return(RedirectToAction("Index"));
        }
예제 #4
0
 public bool AddNewOrder(MenuForUserDTO model, int userId)
 {
     using (var work = new PechkaContext())
     {
         var orderToAdd = new Order();
         orderToAdd.UserId       = userId;
         orderToAdd.MenuId       = model.MenuId;
         orderToAdd.WithoutFirst = model.OrderWithoutFirst != 0;
         orderToAdd.WithFirst    = model.OrderWithFirst != 0;
         work.Orders.Add(orderToAdd);
         work.SaveChanges();
         return(true);
     }
 }