public async Task <RegistrarNovaTaxaResponse> Handle(RegistrarNovaTaxaCommand request, CancellationToken cancellationToken) { var response = (RegistrarNovaTaxaResponse)request.Response; RegistrarNovaTaxaCommandValidator.ValidarCommand(request, response); if (response.IsFailure) { return(response); } var valorTaxaCobranca = ValorTaxaCobranca.Create(request.ValorTaxa); if (valorTaxaCobranca.IsFailure) { response.AddError(Errors.General.InvalidCommandArguments() .AddErroDetail(Errors.General.InvalidArgument("ValorTaxaInvalido", string.Join("|", valorTaxaCobranca.Messages)))); return(response); } ObterTipoSegmentoPorId(request, response); if (response.IsFailure) { return(response); } await VerficarSegmentoJaRegistrado(request, response); if (response.IsFailure) { return(response); } TaxaCobranca = new TaxaCobranca(Guid.NewGuid().ToString(), valorTaxaCobranca.Value, TipoSegmento); await Registrar(request, response); if (response.IsFailure) { return(response); } await Mediator.DispatchDomainEvents(TaxaCobranca); response.SetPayLoad(TaxaCobranca.ConverterEntidadeParaResponse()); return(response); }
public static void ValidarCommand(RegistrarNovaTaxaCommand request, RegistrarNovaTaxaResponse response) { var validator = new RegistrarNovaTaxaCommandValidator(); var resultadoValidacao = validator.Validate(request); if (!resultadoValidacao.IsValid) { var invalidCommandArguments = Errors.General.InvalidCommandArguments(); foreach (var erro in resultadoValidacao.Errors) { invalidCommandArguments.AddErroDetail(Errors.General.InvalidArgument(erro.ErrorCode, erro.ErrorMessage)); } response.AddError(invalidCommandArguments); } }