Example #1
0
        /// <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);
        }
Example #2
0
        /// <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));
                }
            }
        }
Example #3
0
        /// <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));
            }
        }
Example #4
0
        /// <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);
            }
        }