using ChapterX.Domain.Repositories; using MediatR; using Microsoft.Extensions.Logging; namespace ChapterX.Application.Chapter.Commands { public class UpdateHandler : IRequestHandler { private readonly IChapterRepository _chapterRepository; private readonly ILogger _logger; public UpdateHandler(IChapterRepository chapterRepository, ILogger logger) { _chapterRepository = chapterRepository; _logger = logger; } public async Task Handle(UpdateRequest request, CancellationToken cancellationToken) { var chapter = await _chapterRepository.GetByIdAsync(request.Id, cancellationToken); if (chapter is null) return new UpdateResponse(false); chapter.Number = request.Number; chapter.Name = request.Name; chapter.Title = request.Title; chapter.Content = request.Content; chapter.WordCount = request.WordCount; chapter.UpdatedAt = DateTime.UtcNow; await _chapterRepository.UpdateAsync(chapter, cancellationToken); return new UpdateResponse(true); } } }