Ejemplo n.º 1
0
        /// <summary>
        /// لیست نظرات یک محصول جهت نمایش
        /// </summary>
        /// <param name="productId"></param>
        /// <param name="pager"></param>
        /// <returns></returns>
        public async Task <IEnumerable <CommentSelectDto> > GetCommentsAsync(long productId, Pager pager, CancellationToken cancellationToken)
        {
            List <CommentSelectDto> model = await _commentRepo.TableNoTracking
                                            .Where(x => x.ProductId == productId && x.ParentId == null)
                                            .OrderByDescending(c => c.InsertDate)
                                            .Skip((pager.CurrentPage - 1) * pager.PageSize)
                                            .Take(pager.PageSize)
                                            .Select(sx => new CommentSelectDto()
            {
                Id         = sx.Id,
                SenderName = sx.User.DisplayName ?? sx.User.UserName ?? "",
                InsertDate = sx.InsertDate,
                Title      = sx.Title,
                Content    = sx.Description,
                UserAvatar = sx.User.Avatar,
                ReplyCount = sx.Comments.Count
            }).ToListAsync(cancellationToken);

            DefaultLogo defultpictures = new DefaultLogo();

            if (model.Any(p => p.UserAvatar == null))
            {
                defultpictures = await _defaultLogoRepo.Table.FirstOrDefaultAsync(cancellationToken);
            }

            foreach (CommentSelectDto item in model)
            {
                item.UserAvatar = Url.ResolveServerUrl(_httpContextAccessor, VirtualPathUtility.ToAbsolute(item.UserAvatar ?? defultpictures.UserAvatarUrl ?? Url.DefaultUrl), false);
            }
            return(model);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// جزئیات نظر
        /// </summary>
        /// <param name="commentId"></param>
        /// <returns></returns>

        public async Task <CommentDetailDto> GetDetailsAsync(long commentId, CancellationToken cancellationToken)
        {
            CommentDetailDto model = await _commentRepo.TableNoTracking
                                     .Where(x => x.Id == commentId)
                                     .Select(sx => new CommentDetailDto()
            {
                Id         = sx.Id,
                SenderName = sx.User.DisplayName ?? sx.User.UserName ?? "",
                InsertDate = sx.InsertDate,
                Title      = sx.Title,
                Content    = sx.Description,
                UserAvatar = sx.User.Avatar,
                Replies    = sx.Comments.Select(p => new CommentDetailDto.RepliesCommentServiceModel()
                {
                    Id         = p.Id,
                    SenderName = p.User.DisplayName ?? p.User.UserName ?? "",
                    InsertDate = p.InsertDate,
                    Title      = p.Title,
                    Content    = p.Description,
                    UserAvatar = p.User.Avatar
                }).ToList()
            }).FirstOrDefaultAsync(cancellationToken);

            DefaultLogo defultpictures = await _defaultLogoRepo.Table.FirstOrDefaultAsync(cancellationToken);

            if (model != null)
            {
                model.UserAvatar = Url.ResolveServerUrl(_httpContextAccessor,
                                                        VirtualPathUtility
                                                        .ToAbsolute(model.UserAvatar ?? defultpictures.UserAvatarUrl ?? Url.DefaultUrl), false);

                if (model.Replies != null)
                {
                    foreach (CommentDetailDto.RepliesCommentServiceModel item in model.Replies)
                    {
                        item.UserAvatar = Url.ResolveServerUrl(_httpContextAccessor,
                                                               VirtualPathUtility
                                                               .ToAbsolute(item.UserAvatar ?? defultpictures.UserAvatarUrl ?? Url.DefaultUrl), false);
                    }
                }
            }

            return(model);
        }