using AutoMapper; using MediatR; using mws.backend.dotnet.application.Common; namespace mws.backend.dotnet.application.MasterData; public record UpdateMasterDataCommand(Guid Id, SaveMasterDataRequest Request) : IRequest; public class UpdateMasterDataHandler(IUnitOfWork uow, IMapper mapper) : IRequestHandler { public async Task Handle(UpdateMasterDataCommand command, CancellationToken ct) { var existing = await uow.MasterData.GetByIdAsync(command.Id, ct) ?? throw new NotFoundException("Master data entry not found"); var updated = await MasterDataValidation.ValidateAsync(uow, command.Request, command.Id, ct); existing.Group = updated.Group; existing.Label = updated.Label; existing.Value = updated.Value; existing.SortOrder = updated.SortOrder; existing.IsActive = updated.IsActive; existing.UpdatedAt = DateTime.UtcNow; await uow.SaveChangesAsync(ct); return mapper.Map(existing); } }