/// <summary> /// Recorre la consulta asignando fecha subido/compartido, comentarios y numero de likes /// </summary> /// <param name="postListQueryResponses">Query para recorrer</param> /// <returns>Colección tipo PostResponse</returns> private async Task <ICollection <PostResponse> > ProcessPosts(IQueryable <PostListQueryResponse> postListQueryResponses) { ICollection <PostResponse> postResponses = new List <PostResponse>(); ImageUserProfile imageUserProfile = new ImageUserProfile(false); ILikeService likeService = new LikeService(); foreach (var post in postListQueryResponses) { PostResponse postResponse = new PostResponse(); // Post postResponse.IdPost = post.QueryPost.Id; postResponse.IdTypePost = post.QueryPost.IdTypePost; postResponse.Description = post.QueryPost.Description; // El post fue compartido entonces asignamos la fecha del share // Eso en caso de que consultemos los follows, este caso se presenta // cuando se consultas los post desde la pagina Home postResponse.Date = (post.QueryFollow != null) ? post.QueryPost.Date : ((post.QueryShare != null) ? post.QueryShare.Date : post.QueryPost.Date); if (post.QueryPost.PathFile != null) { if (post.QueryPost.IdTypePost.Equals(1)) { postResponse.File = await Image.GetFile(post.QueryPost.PathFile); } else if (post.QueryPost.IdTypePost.Equals(2)) { postResponse.File = await Image.GetFile(post.QueryPost.PathFile); } } // UserOwner postResponse.IdUserOwner = post.QueryUserOwner.Id; postResponse.NameUserOwner = post.QueryUserOwner.NameUser; postResponse.ImageProfileUserOwner = await imageUserProfile.GetImageUser(post.QueryUserOwner.Id, 'S'); // UserShare if (post.QueryShare != null) { postResponse.IdUserShare = post.QueryUserShare.Id; postResponse.NameUserShare = post.QueryUserShare.NameUser; postResponse.ImageProfileUserShare = await imageUserProfile.GetImageUser(post.QueryUserShare.Id, 'S'); postResponse.DateShare = post.QueryShare.Date; } postResponse.LikeUser = (post.QueryLike != null) ? true : false; // Numero de likes de la publicación postResponse.NumberLikes = likeService.GetNumLikes(post.QueryPost.Id); postResponses.Add(postResponse); } return(postResponses); }
/// <summary> /// Entrada del mentodo para llevar a cabo los procesos correspondientes para /// configurar la cuenta de usuario /// </summary> /// <param name="configUserRequest">Modelo requerido</param> /// <returns>Respuesta que confirma el exito del proceso</returns> public async Task <Response> UserConfig(ConfigUserRequest configUserRequest) { Response response = new Response(); // Validamos la imagen (extensión y tamaño) if (configUserRequest.ImageProfile != null) { if (!ValidateFile.ValidateExtensionImage(configUserRequest.ImageProfile.ContentType)) { string message = $"Formato de imagen no valido {configUserRequest.ImageProfile.ContentType}"; return(response.GetResponse(message, 0, false)); } if (!ValidateFile.ValidateSizeFile(configUserRequest.ImageProfile.Length, 5000000)) { string message = $"Máximo 5MB para el archivo: {ValidateFile.ConvertToMegabytes(configUserRequest.ImageProfile.Length)}"; return(response.GetResponse(message, 0, false)); } } using (var db = new ParchegramDBContext()) { try { var user = await db.User.Where(u => u.NameUser == configUserRequest.NameUserToken).FirstOrDefaultAsync(); if (user != null) { if (configUserRequest.NameUser != null) { user.NameUser = configUserRequest.NameUser; await db.SaveChangesAsync(); } if (configUserRequest.ImageProfile != null) { ImageUserProfile imageUserProfile = new ImageUserProfile(true); imageUserProfile.SaveProfileImage(configUserRequest.ImageProfile, user.NameUser); } } else { return(response.GetResponse("El usuario no existe", 0, false)); } return(response.GetResponse("Usuario actulizado correctamente", 1, false)); } catch (Exception e) { _logger.LogInformation(e.Message); return(response.GetResponse($"Error inesperado {e.Message}", 0, false)); } } }
/// <summary> /// Metodo que saca los datos de un usuario segun su id /// </summary> /// <param name="idUser">Id del usuario que se va a consultar</param> /// <param name="nameUser">Nombre del usuario que pidio los datos</param> /// <returns></returns> public async Task <Response> GetUserByNameUser(string nameUser, string nameUserSession) { Response response = new Response(); try { using (var db = new ParchegramDBContext()) { User userSession = await db.User.Where(u => u.NameUser.Equals(nameUserSession)).FirstOrDefaultAsync(); if (userSession == null) { return(response.GetResponse("El usuario que pidio la consulta no existe", 0, null)); } User userById = await db.User.Where(u => u.NameUser.Equals(nameUser)).FirstOrDefaultAsync(); if (userById == null) { return(response.GetResponse("El usuario que desea consultar no existe", 0, null)); } UserByIdResponse userByIdResponse = await(from user in db.User where user.NameUser.Equals(nameUser) select new UserByIdResponse { IdUser = user.Id, NameUser = user.NameUser, Email = user.Email, DateBirth = user.DateBirth }).FirstOrDefaultAsync(); userByIdResponse.Follow = await db.Follow.Where(f => f.IdUserFollower.Equals(userSession.Id) && f.IdUserFollowing.Equals(userById.Id)).AnyAsync(); ImageUserProfile imageUserProfile = new ImageUserProfile(false); userByIdResponse.ImageProfile = await imageUserProfile.GetImageUser(userById.Id, 'M'); return(response.GetResponse("Exito al obtener los datos del usuario", 1, userByIdResponse)); } } catch (Exception e) { _logger.LogInformation(e.Message); return(response.GetResponse($"Ha ocurrido un error inesperado al intentar obtener el usuario por Nombre de usuario {e.Message}", 0, null)); } }
/// <summary> /// Se procesa un solo post /// </summary> /// <param name="postListQueryResponse">En este caso ya devolvemos el post ya que se ejecuta la consulta</param> /// <param name="byId">Id del post que quereoms consultar</param> /// <returns></returns> private async Task <PostResponse> ProcessPostById(PostListQueryResponse postListQueryResponse) { try { PostResponse postResponse = new PostResponse(); ImageUserProfile imageUserProfile = new ImageUserProfile(false); ILikeService likeService = new LikeService(); // Post postResponse.IdPost = postListQueryResponse.QueryPost.Id; postResponse.IdTypePost = postListQueryResponse.QueryPost.IdTypePost; postResponse.Description = postListQueryResponse.QueryPost.Description; postResponse.Date = postListQueryResponse.QueryPost.Date; if (postListQueryResponse.QueryPost.PathFile != null) { postResponse.File = await Image.GetFile(postListQueryResponse.QueryPost.PathFile); } // UserOwner postResponse.IdUserOwner = postListQueryResponse.QueryUserOwner.Id; postResponse.NameUserOwner = postListQueryResponse.QueryUserOwner.NameUser; postResponse.ImageProfileUserOwner = await imageUserProfile.GetImageUser(postListQueryResponse.QueryUserOwner.Id, 'S'); postResponse.LikeUser = (postListQueryResponse.QueryLike != null) ? true : false; // Numero de likes de la publicación postResponse.NumberLikes = likeService.GetNumLikes(postListQueryResponse.QueryPost.Id); return(postResponse); } catch (Exception e) { _logger.LogInformation(e.Message); return(null); } }