示例#1
0
        /// <summary>
        /// Devuelve un response con todos los post que ha subido o compartido segun su id
        /// </summary>
        /// <param name="idUser">Id del usuario del que vamos a consultar los post</param>
        /// <param name="page">Pagina </param>
        /// <param name="idTypePost"></param>
        /// <param name="nameUserSession"></param>
        /// <returns>Devuelve un response con todos los post que ha subido o compartido segun su id</returns>
        public async Task <Response> GetPostList(string nameUser, int page, int idTypePost, string nameUserSession)
        {
            Response response = new Response();

            try
            {
                using (var db = new ParchegramDBContext())
                {
                    User user = await db.User.Where(u => u.NameUser.Equals(nameUser)).FirstOrDefaultAsync();

                    if (user == null)
                    {
                        return(response.GetResponse("No existe un usuario con ese nombre", 0, null));
                    }
                    User userSession = await db.User.Where(u => u.NameUser.Equals(nameUserSession)).FirstOrDefaultAsync();

                    if (userSession == null)
                    {
                        return(response.GetResponse("No existe el usuario de la sesión", 0, null));
                    }

                    PostListPaginateResponse postListPaginateResponse = await GetPostListPaginateResponse(user.Id, page, db, idTypePost, userSession.Id);

                    return(response.GetResponse("Exito al consultar los post", 1, postListPaginateResponse));
                }
            }
            catch (Exception e)
            {
                _logger.LogInformation(e.Message);
                return(response.GetResponse($"Ha ocurrido un error inesperado {e.Message}", 0, null));
            }
        }
示例#2
0
        /// <summary>
        /// Recorre el resultado de la consulta y almacena cada uno en una lista
        /// con sus respectivo número de likes y comentarios limmite 2
        /// </summary>
        /// <param name="idUser">Id del usuario</param>
        /// <param name="db">Contexto de la db</param>
        /// <returns>Collection de PostResponse</returns>
        private async Task <PostListPaginateResponse> GetPostListPaginateResponse(int idUser, int page, ParchegramDBContext db, int idTypePost = 0, int idUserSession = 0)
        {
            IQueryable <PostListQueryResponse> queryPostResponses = null;

            if (idUserSession != 0)
            {
                queryPostResponses = GetPostsQueryResponses(idUser, db, idTypePost, idUserSession);
            }
            else
            {
                queryPostResponses = GetPostsQueryResponses(idUser, db);
            }
            ICollection <PostResponse> postResponsesCollection = await ProcessPosts(queryPostResponses);

            IOrderedEnumerable <PostResponse> sortedPostResponses = GetPostsOrder(postResponsesCollection);
            IImmutableList <PostResponse>     postResponses       = GetPostspaginate(sortedPostResponses, page);
            int totalRows = sortedPostResponses.Count();
            PostListPaginateResponse postListPaginateResponse = new PostListPaginateResponse(postResponses, totalRows);

            return(postListPaginateResponse);
        }