using AutoMapper; using DbFirst.Application.Repositories; using DbFirst.Domain.Entities; using DbFirst.Domain; using MediatR; namespace DbFirst.Application.Catalogs.Commands; public class UpdateCatalogHandler : IRequestHandler { private readonly ICatalogRepository _repository; private readonly IMapper _mapper; public UpdateCatalogHandler(ICatalogRepository repository, IMapper mapper) { _repository = repository; _mapper = mapper; } public async Task Handle(UpdateCatalogCommand request, CancellationToken cancellationToken) { var existing = await _repository.GetByIdAsync(request.Id, cancellationToken); if (existing == null) { return null; } var entity = _mapper.Map(request.Dto); entity.Guid = request.Id; entity.CatTitle = request.Dto.UpdateProcedure == CatalogUpdateProcedure.Update ? existing.CatTitle : request.Dto.CatTitle; entity.AddedWho = existing.AddedWho; entity.AddedWhen = existing.AddedWhen; entity.ChangedWho = "system"; entity.ChangedWhen = DateTime.UtcNow; var procedure = request.Dto.UpdateProcedure; var updated = await _repository.UpdateAsync(request.Id, entity, procedure, cancellationToken); return updated == null ? null : _mapper.Map(updated); } }