public PubItems GetPubItem(int ItemID) //get pub items - just the item name
        {
            var results = GetPubItemsResults.FromSqlRaw("EXEC Get_PubItem @ItemID",
                                                        new SqlParameter("@ItemID", ItemID)).ToList();

            if (results.Count() > 0)
            {
                return(ConvertItemResultsToPubItems(results.First()));
            }
            else
            {
                return(null);
            }
        }
        public PubItems GetRandomPubItem(ItemTypes Type, bool ItemOnSale) //get pub items - just the item name
        {
            var results = GetPubItemsResults.FromSqlRaw("EXEC Get_RandomPubItem @ItemOnSale,@ItemType",
                                                        new SqlParameter("@ItemOnSale", ItemOnSale),
                                                        new SqlParameter("@ItemType", Type.ToString())).ToList();

            if (results.Count() > 0)
            {
                return(ConvertItemResultsToPubItems(results.First()));
            }
            else
            {
                return(null); //no results returned - user ID dosen't exist in DB so give nothing.
            }
        }
        public PubItemsViewModel GetPubItems(string ItemName, Boolean ItemOnSale, int PageNumber) //get pub items - if on sale and name
        {
            SqlParameter @outputParam = new SqlParameter {
                ParameterName = "@outputParam", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output
            };

            var results = GetPubItemsResults.FromSqlRaw("EXEC @outputParam=Get_PubItems @ItemName, @ItemOnSale, @PageNumber, @ItemsPerPage",
                                                        outputParam,
                                                        new SqlParameter("@ItemName", (object)ItemName ?? DBNull.Value),
                                                        new SqlParameter("@PageNumber", PageNumber),
                                                        new SqlParameter("@ItemsPerPage", GlobalConstants.ItemsPerPage),
                                                        new SqlParameter("@ItemOnSale", ItemOnSale)).ToList();

            return(new PubItemsViewModel {
                PubItemsList = ConvertPubItemResultsToPubItems(results), RowCount = (int)@outputParam.Value
            });
        }
        public PubItemsViewModel GetPubItems(string ItemName, bool ItemOnSale, int PageNumber, ItemTypes TypeOfItem) //get pub items - item type, if on sale and name
        {
            SqlParameter @outputParam = new SqlParameter {
                ParameterName = "@outputParam", SqlDbType = SqlDbType.Int, Direction = ParameterDirection.Output
            };

            var results = GetPubItemsResults.FromSqlRaw("EXEC @outputParam=Get_PubItems @ItemName, @ItemOnSale, @PageNumber, @ItemsPerPage, @ItemType", //fetch pub items, output param returns the total number of results from the query
                                                        outputParam,
                                                        new SqlParameter("@ItemName", (object)ItemName ?? DBNull.Value),
                                                        new SqlParameter("@PageNumber", PageNumber),
                                                        new SqlParameter("@ItemsPerPage", GlobalConstants.ItemsPerPage),
                                                        new SqlParameter("@ItemOnSale", ItemOnSale),
                                                        new SqlParameter("@ItemType", TypeOfItem.ToString())).ToList();

            return(new PubItemsViewModel {
                PubItemsList = ConvertPubItemResultsToPubItems(results), RowCount = (int)@outputParam.Value
            });
        }