public async Task <ActionResult <PostSelectDto> > Craete(PostDto postDto, CancellationToken cancellationToken)
        {
            #region Old

            //var model = new Post
            //{

            //    Title = postDto.Title,
            //    Description = postDto.Description,
            //    CategoryId = postDto.CategoryId,
            //    AuthorId = postDto.AuthorId
            //};

            //var model = AutoMapper.Mapper.Map<Post>(postDto);

            var model = postDto.ToEntity();

            await _repository.AddAsync(model, cancellationToken);


            //await _repository.LoadReferenceAsync(model, p => p.Category, cancellationToken);
            //await _repository.LoadReferenceAsync(model, p => p.Author, cancellationToken);

            //var modelDto = await _repository.TableNoTracking.Include(p => p.Category).
            //    Include(c => c.Author).SingleOrDefaultAsync(d => d.Id == model.Id, cancellationToken);


            //var Result = new PostDto
            //{

            //    Id = model.Id,
            //    Title = model.Title,
            //    Description = model.Description,
            //    CategoryId = model.CategoryId,
            //    AuthorId = model.AuthorId,
            //    CategoryName = model.Category.Name,
            //    AuthorFullName = model.Author.FullName


            //};
            //var Result = AutoMapper.Mapper.Map<PostDto>(modelDto);
            var Result = await _repository.TableNoTracking.ProjectTo <PostSelectDto>().SingleOrDefaultAsync(postdto => postdto.Id == model.Id, cancellationToken);


            //var resultDto = await _repository.TableNoTracking.Select(p => new PostDto
            //{
            //    Id = p.Id,
            //    Title = p.Title,
            //    Description = p.Description,
            //    CategoryId = p.CategoryId,
            //    AuthorId = p.AuthorId,
            //    AuthorFullName = p.Author.FullName,
            //    CategoryName = p.Category.Name
            //}).SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);


            return(Result);

            #endregion
        }
        public async Task <ApiResult <PostDto> > Update(Guid id, PostDto dto, CancellationToken cancellationToken)
        {
            var model = await _repository.GetByIdAsync(cancellationToken, id);

            //Mapper.Map(dto, model);
            model = dto.ToEntity(model);

            #region old code
            //model.Title = dto.Title;
            //model.Description = dto.Description;
            //model.CategoryId = dto.CategoryId;
            //model.AuthorId = dto.AuthorId;
            #endregion

            await _repository.UpdateAsync(model, cancellationToken);

            #region old code
            //var resultDto = await _repository.TableNoTracking.Select(p => new PostDto
            //{
            //    Id = p.Id,
            //    Title = p.Title,
            //    Description = p.Description,
            //    CategoryId = p.CategoryId,
            //    AuthorId = p.AuthorId,
            //    AuthorFullName = p.Author.FullName,
            //    CategoryName = p.Category.Name
            //}).SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);
            #endregion

            var resultDto = await _repository.TableNoTracking.ProjectTo <PostDto>().SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);

            return(resultDto);
        }
Пример #3
0
        public async Task <ActionResult> Post(PostDto postDto)
        {
            //Create a new Post with mapped properties from PostDto
            var post = postDto.ToEntity();

            await _applicationDbContext.Posts.AddAsync(post);

            await _applicationDbContext.SaveChangesAsync();

            return(Ok());
        }
Пример #4
0
        public async Task <ApiResult <PostSelectDto> > Create(PostDto dto, CancellationToken cancellationToken)
        {
            //var model = Mapper.Map<Post>(dto);
            var model = dto.ToEntity(_mapper);

            #region old code
            //var model = new Post
            //{
            //    Title = dto.Title,
            //    Description = dto.Description,
            //    CategoryId = dto.CategoryId,
            //    AuthorId = dto.AuthorId
            //};
            #endregion

            await _repository.AddAsync(model, cancellationToken);

            #region old code
            //await _repository.LoadReferenceAsync(model, p => p.Category, cancellationToken);
            //await _repository.LoadReferenceAsync(model, p => p.Author, cancellationToken);
            //model = await _repository.TableNoTracking
            //    .Include(p => p.Category)
            //    .Include(p =>p.Author)
            //    .SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);
            //var resultDto = new PostDto
            //{
            //    Id = model.Id,
            //    Title = model.Title,
            //    Description = model.Description,
            //    CategoryId = model.CategoryId,
            //    AuthorId = model.AuthorId,
            //    AuthorName = model.Author.FullName,
            //    CategoryName = model.Category.Name
            //};


            //var resultDto = await _repository.TableNoTracking.Select(p => new PostDto
            //{
            //    Id = p.Id,
            //    Title = p.Title,
            //    Description = p.Description,
            //    CategoryId = p.CategoryId,
            //    AuthorId = p.AuthorId,
            //    AuthorFullName = p.Author.FullName,
            //    CategoryName = p.Category.Name
            //}).SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);
            #endregion

            var resultDto = await _repository.TableNoTracking.ProjectTo <PostSelectDto>(_mapper.ConfigurationProvider)
                            .SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);

            return(resultDto);
        }
Пример #5
0
        public async Task <ActionResult> Put(long id, PostDto postDto)
        {
            var post = await _applicationDbContext.Posts.FindAsync(id);

            //Change properties values of a finded Post by id, from PostDto
            var updatePost = postDto.ToEntity(post);

            _applicationDbContext.Posts.Update(updatePost);
            await _applicationDbContext.SaveChangesAsync();

            return(Ok());
        }
Пример #6
0
        public async Task <ApiResult <PostSelectDto> > Update(Guid id, PostDto dto, CancellationToken cancellationToken)
        {
            //var postDto = new PostDto();
            //Create
            //var post = postDto.ToEntity(); // DTO => Entity
            //Update
            //var updatePost = postDto.ToEntity(post); // DTO => Entity (an exist)
            //GetById
            //var postDto = PostDto.FromEntity(model); // Entity => DTO


            var model = await _repository.GetByIdAsync(cancellationToken, id);

            //Mapper.Map(dto, model);
            model = dto.ToEntity(_mapper, model);

            #region old code
            //model.Title = dto.Title;
            //model.Description = dto.Description;
            //model.CategoryId = dto.CategoryId;
            //model.AuthorId = dto.AuthorId;
            #endregion

            await _repository.UpdateAsync(model, cancellationToken);

            #region old code
            //var resultDto = await _repository.TableNoTracking.Select(p => new PostDto
            //{
            //    Id = p.Id,
            //    Title = p.Title,
            //    Description = p.Description,
            //    CategoryId = p.CategoryId,
            //    AuthorId = p.AuthorId,
            //    AuthorFullName = p.Author.FullName,
            //    CategoryName = p.Category.Name
            //}).SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);
            #endregion

            var resultDto = await _repository.TableNoTracking.ProjectTo <PostSelectDto>(_mapper.ConfigurationProvider)
                            .SingleOrDefaultAsync(p => p.Id == model.Id, cancellationToken);

            return(resultDto);
        }