public async Task <ResponseResult> OperacaoAsync(OperacaoRequest operacao)
        {
            try
            {
                operacao.Validate();

                if (operacao.Notifications.Any())
                {
                    _response.AddNotifications(operacao.Notifications);
                    return(_response);
                }

                var entidade = new Operacao(operacao.IdTransaction, operacao.Valor, operacao.Operacao, operacao.DataHora);

                entidade.ObterTransacao();

                if (entidade.Notifications.Any())
                {
                    _response.AddNotifications(entidade.Notifications);
                    return(_response);
                }


                var transaction = await TransacaoAsync(entidade);

                _response.AddValue(new Data
                {
                    Transacao   = operacao.Operacao.ToString(),
                    IdTransacao = operacao.IdTransaction,
                    Mensagem    = $"Operação efutuada com sucesso em :{ operacao.DataHora.ToString()}",
                    Valor       = transaction
                });
            }
            catch (Exception exception)
            {
                _response.AddNotification(new Notification(nameof(OperacaoService), $"Falha na operação ocorreu uma exceção em :{ exception}"));
            }

            return(_response);
        }
        public ResponseResult Add(OperationProfitRequest operationProfitRequest)
        {
            var _response = new ResponseResult();

            try
            {
                operationProfitRequest.Validate();

                if (operationProfitRequest.Notifications.Any())
                {
                    _response.AddNotifications(operationProfitRequest.Notifications);
                    return(_response);
                }

                var value = 0.0m;
                if (operationProfitRequest.IsValid())
                {
                    value = Convert.ToDecimal(operationProfitRequest.BonusDistribuided.Remove(0, 3));
                }

                var entidade = new OperationProfit(value);
                _unitOfWork.Business.Add(_cacheConfig.Value.Key, entidade);

                _response.AddValue(new
                {
                    Status = "Cadastro realizado com sucesso"
                });
            }
            catch (ArgumentNullException ex) {
                _response.AddNotification(new Notification(nameof(BusinessApplication), $"Falha na operação {ex.Message}"));
                _logger.LogError(default(EventId), $"Found fails to {nameof(BusinessApplication)} in AddAsync{ex.Message} to {nameof(operationProfitRequest)}");
                throw;
            }
            catch (Exception ex)
            {
                _response.AddNotification(new Notification(nameof(BusinessApplication), $"Falha na operação {ex.Message}"));
                _logger.LogError(default(EventId), $"Found fails to {nameof(BusinessApplication)} in AddAsync{ex.Message} to {nameof(operationProfitRequest)}");
                throw;
            }

            return(_response);
        }
        public async Task <ResponseResult> OperacaoAsync(CriadoOperacaoEvento criadoOperacaoEventos)
        {
            criadoOperacaoEventos.Validate();

            if (criadoOperacaoEventos.Notifications.Any())
            {
                _response.AddNotifications(criadoOperacaoEventos.Notifications);
                return(_response);
            }

            string payload = $"=> {criadoOperacaoEventos.IdTransacao} Hora => {DateTime.Now}";

            try
            {
                var config = new ProducerConfig
                {
                    BootstrapServers = _options.Value.UrlBase
                };

                using (var producer = new ProducerBuilder <Null, string>(config).Build())
                {
                    var result = await producer.ProduceAsync(
                        _options.Value.Topic,
                        new Message <Null, string>
                    {
                        Value = ConvertPedidoToJson(criadoOperacaoEventos)
                    });

                    _response.AddValue($"Mensagem: {payload} | " +
                                       $"Status: { result.Status.ToString()}");
                }
            }
            catch (Exception ex)
            {
                _response.AddNotification(new Flunt.Notifications.Notification("OperacaoProducer", $"Exceção: {ex.GetType().FullName} | " + $"Mensagem: {ex.Message}"));
            }

            return(_response);
        }