Esempio n. 1
0
        public async Task <IEnumerable <PostViewModel> > GetPostsAsync(PostPageFilters filters)
        {
            var posts = await _postQueryRepository.GetPagePostsAsync(new PostPageFiltersDto
            {
                PageNumber   = filters.PageNumber,
                ItemsPerPage = filters.ItemsPerPage
            });

            var viewModels = posts.Select(x => x.ToViewModel()).ToList();

            var url = new StringBuilder();

            url.Append(_httpContextAccessor.HttpContext?.Request?.Scheme);
            url.Append("://");
            url.Append(_httpContextAccessor.HttpContext?.Request?.Host.Value);
            url.Append("/");

            foreach (var post in viewModels)
            {
                SetImagesUrl(post.Images, url);
                post.CountLike = post.Likes.Count(x => x.IsLike) - post.Likes.Count(x => !x.IsLike);

                if (post.User.Image != null)
                {
                    post.User.Image.Url = $"{url}{post.User.Image.Path.Replace(@"\", "/")}";
                    continue;
                }

                post.User.Image ??= new ImageViewModel
                {
                    Url  = $"{url}{_globalSettings.Paths.DefaultPhotoProfilePath.Replace(@"\", "/")}",
                    Name = _globalSettings.Paths.DefaultPhotoName
                };

                post.Likes = post.Likes.Where(x => x.UserId == _userContext.UserId).ToList();
            }

            return(viewModels);
        }