using AutoMapper; using MediatR; using mws.backend.dotnet.application.Audit; using mws.backend.dotnet.application.Common; namespace mws.backend.dotnet.application.MasterData; public record CreateMasterDataCommand(SaveMasterDataRequest Request) : IRequest, IAuditableRequest { public string Action => "MasterData.Create"; public string EntityType => "MasterData"; public string? EntityName => Request.Label; } public class CreateMasterDataHandler(IUnitOfWork uow, IMapper mapper) : IRequestHandler { public async Task Handle(CreateMasterDataCommand command, CancellationToken ct) { var entry = await MasterDataValidation.ValidateAsync(uow, command.Request, null, ct); var now = DateTime.UtcNow; entry.Id = Guid.NewGuid(); entry.CreatedAt = now; entry.UpdatedAt = now; uow.MasterData.Add(entry); await uow.SaveChangesAsync(ct); return mapper.Map(entry); } }