Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }