Esempio n. 1
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
            });
        }
Esempio n. 2
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
            });
        }
Esempio n. 3
0
        /// <summary>
        /// Edits a given post
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> UpdatePostAsync(ActualRequest actualRequest)
        {
            Request          request     = actualRequest.Request;
            PostShortVersion updatedPost = JsonSerializer.Deserialize <PostShortVersion>(request.Argument.ToString());
            bool             result      = await postRepo.EditPostAsync(updatedPost);

            Request responseRequest = new Request
            {
                ActionType = ActionType.POST_EDIT.ToString(),
                Argument   = JsonSerializer.Serialize(result)
            };

            if (!result)
            {
                return new ActualRequest {
                           Request = responseRequest,
                           Images  = null
                }
            }
            ;

            if (actualRequest.Images != null && actualRequest.Images.Any())
            {
                ImagesUtil.WriteImageToPath(actualRequest.Images[0], $"{FILE_PATH}/Posts", $"/{updatedPost.Id}.jpg");
            }
            return(new ActualRequest {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 4
0
        /// <summary>
        /// Deletes a post with a given id
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> DeletePostAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     postId  = Convert.ToInt32(request.Argument.ToString());

            Console.WriteLine("Deleting post with id " + postId);
            bool response = await postRepo.DeletePostAsync(postId);

            if (response)
            {
                ImagesUtil.DeleteFile($"{FILE_PATH}/Posts", $"{postId}.jpg");
            }

            Request responseRequest = new Request
            {
                ActionType = ActionType.POST_DELETE.ToString(),
                Argument   = JsonSerializer.Serialize(response)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 5
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
            });
        }
Esempio n. 6
0
        /// <summary>
        /// Persists a given message to the database and its corresponding notification
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> AddMessageAsync(ActualRequest actualRequest)
        {
            Request             request = actualRequest.Request;
            MessageSocketsModel message = JsonSerializer.Deserialize <MessageSocketsModel>(request.Argument.ToString());
            List <int>          ints    = await chatRepo.AddMessageAsync(message);

            int     messageId       = ints[0];
            Request requestResponse = new Request
            {
                ActionType = ActionType.MESSAGE_CREATE.ToString(),
                Argument   = JsonSerializer.Serialize(ints)
            };

            if (messageId > 0)
            {
                if (message.HasImage && actualRequest.Images != null)
                {
                    try {
                        ImagesUtil.WriteImageToPath(actualRequest.Images[0], $"{FILE_PATH}/Messages", $"/{messageId}.jpg");
                    }
                    catch (Exception e) {
                        Console.WriteLine("Could not add image to created message " + messageId);
                    }
                }
            }

            return(new ActualRequest
            {
                Request = requestResponse,
                Images = null
            });
        }
Esempio n. 7
0
        /// <summary>
        /// Returns a list with recent messages between 2 given users
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetConversationForUsers(ActualRequest actualRequest)
        {
            List <int> integers = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <MessageSocketsModel> messages = chatRepo.GetConversationForUsers(integers[0], integers[1], integers[2]);
            Request response = new Request
            {
                ActionType = ActionType.MESSAGE_GET_CONVERSATION.ToString(),
                Argument   = JsonSerializer.Serialize(messages)
            };
            List <byte[]> messageImages = new List <byte[]>();

            if (messages != null && messages.Count > 0)
            {
                foreach (var message in messages)
                {
                    if (message.HasImage)
                    {
                        try {
                            var readImageFile = File.ReadAllBytes($"{FILE_PATH}/Messages/{message.Id}.jpg");
                            messageImages.Add(readImageFile);
                        }
                        catch (Exception e) {
                            Console.WriteLine("No picture found for message " + message.Id);
                        }
                    }
                }
            }
            return(new ActualRequest
            {
                Request = response,
                Images = messageImages
            });
        }
Esempio n. 8
0
        /// <summary>
        /// Persists a given post to the database
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> AddPostAsync(ActualRequest actualRequest)
        {
            Request          request = actualRequest.Request;
            PostShortVersion post    = JsonSerializer.Deserialize <PostShortVersion>(request.Argument.ToString());

            post.HasImage = actualRequest.Images != null;
            Console.WriteLine("Post Sockets adding post " + post.Title);
            int result = await postRepo.AddPostAsync(post);

            Request responseRequest = new Request
            {
                ActionType = ActionType.POST_CREATE.ToString(),
                Argument   = JsonSerializer.Serialize(result)
            };

            if (result > 0)
            {
                if (post.HasImage)
                {
                    try {
                        ImagesUtil.WriteImageToPath(actualRequest.Images[0], $"{FILE_PATH}/Posts", $"/{result}.jpg");
                    }
                    catch (Exception e) {
                        Console.WriteLine("Could not add image to created post " + result);
                    }
                }
            }
            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 9
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
            });
        }
Esempio n. 10
0
        public async Task <ActualRequest> HandleClientRequest(ActualRequest actualRequest)
        {
            switch (actualRequest.Request.ActionType)
            {
            case "DIET_CREATE":
                return(await AddDietAsync(actualRequest));

            case "DIET_GET_BY_ID":
                return(await GetDietByIdAsync(actualRequest));

            case "DIET_GET_PUBLIC":
                return(GetPublicDiets(actualRequest));

            case "DIET_GET_PRIVATE":
                return(GetPrivateDietsForUser(actualRequest));

            case "DIET_EDIT":
                return(await EditDietAsync(actualRequest));

            case "DIET_DELETE":
                return(await DeleteDietAsync(actualRequest));

            case "DIET_ADD_MEAL":
                return(await AddMealToDietAsync(actualRequest));

            case "DIET_EDIT_MEAL":
                return(await EditMealInDietAsync(actualRequest));

            case "DIET_DELETE_MEAL":
                return(await DeleteMealFromDietAsync(actualRequest));

            default:
                return(null);
            }
        }
Esempio n. 11
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
            });
        }
Esempio n. 12
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
            });
        }
Esempio n. 13
0
        /// <summary>
        /// Deletes a user with a given id
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> DeleteUserAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     userId  = Convert.ToInt32(request.Argument.ToString());

            Console.WriteLine("Deleting user with id " + userId);
            List <int> postIdsForUser = userRepo.GetPostIdsForUser(userId);
            bool       response       = await userRepo.DeleteUserAsync(userId);

            if (response)
            {
                ImagesUtil.DeleteUserFolder($"{FILE_PATH}/Users/{userId}");
                foreach (var postId in postIdsForUser)
                {
                    ImagesUtil.DeleteFile($"{FILE_PATH}/Posts", $"{postId}.jpg");
                }
            }

            Request responseRequest = new Request
            {
                ActionType = ActionType.USER_DELETE.ToString(),
                Argument   = JsonSerializer.Serialize(response)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 14
0
        /// <summary>
        /// Creates a new user action and its corresponding notification, if any
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> PostUserActionAsync(ActualRequest actualRequest)
        {
            Request            request            = actualRequest.Request;
            ModelActionSockets modelActionSockets =
                JsonSerializer.Deserialize <ModelActionSockets>(request.Argument.ToString());

            Console.WriteLine("Posting user action " + modelActionSockets.ActionType);
            int notificationId;

            if (modelActionSockets.ActionType.Equals("USER_FRIEND_REMOVE"))
            {
                notificationId = await userRepo.RemoveFriendshipAsync(modelActionSockets);
            }
            else if (modelActionSockets.ActionType.Equals("USER_RATE_PAGE"))
            {
                notificationId = await userRepo.PostPageRatingAsync(modelActionSockets);
            }
            else
            {
                notificationId = await userRepo.PostUserActionAsync(modelActionSockets);
            }

            Request responseRequest = new Request
            {
                ActionType = modelActionSockets.ActionType,
                Argument   = JsonSerializer.Serialize(notificationId)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 15
0
        public void should_be_able_to_valid_request()
        {
            var          builder = new MockedHttpServerBuilder();
            const string result  = " a \"c\" b ";

            var actualRequest = ActualRequest.ToRequest();

            builder.WhenPost(string.Format("/test"))
            .WithRequest(r => actualRequest = r)
            .RespondContent(HttpStatusCode.OK, new StringContent(result));

            using (builder.Build("http://localhost:1122"))
            {
                using (var httpClient = new HttpClient())
                {
                    var requestBody = new { Field = "a", Field2 = "b" };
                    var request     = new HttpRequestMessage(HttpMethod.Post, "http://localhost:1122/test")
                    {
                        Content = new StringContent(JsonConvert.SerializeObject(requestBody))
                    };

                    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var response = httpClient.SendAsync(request).Result;
                    Assert.Equal(result, response.Content.ReadAsStringAsync().Result); // raw string
                    Assert.Equal("a", actualRequest.RequestBody.Field);
                    Assert.Equal("b", actualRequest.RequestBody.Field2);
                }
            }
        }
Esempio n. 16
0
        public async Task <ActualRequest> HandleClientRequest(ActualRequest actualRequest)
        {
            switch (actualRequest.Request.ActionType)
            {
            case "USER_REGISTER":
                return(await AddUserAsync(actualRequest));

            case "USER_LOGIN":
                return(await LoginAsync(actualRequest));

            case "USER_GET_BY_ID":
                return(await GetUserByIdAsync(actualRequest));

            case "USER_EDIT":
                return(await UpdateUserAsync(actualRequest));

            case "USER_DELETE":
                return(await DeleteUserAsync(actualRequest));

            case "USER_FRIEND_REQUEST_SEND":
            case "USER_FRIEND_REQUEST_RESPONSE":
            case "USER_FRIEND_REMOVE":
            case "USER_SHARE_TRAININGS":
            case "USER_SHARE_DIETS":
            case "USER_FOLLOW_PAGE":
            case "USER_RATE_PAGE":
            case "USER_REPORT":
                return(await PostUserActionAsync(actualRequest));

            case "USER_DELETE_NOTIFICATION":
                return(await DeleteNotificationAsync(actualRequest));

            case "USER_FILTER":
                return(GetUsersByFilter(actualRequest));

            case "USER_GET_GYMS":
                return(GetGymsByCity(actualRequest));

            case "USER_GET_NOTIFICATIONS":
                return(GetNotificationsForUser(actualRequest));

            case "USER_GET_FRIENDS":
                return(GetFriendsForUser(actualRequest));

            case "USER_INCREMENT_SCORE":
                return(await IncrementUserScoreAsync(actualRequest));

            case "USER_GET_ONLINE_FRIENDS":
                return(GetOnlineFriendsForUser(actualRequest));

            case "USER_LOGOUTORIN":
                return(LogoutUser(actualRequest));

            case "USER_GET_SV_BY_ID":
                return(GetUserShortVersionById(actualRequest));

            default:
                return(null);
            }
        }
Esempio n. 17
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
            });
        }
Esempio n. 18
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
            });
        }
Esempio n. 19
0
        /// <summary>
        /// Edits a given user
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> UpdateUserAsync(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;

            UserSocketsModel user   = JsonSerializer.Deserialize <UserSocketsModel>(request.Argument.ToString());
            bool             result = await userRepo.EditUserAsync(user);

            Request requestResponse = new Request
            {
                ActionType = ActionType.USER_EDIT.ToString(),
                Argument   = JsonSerializer.Serialize(result)
            };

            if (actualRequest.Images != null && actualRequest.Images.Any())
            {
                if (user.Email != null)
                {
                    ImagesUtil.WriteImageToPath(actualRequest.Images[0], $"{FILE_PATH}/Users/{user.Id}", "/avatar.jpg");
                }
                else
                {
                    ImagesUtil.WriteImageToPath(actualRequest.Images[0], $"{FILE_PATH}/Users/{user.Id}",
                                                "/background.jpg");
                }
            }

            return(new ActualRequest
            {
                Request = requestResponse,
                Images = null
            });
        }
Esempio n. 20
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
            });
        }
Esempio n. 21
0
        /// <summary>
        /// Retrieves the users whose username starts with the given filter string, if any
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetUsersByFilter(ActualRequest actualRequest)
        {
            string filterString = actualRequest.Request.Argument.ToString();
            List <SearchBarUser> filteredUsers = userRepo.GetUsersByFilter(filterString);
            Request responseRequest            = new Request
            {
                ActionType = ActionType.USER_FILTER.ToString(),
                Argument   = JsonSerializer.Serialize(filteredUsers)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 22
0
        /// <summary>
        /// Gets a list with all the notifications 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 GetNotificationsForUser(ActualRequest actualRequest)
        {
            int userId = Convert.ToInt32(actualRequest.Request.Argument.ToString());
            List <NotificationSockets> notifications = userRepo.GetNotificationsForUser(userId);
            Request response = new Request
            {
                ActionType = ActionType.USER_GET_NOTIFICATIONS.ToString(),
                Argument   = JsonSerializer.Serialize(notifications)
            };

            return(new ActualRequest
            {
                Request = response,
                Images = null
            });
        }
Esempio n. 23
0
        /// <summary>
        /// Increments a given user's score by a given amount
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> IncrementUserScoreAsync(ActualRequest actualRequest)
        {
            List <int> integers = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            bool       response = await userRepo.IncrementUserScoreAsync(integers[0], integers[1]);

            Request responseRequest = new Request
            {
                ActionType = ActionType.USER_INCREMENT_SCORE.ToString(),
                Argument   = JsonSerializer.Serialize(response)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 24
0
        /// <summary>
        /// Returns the total number of entries of a given model
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private async Task <ActualRequest> GetNumber(ActualRequest actualRequest)
        {
            string modelType          = actualRequest.Request.Argument.ToString();
            int    totalNumberOfModel = await adminRepo.GetTotalNumberAsync(modelType);

            Request request = new Request
            {
                ActionType = ActionType.ADMIN_GET_NUMBER.ToString(),
                Argument   = JsonSerializer.Serialize(totalNumberOfModel)
            };

            return(new ActualRequest
            {
                Request = request,
                Images = null
            });
        }
Esempio n. 25
0
        /// <summary>
        /// Logs in our out a user and returns a list with his online friends ids, so that they can be notified
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest LogoutUser(ActualRequest actualRequest)
        {
            Request    request         = actualRequest.Request;
            List <int> userInts        = JsonSerializer.Deserialize <List <int> >(request.Argument.ToString());
            List <int> onlineFriendIds = userRepo.LogoutOrInUser(userInts[0], userInts[1] == 1);
            Request    response        = new Request
            {
                ActionType = ActionType.USER_LOGOUTORIN.ToString(),
                Argument   = JsonSerializer.Serialize(onlineFriendIds)
            };

            return(new ActualRequest
            {
                Request = response,
                Images = null
            });
        }
Esempio n. 26
0
        /// <summary>
        /// Retrieves a list of trainings in the current for a given user
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetTrainingsTodayForUser(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     userId  = Convert.ToInt32(request.Argument.ToString());
            List <TrainingSVWithTime> publicTrainings = trainingRepo.GetTrainingsTodayForUser(userId);
            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_GET_TODAY.ToString(),
                Argument   = JsonSerializer.Serialize(publicTrainings)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 27
0
        /// <summary>
        /// Retrieves a list of private trainings 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 GetPrivateTrainingsForUser(ActualRequest actualRequest)
        {
            Request    request = actualRequest.Request;
            List <int> ints    = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <TrainingShortVersion> privateTrainings = trainingRepo.GetPrivateTrainingsForUser(ints[0], ints[1]);
            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_GET_PRIVATE.ToString(),
                Argument   = JsonSerializer.Serialize(privateTrainings)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 28
0
        /// <summary>
        /// Retrieves a list with public trainings
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetPublicTrainings(ActualRequest actualRequest)
        {
            Request request = actualRequest.Request;
            int     offset  = Convert.ToInt32(request.Argument.ToString());
            List <TrainingSVWithOwner> publicTrainings = trainingRepo.GetPublicTrainings(offset);
            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_GET_PUBLIC.ToString(),
                Argument   = JsonSerializer.Serialize(publicTrainings)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 29
0
        /// <summary>
        /// Retrieves a list of trainings in a given week for a given user
        /// </summary>
        /// <param name="actualRequest">the client request to be handled</param>
        /// <returns>the response to the given request</returns>
        private ActualRequest GetTrainingsInWeekForUser(ActualRequest actualRequest)
        {
            Request    request = actualRequest.Request;
            List <int> ints    = JsonSerializer.Deserialize <List <int> >(actualRequest.Request.Argument.ToString());
            List <TrainingSVWithTime> trainingsInWeekForUser = trainingRepo.GetTrainingsInWeekForUser(ints[0], ints[1]);
            Request responseRequest = new Request
            {
                ActionType = ActionType.TRAINING_GET_WEEK.ToString(),
                Argument   = JsonSerializer.Serialize(trainingsInWeekForUser)
            };

            return(new ActualRequest
            {
                Request = responseRequest,
                Images = null
            });
        }
Esempio n. 30
0
        public async Task <ActualRequest> HandleClientRequest(ActualRequest actualRequest)
        {
            switch (actualRequest.Request.ActionType)
            {
            case "ADMIN_GET_USERS":
                return(await GetUsers(actualRequest));

            case "ADMIN_GET_POSTS":
                return(await GetPosts(actualRequest));

            case "ADMIN_GET_NUMBER":
                return(await GetNumber(actualRequest));

            default:
                return(null);
            }
        }