예제 #1
0
        /// <summary>
        /// Retrieves a user short version instance with the given user id
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetUserShortVersionById(ActualRequest actualRequest)
        {
            Request          request  = actualRequest.Request;
            int              userId   = Convert.ToInt32(request.Argument.ToString());
            UserShortVersion user     = userRepo.GetUserShortVersionById(userId);
            Request          response = new Request
            {
                ActionType = ActionType.USER_GET_SV_BY_ID.ToString(),
                Argument   = JsonSerializer.Serialize(user)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (user != null)
            {
                try {
                    var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.UserId}/avatar.jpg");
                    userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                }
                catch (Exception e) {
                    Console.WriteLine("No avatar found for user " + user.UserId);
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #2
0
        /// <summary>
        /// Returns a list with all the gyms in a given city
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetGymsByCity(ActualRequest actualRequest)
        {
            string city = actualRequest.Request.Argument.ToString();
            List <UserShortVersion> users = userRepo.GetAllGymsInCity(city);
            Request response = new Request
            {
                ActionType = ActionType.USER_GET_GYMS.ToString(),
                Argument   = JsonSerializer.Serialize(users)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (users != null && users.Count > 0)
            {
                foreach (var user in users)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + user.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #3
0
        /// <summary>
        /// Gets a list with all the online friends belonging to a given user
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetOnlineFriendsForUser(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     userId  = Convert.ToInt32(request.Argument.ToString());
            List <UserShortVersion> onlineFriends = userRepo.GetOnlineFriendsForUser(userId);
            Request response = new Request
            {
                ActionType = ActionType.USER_GET_ONLINE_FRIENDS.ToString(),
                Argument   = JsonSerializer.Serialize(onlineFriends)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (onlineFriends != null && onlineFriends.Count > 0)
            {
                foreach (var friend in onlineFriends)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{friend.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + friend.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #4
0
        /// <summary>
        /// Retrieves a list of the target user's friends, or common friends with the sender
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetFriendsForUser(ActualRequest actualRequest)
        {
            List <int> integers = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <UserShortVersionWithStatus> friends = userRepo.GetFriendsForUser(integers[0], integers[1], integers[2]);
            Request response = new Request
            {
                ActionType = ActionType.USER_GET_FRIENDS.ToString(),
                Argument   = JsonSerializer.Serialize(friends)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (friends != null && friends.Count > 0)
            {
                foreach (var friend in friends)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{friend.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + friend.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #5
0
        /// <summary>
        /// Gets a list of the most reported users
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> GetUsers(ActualRequest actualRequest)
        {
            List <int> paginationInts     = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <UserShortVersion> users = await adminRepo.GetAdminUsersAsync(paginationInts[0], paginationInts[1]);

            Request request = new Request
            {
                ActionType = ActionType.ADMIN_GET_USERS.ToString(),
                Argument   = JsonSerializer.Serialize(users)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (users != null && users.Count > 0)
            {
                foreach (var user in users)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 50, 50));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + user.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = request,
                Images = userAvatars
            });
        }
예제 #6
0
        /// <summary>
        /// Returns a list with all the comments belonging to a given post, in reverse chronological order
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> GetAllCommentsForPostAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     postId  = Convert.ToInt32(request.Argument.ToString());
            List <CommentSockets> comments = await postRepo.GetAllCommentsForPost(postId);

            Request response = new Request
            {
                ActionType = ActionType.POST_GET_COMMENTS.ToString(),
                Argument   = JsonSerializer.Serialize(comments)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (comments != null && comments.Count > 0)
            {
                foreach (var comment in comments)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{comment.Owner.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user ");
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #7
0
        /// <summary>
        /// Returns a list with all the users who reacted to a given post, in alphabetical order
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetAllLikesForPostAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     postId  = Convert.ToInt32(request.Argument.ToString());
            List <UserShortVersion> users = postRepo.GetAllLikesForPost(postId);
            Request response = new Request
            {
                ActionType = ActionType.POST_GET_LIKES.ToString(),
                Argument   = JsonSerializer.Serialize(users)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (users != null && users.Count > 0)
            {
                foreach (var user in users)
                {
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + user.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #8
0
        /// <summary>
        /// Retrieves a post with its owner, by id and with the sender status regarding it
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> GetPostByIdAsync(ActualRequest actualRequest)
        {
            Request          request = actualRequest.Request;
            List <int>       ints    = JsonSerializer.Deserialize <List <int> >(request.Argument.ToString());
            PostShortVersion post    = await postRepo.GetPostByIdAsync(ints[0], ints[1]);

            Request responseRequest = new Request
            {
                ActionType = ActionType.POST_GET_BY_ID.ToString(),
                Argument   = JsonSerializer.Serialize(post)
            };
            List <byte[]> images = new List <byte[]>();

            if (post != null)
            {
                var readOwnerAvatar = File.ReadAllBytes($"{FILE_PATH}/Users/{post.Owner.UserId}/avatar.jpg");
                images.Add(ImagesUtil.ResizeImage(readOwnerAvatar, 20, 20));

                if (post.HasImage)
                {
                    var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Posts/{post.Id}.jpg");
                    images.Add(readAvatarFile);
                }
            }
            return(new ActualRequest
            {
                Request = responseRequest,
                Images = images
            });
        }
예제 #9
0
        /// <summary>
        /// Retrieves the last messages for a user with his friends/following gyms for unit testing
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetLastMessagesForUser(ActualRequest actualRequest)
        {
            List <int> integers = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <UserShortVersionWithMessage> users = chatRepo.GetLastMessagesForUser(integers[0], integers[1]);
            Request response = new Request
            {
                ActionType = ActionType.MESSAGE_GET_LATEST.ToString(),
                Argument   = JsonSerializer.Serialize(users)
            };
            List <byte[]> userAvatars = new List <byte[]>();

            if (users != null && users.Count > 0)
            {
                foreach (var user in users)
                {
                    if (user.Message.HasImage)
                    {
                        user.Message.Content = "<Image>";
                    }
                    try {
                        var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.UserId}/avatar.jpg");
                        userAvatars.Add(ImagesUtil.ResizeImage(readAvatarFile, 20, 20));
                    }
                    catch (Exception e) {
                        Console.WriteLine("No avatar found for user " + user.UserId);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = userAvatars
            });
        }
예제 #10
0
        /// <summary>
        /// Retrieves a user by id, and his status regarding the sender
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> GetUserByIdAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;

            Console.WriteLine("Get user argument " + request.Argument);
            List <int> userIds = JsonSerializer.Deserialize <List <int> >(request.Argument.ToString());

            Console.WriteLine("Retrieving user with id " + userIds[1] + " by " + userIds[0]);
            UserSocketsModel user = await userRepo.GetUserByIdAsync(userIds[0], userIds[1]);

            Request requestResponse = new Request
            {
                ActionType = ActionType.USER_GET_BY_ID.ToString(),
                Argument   = JsonSerializer.Serialize(user)
            };
            List <byte[]> images = new List <byte[]>();

            try
            {
                // /Images/users/{userId}/....
                // /Images/posts/{postId}/....
                var readAvatarFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.Id}/avatar.jpg");

                images.Add(ImagesUtil.ResizeImage(readAvatarFile, 200, 200));
                var readBackgroundFile = File.ReadAllBytes($"{FILE_PATH}/Users/{user.Id}/background.jpg");
                images.Add(readBackgroundFile);
            }
            catch (Exception e)
            {
                Console.WriteLine("No avatar found for user " + user.Id);
            }

            return(new ActualRequest
            {
                Request = requestResponse,
                Images = images
            });
        }