public async Task <IActionResult> FollowUser(string id) { FollowedUser u = new FollowedUser(); u.UserToFollow = id; u.FollowingUser = User.FindFirst(ClaimTypes.NameIdentifier).Value; _context.FollowedUsers.Add(u); await _context.SaveChangesAsync(); return(RedirectToAction("Index")); }
public Task AddFollowerToUser(string user, string userToFollow) { if (!this.FollowedUsers.Any(_ => _.Followed == userToFollow && _.User == user)) { var follower = new FollowedUser { User = user, Followed = userToFollow }; this.FollowedUsers.Add(follower); } return(Task.CompletedTask); }
public FollowedUser FollowUser([FromBody] UserIds userIds) { string userId = userIds.userId; string followedUserId = userIds.followedUserId; GraphClientConnection graphClient = new GraphClientConnection(); FollowedUser followedUser = new FollowedUser(); if (graphClient == null) { StatusCode(500); return(null); } string matchQuery = "(user:User{id:'" + userId + "'})-[follow:FOLLOW]->(followedUser:User{id:'" + followedUserId + "'})"; var followedUserQuery = graphClient.client.Cypher .Match(matchQuery) .Return((followedUser) => new { FollowedUser = followedUser.As <FollowedUser>(), }) .Results; if (followedUserQuery.Count() == 1) // relation between nodes exist already, so, you need to delete that relation { graphClient.client.Cypher .Match(matchQuery) .Delete("follow") .ExecuteWithoutResults(); //204 return(null); } var newFollowerQuery = graphClient.client.Cypher .Match("(user:User{id:'" + userId + "'}),(followedUser:User{id:'" + followedUserId + "'})") .Create("(user)-[:FOLLOW]->(followedUser)") .Return((followedUser) => new { FollowedUser = followedUser.As <FollowedUser>(), }) .Results; followedUser.id = newFollowerQuery.ToList()[0].FollowedUser.id; followedUser.name = newFollowerQuery.ToList()[0].FollowedUser.name; followedUser.age = newFollowerQuery.ToList()[0].FollowedUser.age; followedUser.gender = newFollowerQuery.ToList()[0].FollowedUser.gender; return(followedUser); }