/// <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)); } }
/// <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); }