public IActionResult Details(int?id)
 {
     if (id != null && id > 0)
     {
         PubItems Item = _context.GetPubItem((int)id);
         if (Item != null)
         {
             UserAccessRank userAccessRank = UserAccessRank.Customer;
             var            Session        = HttpContext.Session.GetString("PubSession"); //user must be logged in to view orders
             if (Session != null)
             {
                 PubSessions pubSession = _context.GetPubSession(Session); //get session info
                 if (pubSession != null)                                   //session exists
                 {
                     if (pubSession.UserId > 0)                            //if a user is logged in...
                     {
                         PubUsers pubUser = _context.GetPubUser(pubSession.UserId);
                         if (pubUser != null) //if user exists
                         {
                             userAccessRank = pubUser.UserAccessRank;
                         }
                     }
                 }
             }
             if (Item.ItemOnSale || userAccessRank == UserAccessRank.Admin)
             {
                 ViewBag.UserAccessRank = userAccessRank; //get access rank as admins will be able be able to press a button to go to edit item page.
                 ViewBag.Item           = Item;
                 return(View(new AddOrderItemViewModel()));
             }
         }
     }
     return(RedirectToAction("Index"));
 }
        public IActionResult Index(string ItemName, ItemTypes?ItemType, bool?ItemOnSale, int?PageNumber)    //as this is the default view, only show items on sale
        {
            UserAccessRank userAccessRank = UserAccessRank.Customer;
            var            Session        = HttpContext.Session.GetString("PubSession"); //user must be logged in to view orders

            if (Session != null)
            {
                PubSessions pubSession = _context.GetPubSession(Session); //get session info
                if (pubSession != null)                                   //session exists
                {
                    if (pubSession.UserId > 0)                            //if a user is logged in...
                    {
                        PubUsers pubUser = _context.GetPubUser(pubSession.UserId);
                        if (pubUser != null) //if user exists
                        {
                            userAccessRank = pubUser.UserAccessRank;
                        }
                    }
                }
            }
            ViewBag.UserAccessRank = userAccessRank;
            PubItemsViewModel model;

            if (userAccessRank == UserAccessRank.Admin) //if admin then admin can specify if items are on sale or not.
            {
                if (ItemType == null)
                {
                    model = _context.GetPubItems(ItemName, ItemOnSale ?? true, PageNumber ?? 0); //true - get only items on sale
                }
                else
                {
                    model = _context.GetPubItems(ItemName, ItemOnSale ?? true, PageNumber ?? 0, (ItemTypes)ItemType); //true - get only items on sale
                }

                if (model != null)
                {
                    ViewBag.PubItemsViewModel = model;
                }
            }
            else //if not admin items will always be on sale
            {
                if (ItemType == null)
                {
                    model = _context.GetPubItems(ItemName, true, PageNumber ?? 0); //true - get only items on sale
                }
                else
                {
                    model = _context.GetPubItems(ItemName, true, PageNumber ?? 0, (ItemTypes)ItemType); //true - get only items on sale
                }

                if (model != null)
                {
                    ViewBag.PubItemsViewModel = model;
                }
            }

            TempData.TryGetValue("ToastMessage", out object data);
            if (data != null)
            {
                ViewBag.Toast = JsonSerializer.Deserialize <ToastAlertViewModel>(data as string);
            }
            return(View(new FilterItemsViewModel()
            {
                ItemName = ItemName, ItemOnSale = ItemOnSale ?? true, ItemType = ItemType ?? null, PageNumber = PageNumber ?? 0
            }));
        }