public IActionResult Accept_Request(string id, string data)
        {
            string userid = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            try
            {
                Friend_Request existing_req = _context.Friend_Requests.First(a => a.Receiver == userid && a.Sender == id);

                Friend newfrn = new Friend
                {
                    Sender   = id,
                    Receiver = userid,
                };
                _context.Friends.Add(newfrn);
                _context.Friend_Requests.Remove(existing_req);
                _context.SaveChanges();

                return(Redirect(data));
            }

            catch (Exception e)
            {
                return(Content("what"));
            }
        }
        public async Task <IActionResult> Add_Friend(string id, string data)
        {
            string         userid = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            Friend_Request fr     = new Friend_Request();

            try
            {
                fr = _context.Friend_Requests.First(a => a.Sender == userid && a.Receiver == id || a.Sender == id && a.Receiver == userid);
                return(Redirect(data));
            }
            catch (Exception e)
            {
                try
                {
                    Friend frn = _context.Friends.First(a => a.Sender == id && a.Receiver == userid || a.Sender == userid && a.Receiver == id);
                    return(LocalRedirect(data));
                }
                catch
                {
                    Friend_Request nreq = new Friend_Request
                    {
                        Receiver = id,
                        Sender   = User.FindFirst(ClaimTypes.NameIdentifier).Value,
                    };
                    await _context.Friend_Requests.AddAsync(nreq);

                    await _context.SaveChangesAsync();

                    return(LocalRedirect(data));
                }
            }
        }
        public IActionResult Cancel_Request(string id, string data)
        {
            string userid = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            try
            {
                Friend_Request already_sent = _context.Friend_Requests.First(a => a.Sender == userid && a.Receiver == id);
                _context.Friend_Requests.Remove(already_sent);
                _context.SaveChanges();
                return(LocalRedirect(data));
            }
            catch (Exception e)
            {
                return(LocalRedirect(data));
            }
        }
        public IActionResult Deny_Request(string id, string data)
        {
            string userid = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            try {
                Friend_Request existing_req = _context.Friend_Requests.First(a => a.Receiver == userid && a.Sender == id);

                _context.Friend_Requests.Remove(existing_req);
                _context.SaveChanges();
                return(Redirect(data));
            }
            catch (Exception e)
            {
                return(NotFound());
            }
        }
        public IActionResult Search(string username)
        {
            string                 userid         = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            List <Profile>         searches       = _context.Profiles.Where(a => a.First_Name.Contains(username) || a.Last_Name.Contains(username)).ToList();
            List <SearchViewModel> search_results = new List <SearchViewModel>();

            foreach (Profile sr in searches)
            {
                SearchViewModel search_result = new SearchViewModel();
                search_result.First_Name  = sr.First_Name;
                search_result.Last_Name   = sr.Last_Name;
                search_result.Photo       = sr.profile_Picture_Url;
                search_result.User_Id     = sr.User_Id;
                search_result.search_data = username;
                Friend is_friend = new Friend();
                try
                {
                    is_friend = _context.Friends.First(a => a.Sender == sr.User_Id && a.Receiver == userid || a.Receiver == sr.User_Id && a.Sender == userid);
                    search_result.already_friend = true;
                }
                catch (Exception e)
                {
                    search_result.already_friend = false;
                    try
                    {
                        Friend_Request is_rqst_sent = _context.Friend_Requests.First(a => a.Sender == userid && a.Receiver == sr.User_Id);
                        search_result.rqst_sent = true;
                    }
                    catch (Exception b)
                    {
                        search_result.rqst_sent = false;
                        try
                        {
                            Friend_Request is_rqst_received = _context.Friend_Requests.First(a => a.Receiver == userid && a.Sender == sr.User_Id);
                            search_result.rqst_received = true;
                        }
                        catch (Exception c)
                        {
                            search_result.rqst_received = false;
                        }
                    }
                }
                search_results.Add(search_result);
            }
            ViewBag.userid = userid;
            return(View(search_results));
        }
        public static void AddFriendRequest(int currentUserId, int friendId)
        {
            var user = currentUserId;
               var friend = friendId;
               using (var database = new SuperAtletenEntities())
               {
               var newFriendRequest = new Friend_Request
               {
                   SenderID = user,
                   ReciverID = friend,
                   Status = null
               };

               database.Friend_Request.Add(newFriendRequest);
               database.SaveChanges();
               }
        }