public List <ProfileDisplayClass> loadLikedList(string APIKey, string username)
        {
            if (APIKey == this.APIKey)
            {
                User tempUser = new User();
                int  userID   = tempUser.getUserID(username);

                LikedList tempList = new LikedList();
                try
                {
                    string listOfLikes  = tempList.getLikes(userID).List;
                    int[]  likedUserIDs = Array.ConvertAll(listOfLikes.Split('|'), int.Parse);

                    List <ProfileDisplayClass> likedUserProfiles = new List <ProfileDisplayClass>();
                    foreach (int id in likedUserIDs)
                    {
                        ProfileDisplayClass profileDisplay = new ProfileDisplayClass();
                        likedUserProfiles.Add(profileDisplay.retreiveProfileDisplayFromDB(id));
                    }
                    return(likedUserProfiles);
                }
                catch (NullReferenceException)
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
        public IActionResult List(String Act, int ItemId, int CategoryId)
        {
            UserItems uI = new UserItems();

            uI.MyItems = _context.Items.OrderBy(x => x.ItemId).ToList();

            uI.TheName = HttpContext.Session.GetString("UserName");
            uI.TheRole = HttpContext.Session.GetString("UserRole");


            if (uI.TheName != null)
            {
                Item item = _context.Items.FirstOrDefault(x => x.ItemId == ItemId);

                int userId = Convert.ToInt32(HttpContext.Session.GetString("UserId"));

                bool has = _iLikedListRepository.HasList(userId, ItemId);

                if (Act == "Like")
                {
                    LikedList likedList = new LikedList
                    {
                        CategoryId = CategoryId,
                        ItemId     = ItemId,
                        likedItems = new List <Item> {
                            item
                        },
                        UserId = userId
                    };

                    _context.LikedItems.Add(likedList);
                    _context.SaveChanges();
                }

                if (Act == "Buy")
                {
                    BuyList BuyList = new BuyList
                    {
                        CategoryId   = CategoryId,
                        ItemId       = ItemId,
                        BuyItemLists = new List <Item> {
                            item
                        },
                        UserId = userId
                    };

                    _context.BuyListItems.Add(BuyList);
                    _context.SaveChanges();
                }
            }
            else
            {
                return(RedirectToAction("Login", "Main"));
            }



            return(View(uI));
        }
        public IActionResult BuyList(String Act, int ItemId, int CategoryId)
        {
            UserItems uI = new UserItems();

            uI.MyItems = _context.Items.OrderBy(x => x.ItemId).ToList();

            uI.TheName = HttpContext.Session.GetString("UserName");
            uI.TheRole = HttpContext.Session.GetString("UserRole");


            if (uI.TheName != null)
            {
                Item item = _context.Items.FirstOrDefault(x => x.ItemId == ItemId);

                int userId = Convert.ToInt32(HttpContext.Session.GetString("UserId"));

                bool has = _iBuyListReository.HasList(userId, ItemId);



                if (Act == "Like" && !has)
                {
                    LikedList LikedList = new LikedList
                    {
                        CategoryId = CategoryId,
                        ItemId     = ItemId,
                        likedItems = new List <Item> {
                            item
                        },
                        UserId = userId
                    };

                    _context.LikedItems.Add(LikedList);
                    _context.SaveChanges();
                }

                if (Act == "Delete")
                {
                    BuyList items = _context.BuyListItems.Where(x => x.UserId == userId && x.ItemId == ItemId).FirstOrDefault();


                    _context.BuyListItems.Remove(items);
                    _context.SaveChanges();
                }
            }



            return(RedirectToAction("BuyList"));
        }
        public int addLikes(string APIKey, string username, string likedProfileUsername)
        {
            if (APIKey == this.APIKey)
            {
                User tempUser    = new User();
                int  userID      = tempUser.getUserID(username);
                int  likedUserID = tempUser.getUserID(likedProfileUsername);

                LikedList tempLikes = new LikedList();
                return(tempLikes.addLikeToDB(userID, likedUserID));
            }
            else
            {
                return(0);
            }
        }
        public bool removeFromLikes(string APIKey, string username, string usernameToRemove)
        {
            if (APIKey == this.APIKey)
            {
                User tempUser       = new User();
                int  userID         = tempUser.getUserID(username);
                int  userIDToRemove = tempUser.getUserID(usernameToRemove);

                LikedList tempList     = new LikedList();
                string    likesList    = tempList.getLikes(userID).List;
                int[]     likedUserIDs = Array.ConvertAll(likesList.Split('|'), int.Parse);

                List <int> likes = new List <int>(likedUserIDs);
                string     newLikesList;
                if (likes.Count == 1)
                {
                    //newLikesList = null;

                    DBConnect  objDB  = new DBConnect();
                    SqlCommand objCmd = new SqlCommand();
                    objCmd.CommandType = CommandType.StoredProcedure;
                    objCmd.CommandText = "TP_RemoveLikes";
                    objCmd.Parameters.AddWithValue("@likedBy", userID);
                    int result = objDB.DoUpdateUsingCmdObj(objCmd);
                    if (result == 1)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    int index = likes.IndexOf(userIDToRemove);
                    likes.RemoveAt(index);
                    newLikesList = string.Join('|', likes);

                    DBConnect  objDB  = new DBConnect();
                    SqlCommand objCmd = new SqlCommand();
                    objCmd.CommandType = CommandType.StoredProcedure;
                    objCmd.CommandText = "TP_ModifyLikes";
                    objCmd.Parameters.AddWithValue("@liked", newLikesList);
                    objCmd.Parameters.AddWithValue("@likedBy", userID);
                    int result = objDB.DoUpdateUsingCmdObj(objCmd);

                    if (result == 1)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                return(false);
            }
        }