示例#1
0
        public IActionResult UpdateMenu(int id, [FromBody] PostMenuDTO menuDTO)
        {
            _requestLogService.SaveRequest(User.Identity.GetUserId(), "PUT", "api/v1/menus/{id}", "UpdateMenu");
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid fields provided, please double check the parameters"));
            }
            if (menuDTO.RestaurantId.Equals(null))
            {
                return(BadRequest("Menu is not related any Restaurant"));
            }
            if (!IsRestaurantUserOrAdmin(menuDTO.RestaurantId))
            {
                return(BadRequest("Menu can only be updated by admin or by restaurant user"));
            }

            var m = _menuService.GetMenuById(id);

            if (m == null)
            {
                return(NotFound());
            }

            if (!(User.IsInRole("premiumUser") && !User.IsInRole("admin")) &&
                menuDTO.PromotionId != null && menuDTO.PromotionId != m.PromotionId)
            {
                return(StatusCode(403, "Promotions to menu can only be added by admin or premium user"));
            }

            MenuDTO updatedMenu = _menuService.UpdateMenu(id, menuDTO);

            return(Ok(updatedMenu));
        }
示例#2
0
        public IActionResult PostMenu([FromBody] PostMenuDTO menuDTO)
        {
            _requestLogService.SaveRequest(User.Identity.GetUserId(), "POST", "api/v1/menus", "PostMenu");
            if (!ModelState.IsValid)
            {
                return(BadRequest("Invalid fields provided, please double check the parameters"));
            }
            if (menuDTO.RestaurantId.Equals(null))
            {
                return(BadRequest("Menu is not related any Restaurant"));
            }
            if (!IsRestaurantUserOrAdmin(menuDTO.RestaurantId))
            {
                return(BadRequest("New menu can only be added by admin or by restaurant user"));
            }

            int userMenus = _menuService.GetUserMenuCount(User.Identity.GetUserId());

            if (!User.IsInRole("premiumUser") && !User.IsInRole("admin"))
            {
                if (userMenus >= 1)
                {
                    return(StatusCode(403, "Regular user can only create 1 menu. Please sign up for premium services to add more."));
                }

                if (menuDTO.PromotionId != null)
                {
                    return(StatusCode(403, "New menu with promotion can only be added by admin or premium user"));
                }
            }
            var newMenu = _menuService.AddNewMenu(menuDTO, User.Identity.GetUserId());

            return(CreatedAtAction(nameof(GetMenu), new { id = newMenu.MenuId }, newMenu));
        }
示例#3
0
        public MenuDTO AddNewMenu(PostMenuDTO menuDTO, string userId)
        {
            var newMenu = _menuFactory.Create(menuDTO);

            newMenu.UserId = userId;
            _uow.Menus.Add(newMenu);
            _uow.SaveChanges();
            return(_menuFactory.Create(newMenu));
        }
示例#4
0
 public Menu Create(PostMenuDTO menuDTO)
 {
     return(new Menu
     {
         RestaurantId = menuDTO.RestaurantId,
         PromotionId = menuDTO.PromotionId,
         Name = menuDTO.Name,
         ActiveFrom = menuDTO.ActiveFrom,
         ActiveTo = menuDTO.ActiveTo,
         RepetitionInterval = menuDTO.RepetitionInterval
     });
 }
示例#5
0
        public MenuDTO UpdateMenu(int id, PostMenuDTO updatedMenuDTO)
        {
            if (_uow.Menus.Exists(id))
            {
                Menu menu = _uow.Menus.Find(id);
                menu.ActiveFrom         = updatedMenuDTO.ActiveFrom;
                menu.ActiveTo           = updatedMenuDTO.ActiveTo;
                menu.PromotionId        = updatedMenuDTO.PromotionId;
                menu.RepetitionInterval = updatedMenuDTO.RepetitionInterval;
                _uow.Menus.Update(menu);
                _uow.SaveChanges();
            }

            return(GetMenuById(id));
        }