public async Task <GetPostForEditOutput> GetForEdit(NullableIdDto <Guid> input)
        {
            var         output = new GetPostForEditOutput();
            PostEditDto editDto;

            if (input.Id.HasValue)
            {
                var entity = await _postRepository.GetAsync(input.Id.Value);

                editDto = ObjectMapper.Map <PostEditDto>(entity);
                var tagsList = await GetTagsOfPost(entity.Id);

                if (tagsList.Count > 0)
                {
                    editDto.TagIds = tagsList.Select(t => t.Id).ToList();
                }
            }
            else
            {
                editDto = new PostEditDto();
            }

            output.PostTypeTypeEnum = _enumExtensionsAppService.GetEntityDoubleStringKeyValueList <PostType>();

            output.Post = editDto;
            return(output);
        }
Example #2
0
        public async Task EditAsync(PostEditDto post)
        {
            var p = await _mongoRepository.FindByIdAsync(post.Id);

            p.Text = post.Text;
            await _mongoRepository.ReplaceOneAsync(p);
        }
        protected virtual async Task <Post> Update(PostEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新

            var entity = await UpdateByMakrdown(input);

            return(entity);
        }
        public async Task <ActionResult> Edit(Guid id, [FromBody] PostEditDto editedPost)
        {
            var command = new EditPostCommand(editedPost)
            {
                Id = id
            };
            await Mediator.Send(command);

            return(NoContent());
        }
        public EditPostCommandTest()
        {
            dbSetPost       = new Mock <DbSet <Post> >();
            context         = new Mock <IApplicationDbContext>();
            stringLocalizer = new Mock <IStringLocalizer <PostsResource> >();

            post = new Post {
                Id = id
            };
            postDto = new Faker <PostEditDto>("en")
                      .RuleFor(p => p.Body, f => f.Random.String(10))
                      .RuleFor(p => p.Id, f => f.PickRandomParam(id))
                      .Generate();
        }
Example #6
0
        public async Task <IActionResult> Edit(int id, PostEditDto postEditDto)
        {
            if (!ModelState.IsValid)
            {
                return(View(postEditDto));
            }

            if (await _postService.ExistsByIdAsync(id))
            {
                await _postService.UpdateAsync(id, postEditDto);
            }

            return(RedirectToAction(nameof(Index)));
        }
Example #7
0
        public ServiceResult <string> EditPost(PostEditDto model)
        {
            var serviceResult = new ServiceResult <string>(true);

            var entity = _context.Posts.FirstOrDefault(c => c.Id == model.Id);

            if (entity == null)
            {
                serviceResult.AddError("پستی با شناسه ارسالی یافت نشد");
            }

            #region validation
            if (string.IsNullOrEmpty(model.Title))
            {
                serviceResult.AddError("عنوان پست نمی تواند فاقد مقدار باشد");
            }
            if (!string.IsNullOrEmpty(model.Title) && model.Title.Length > 128)
            {
                serviceResult.AddError("تعداد کاراکترهای عنوان پست نمی تواند بیش از 128 کاراکتر باشد".ToPersianNumbers());
            }
            #endregion

            if (serviceResult.IsSuccess)
            {
                entity.Title = model.Title;

                if (!string.IsNullOrEmpty(model.PrimaryPicture))
                {
                    serviceResult.Data    = entity.PrimaryPicture;
                    entity.PrimaryPicture = model.PrimaryPicture;
                }


                entity.Description = model.Description;

                _context.Entry(entity).State = EntityState.Modified;
                if (_context.SaveChanges() == 0)
                {
                    serviceResult.AddError("در انجام عملیات خطایی رخ داد");
                }
            }

            return(serviceResult);
        }
        private async Task <Post> UpdateByMakrdown(PostEditDto input)
        {
            //TODO:更新前的逻辑判断,是否允许更新

            var entity = await _postRepository.GetAsync(input.Id.Value);

            input.Url = await RenameUrlIfItAlreadyExistAsync(input.Url, entity);

            //将input属性的值赋值到entity中
            ObjectMapper.Map(input, entity);

            await _postManager.UpdateAsync(entity);

            if (input.TagIds?.Count > 0)
            {
                await _tagManager.SaveTags(input.TagIds, entity);
            }
            return(entity);
        }
        protected virtual async Task <PostEditDto> Create(PostEditDto input)
        {
            input.Url = await RenameUrlIfItAlreadyExistAsync(input.Url);

            var entity = ObjectMapper.Map <Post>(input);

            //调用领域服务
            entity = await _postManager.CreateAsync(entity);

            //保存Tag标签内容

            if (input.TagIds != null && input.TagIds.Count > 0)
            {
                await _tagManager.SaveTags(input.TagIds, entity);
            }

            var dto = ObjectMapper.Map <PostEditDto>(entity);

            return(dto);
        }
Example #10
0
 public static void GetData(this Post post, PostEditDto data)
 {
     post.LangId      = data.LangId;
     post.Commenting  = data.Commenting;
     post.AltTitle    = data.AltTitle;
     post.Password    = data.Password;
     post.Summary     = data.Summary;
     post.OrderNumber = data.OrderNumber;
     post.Body        = data.Body;
     post.CategoryId  = data.CategoryId;
     post.CoverPhoto  = data.CoverPhoto;
     post.LayoutId    = data.LayoutId;
     post.ParentId    = data.ParentId;
     post.Title       = data.Title;
     post.Status      = data.Status;
     post.Slug        = !string.IsNullOrWhiteSpace(data.Slug)
         ? data.Slug.MakeSlug()
         : data.Title.MakeSlug();
     post.PublishDate = data.PublishDate;
 }
Example #11
0
        public async Task <Post> MakeAsync(PostEditDto model)
        {
            model.CheckArgumentIsNull();
            var post = await _postRepository.FindAsync(model.Id);

            post.GetData(model);
            post.ModifyDate     = _dateService.UtcNow();
            post.ModifierUserId = _userContext.UserId;

            if (post.Status == PostStatus.Published || post.Status == PostStatus.Planned)
            {
                post.PublishDate = model.PublishDate;
            }
            else
            {
                post.PublishDate = null;
            }

            return(await Task.FromResult(post));
        }
Example #12
0
		public async Task<ResultResponse<PostGetDto>> UpdatePostAsync(int postId, PostEditDto dto, int editorId)
		{
			try
			{
				var editor = await _usersRepository.GetAsync(editorId);
				if (editor == null)
				{
					return ResultResponse<PostGetDto>.GetBadResponse(StatusCode.NotFound, "Пользователь не найден");
				}

				var post = await _postsRepository.GetAsync(postId);
				if (post == null)
				{
					return ResultResponse<PostGetDto>.GetBadResponse(StatusCode.NotFound, "Не найден пост");
				}

				post.text = dto.Text;
				post.title = dto.Title;
				post.edited = DateTime.Now;
				post.editor_id = editor.id;

				var updated = await _postsRepository.UpdateAsync(post);
				if (updated == null)
				{
					return ResultResponse<PostGetDto>.GetBadResponse(StatusCode.InternalServerError, "Не удалось отредактировать пост");
				}

				var editedView = await _postsViewRepository.GetAsync(updated.id);
				var editedViewDto = _mapper.Map<PostGetDto>(editedView);

				return ResultResponse<PostGetDto>.GetSuccessResponse(editedViewDto);
			}
			catch (Exception ex)
			{
				_progressLogger.Error(ex, new { dto, editorId }, GetType().Name, nameof(UpdatePostAsync));
				return ResultResponse<PostGetDto>.GetInternalServerErrorResponse();
			}
		}
Example #13
0
 public async Task <ResultResponse <PostGetDto> > EditPost([FromRoute] int id, [FromBody] PostEditDto dto)
 {
     if (await IsInRole(Roles.Admin, Roles.Moderator))
     {
         if (dto == null || !ModelState.IsValid)
         {
             return(ResultResponse <PostGetDto> .GetBadResponse(BussinesLogic.Models.StatusCode.BadRequest));
         }
         return(await _postsService.UpdatePostAsync(id, dto, UserId.Value));
     }
     return(ResultResponse <PostGetDto> .GetBadResponse(BussinesLogic.Models.StatusCode.Forbidden));
 }
Example #14
0
 public EditPostCommand(PostEditDto request)
 {
     Id   = request.Id;
     Body = request.Body;
 }
Example #15
0
        public async Task <IActionResult> Edit(PostEditDto post)
        {
            await _postService.EditAsync(post);

            return(NoContent());
        }
Example #16
0
        public async Task UpdateAsync(PostEditDto model)
        {
            var entity = await _factory.MakeAsync(model);

            await _repository.UpdateAndSaveAsync(entity);
        }