aboutsummaryrefslogtreecommitdiff
path: root/Backend/Api/Api/Services/UserService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Backend/Api/Api/Services/UserService.cs')
-rw-r--r--Backend/Api/Api/Services/UserService.cs223
1 files changed, 212 insertions, 11 deletions
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs
index f616d99..ec67729 100644
--- a/Backend/Api/Api/Services/UserService.cs
+++ b/Backend/Api/Api/Services/UserService.cs
@@ -6,6 +6,7 @@ using System.Security.Claims;
using MimeKit;
using MailKit.Net.Smtp;
using DnsClient;
+using MongoDB.Bson;
namespace Api.Services
{
@@ -380,21 +381,60 @@ namespace Api.Services
return tosend;
}
- public async Task<Boolean> AddFollower(string userId,string followerId)
+ public async Task<Boolean> updateUserFollowerFollowingCount(List<string> followers,List <string> followings,string userId)
{
- User u = await _users.Find(user => user._id==userId).FirstOrDefaultAsync();
- User f = await _users.Find(user => user._id == followerId).FirstOrDefaultAsync();
+ User u = await _users.Find(user => user._id == userId).FirstOrDefaultAsync();
+ if(u!= null)
+ {
+ u.followersCount = followers.Count();
+ u.followingCount = followings.Count();
+ return true;
+ }
+ return false;
+ }
- if (userId != null && followerId!=null)
+ public async Task<Boolean> AddFollower(string followerId)
+ {
+
+ string id = null;
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ id = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+
+ if (followerId == id)
{
- if (u.followers == null)
- u.followers = new List<string>();
- u.followers.Add(followerId);
- if (f.following == null)
- f.following = new List<string>();
- f.following.Add(userId);
- _users.ReplaceOne(user=>user._id==userId, u);
+ return false;
+ }
+ User f = await _users.Find(user => user._id == followerId).FirstOrDefaultAsync();
+ User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+
+ if (id != null && followerId!=null)
+ {
+ if (f.followers == null)
+ {
+ f.followers = new List<string>();
+ f.followersCount = 0;
+ }
+ f.followers.Add(id);
+ f.followersCount =f.followers.Count();
+
_users.ReplaceOne(user => user._id == followerId, f);
+
+ if (u.following == null)
+ {
+ u.following = new List<string>();
+ u.followingCount = 0;
+ }
+ u.following.Add(followerId);
+ u.followingCount =u.following.Count();
+
+ _users.ReplaceOne(user=>user._id==id, u);
+
+
+ // updateUserFollowerFollowingCount(u.followers, u.following, u._id);
+ //updateUserFollowerFollowingCount(f.followers, f.following, f._id);
+
return true;
}
@@ -419,15 +459,19 @@ namespace Api.Services
continue;
}
UserSend follower = new UserSend();
+ follower.creationDate = utemp.creationDate;
+ follower.name = utemp.name;
follower.pfp = utemp.pfp;
follower.username = utemp.username;
follower.email = utemp.username;
+ follower.following = utemp.following;
follower.followers = utemp.followers;
follower._id = utemp._id;
followers.Add((UserSend)follower);
}
}
+ u.followersCount=followers.Count() ;
return followers;
}
return null;
@@ -450,18 +494,175 @@ namespace Api.Services
continue;
}
UserSend follower = new UserSend();
+ follower.creationDate = utemp.creationDate;
+ follower.name = utemp.name;
follower.pfp = utemp.pfp;
follower.username = utemp.username;
follower.email = utemp.username;
+ follower.following = utemp.following;
follower.followers = utemp.followers;
follower._id = utemp._id;
following.Add((UserSend)follower);
}
}
+ u.followersCount = following.Count();
return following;
}
return null;
}
+
+ public async Task<List<UserSend>> GetMyFollowings()
+ {
+ string id = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ id = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+ User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+ List<UserSend> myFollowings = new List<UserSend>();
+ if (u != null)
+ {
+
+ if (u.following != null && u.following.Count() > 0)
+ {
+ foreach (string userid in u.following)
+ {
+ User utemp = await _users.Find(user => user._id == userid).FirstOrDefaultAsync();
+ if (utemp == null)
+ {
+ continue;
+ }
+ UserSend following = new UserSend();
+ following.creationDate = utemp.creationDate;
+ following.name = utemp.name;
+ following.pfp = utemp.pfp;
+ following.username = utemp.username;
+ following.email = utemp.username;
+ following.following = utemp.following;
+ following.followers = utemp.followers;
+ following._id = utemp._id;
+
+ myFollowings.Add((UserSend)following);
+ }
+ }
+ return myFollowings;
+ }
+ return null;
+ }
+
+ public async Task<bool> CheckIfAlreadyFollow(string id)
+ {
+ string myId = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+
+ User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync();
+ User f = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+
+ if (u != null)
+ {
+
+ if (u.following != null && u.following.Count() > 0)
+ {
+ foreach (string userid in u.following)
+ {
+ User utemp = await _users.Find(user => user._id == userid).FirstOrDefaultAsync();
+ if (utemp == null)
+ {
+ continue;
+ }
+ if (utemp._id == f._id)
+ {
+ return true;
+ }
+ }
+ }
+
+ }
+
+ return false;
+ }
+
+ public async Task<bool> Unfollow(string id)
+ {
+ string myId = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+
+ User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync();
+ User f = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+
+ if (u != null)
+ {
+ if (u.following != null && f.followers!=null)
+ {
+ u.following.Remove(f._id);
+ u.followingCount=u.following.Count();
+ u.followersCount = u.followers.Count();
+
+
+ f.followers.Remove(u._id);
+ f.followersCount =f.followers.Count();
+ f.followingCount =f.following.Count();
+
+ _users.ReplaceOne(user => user._id == myId, u);
+ _users.ReplaceOne(user => user._id == id, f);
+
+ //updateUserFollowerFollowingCount(u.followers, u.following, u._id);
+ //updateUserFollowerFollowingCount(f.followers, f.following, f._id);
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ public async Task<List<UserSend>> GetMyFollowers()
+ {
+
+ string id = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ id = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+ User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+ List<UserSend> myfollowers = new List<UserSend>();
+
+ if (u!=null && u.followers != null && u.followers.Count() > 0)
+ {
+ foreach (string userid in u.followers)
+ {
+ User utemp = await _users.Find(user => user._id == userid).FirstOrDefaultAsync();
+ if (utemp == null)
+ {
+ continue;
+ }
+ UserSend follower = new UserSend();
+ follower.creationDate = utemp.creationDate;
+ follower.name = utemp.name;
+ follower.pfp = utemp.pfp;
+ follower.username = utemp.username;
+ follower.email = utemp.username;
+ follower.following = utemp.following;
+ follower.followers = utemp.followers;
+ follower._id = utemp._id;
+
+ myfollowers.Add((UserSend)follower);
+ }
+ return myfollowers;
+ }
+
+ return null;
+ }
}
+
}