Пример #1
0
        public EntOperacao Inserir(EntOperacao objOperacao, DbTransaction transaction, Database db)
        {
            DbCommand dbCommand = db.GetStoredProcCommand("STP_OperacaoInserir");

            dbCommand.CommandTimeout = BdConfig.CommmandTimeout;

            db.AddOutParameter(dbCommand, "@CDA_OPERACAO", DbType.Int32, objOperacao.IdOperacao);
            db.AddInParameter(dbCommand, "@TX_OPERACAO", DbType.String, objOperacao.Operacao);
            db.AddInParameter(dbCommand, "@DT_DATA_CRIACAO", DbType.DateTime, objOperacao.DataCriacao);
            db.AddInParameter(dbCommand, "@DT_DATA_INICIO_EXECUCAO", DbType.DateTime, DateUtils.ToDateObject(objOperacao.DataInicioExecucao));
            db.AddInParameter(dbCommand, "@DT_DATA_FIM_EXECUCAO", DbType.DateTime, DateUtils.ToDateObject(objOperacao.DataFimExecucao));
            db.AddInParameter(dbCommand, "@VALOR_REAIS", DbType.Decimal, objOperacao.ValorReais);
            db.AddInParameter(dbCommand, "@VALOR_DOLAR", DbType.Decimal, objOperacao.ValorDolar);
            db.AddInParameter(dbCommand, "@VALOR_BITCOIN", DbType.Decimal, objOperacao.ValorBitcoin);
            db.AddInParameter(dbCommand, "@CEA_CARTEIRA", DbType.Int32, IntUtils.ToIntNullProc(objOperacao.Carteira.IdCarteira));
            db.AddInParameter(dbCommand, "@FL_IS_VENDA", DbType.Boolean, objOperacao.IsVenda);
            db.AddInParameter(dbCommand, "@TAXA", DbType.Decimal, objOperacao.Taxa);
            db.AddInParameter(dbCommand, "@FL_ATIVO", DbType.Boolean, objOperacao.Ativo);

            db.ExecuteNonQuery(dbCommand, transaction);

            objOperacao.IdOperacao = ObjectUtils.ToInt(db.GetParameterValue(dbCommand, "@CDA_OPERACAO"));

            return(objOperacao);
        }
Пример #2
0
 public EntOperacao Remover(EntOperacao objOperacao, Int32 IdUsuario)
 {
     using (DbConnection connection = db.CreateConnection())
     {
         connection.Open();
         DbTransaction transaction = connection.BeginTransaction();
         try
         {
             objOperacao.Ativo = !objOperacao.Ativo;
             dalOperacao.Remover(objOperacao, transaction, db);
             SaveLog(IdUsuario, EntLog.LOG_REMOVER, "Operação", objOperacao.IdOperacao, objOperacao, transaction, db);
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             SaveLog(IdUsuario, EntLog.LOG_ERRO, "Operação", objOperacao.IdOperacao, objOperacao, ex.Message, db, connection);
             throw;
         }
         finally
         {
             connection.Close();
         }
     }
     return(objOperacao);
 }
Пример #3
0
        public EntOperacao ObterPorId(Int32 IdOperacao)
        {
            EntOperacao objOperacao = new EntOperacao();

            using (DbConnection connection = db.CreateConnection())
            {
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();
                try
                {
                    objOperacao = dalOperacao.ObterPorId(IdOperacao, transaction, db);
                    transaction.Commit();
                }
                catch
                {
                    transaction.Rollback();
                    throw;
                }
                finally
                {
                    connection.Close();
                }
            }
            return(objOperacao);
        }
Пример #4
0
        public void Remover(EntOperacao objOperacao, DbTransaction transaction, Database db)
        {
            DbCommand dbCommand = db.GetStoredProcCommand("STP_OperacaoRemover");

            dbCommand.CommandTimeout = BdConfig.CommmandTimeout;

            db.AddInParameter(dbCommand, "@CDA_OPERACAO", DbType.Int32, objOperacao.IdOperacao);
            db.AddInParameter(dbCommand, "@FL_ATIVO", DbType.Boolean, objOperacao.Ativo);

            db.ExecuteNonQuery(dbCommand, transaction);
        }
Пример #5
0
        private List <EntOperacao> Popular(DbDataReader dtrDados)
        {
            List <EntOperacao> listEntReturn = new List <EntOperacao>();
            EntOperacao        entReturn;

            try
            {
                while (dtrDados.Read())
                {
                    entReturn = new EntOperacao();

                    entReturn.IdOperacao                          = ObjectUtils.ToInt(dtrDados["CDA_OPERACAO"]);
                    entReturn.Operacao                            = ObjectUtils.ToString(dtrDados["TX_OPERACAO"]);
                    entReturn.DataCriacao                         = ObjectUtils.ToDate(dtrDados["DT_DATA_CRIACAO"]);
                    entReturn.DataInicioExecucao                  = ObjectUtils.ToDate(dtrDados["DT_DATA_INICIO_EXECUCAO"]);
                    entReturn.DataFimExecucao                     = ObjectUtils.ToDate(dtrDados["DT_DATA_FIM_EXECUCAO"]);
                    entReturn.ValorReais                          = ObjectUtils.ToDecimal(dtrDados["VALOR_REAIS"]);
                    entReturn.ValorDolar                          = ObjectUtils.ToDecimal(dtrDados["VALOR_DOLAR"]);
                    entReturn.ValorBitcoin                        = ObjectUtils.ToDecimal(dtrDados["VALOR_BITCOIN"]);
                    entReturn.Carteira.IdCarteira                 = ObjectUtils.ToInt(dtrDados["CEA_CARTEIRA"]);
                    entReturn.Carteira.Carteira                   = ObjectUtils.ToString(dtrDados["TX_CARTEIRA"]);
                    entReturn.Carteira.Usuario.IdUsuario          = ObjectUtils.ToInt(dtrDados["CEA_USUARIO"]);
                    entReturn.Carteira.Usuario.Usuario            = ObjectUtils.ToString(dtrDados["TX_USUARIO"]);
                    entReturn.Carteira.Moeda.IdMoeda              = ObjectUtils.ToInt(dtrDados["CEA_MOEDA"]);
                    entReturn.Carteira.Moeda.Moeda                = ObjectUtils.ToString(dtrDados["TX_MOEDA"]);
                    entReturn.Carteira.Moeda.Codigo               = ObjectUtils.ToString(dtrDados["TX_MOEDA_CODIGO"]);
                    entReturn.Carteira.Moeda.CasasDepoisDaVirgula = ObjectUtils.ToInt(dtrDados["NU_CASAS_APOS_VIRGULA"]);
                    entReturn.IsVenda = ObjectUtils.ToBoolean(dtrDados["FL_IS_VENDA"]);
                    entReturn.Taxa    = ObjectUtils.ToDecimal(dtrDados["TAXA"]);
                    entReturn.Ativo   = ObjectUtils.ToBoolean(dtrDados["FL_ATIVO"]);
                    listEntReturn.Add(entReturn);
                }

                dtrDados.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(listEntReturn);
        }
Пример #6
0
 public void Alterar(EntOperacao objOperacao, Int32 IdUsuario)
 {
     using (DbConnection connection = db.CreateConnection())
     {
         connection.Open();
         DbTransaction transaction = connection.BeginTransaction();
         try
         {
             dalOperacao.Alterar(objOperacao, transaction, db);
             SaveLog(IdUsuario, EntLog.LOG_EDITAR, "Operação", objOperacao.IdOperacao, objOperacao, transaction, db);
             transaction.Commit();
         }
         catch (Exception ex)
         {
             transaction.Rollback();
             SaveLog(IdUsuario, EntLog.LOG_ERRO, "Operação", objOperacao.IdOperacao, objOperacao, ex.Message, db, connection);
             throw;
         }
         finally
         {
             connection.Close();
         }
     }
 }
        private void CriaOrdemVenda(EntMoeda objMoeda, EntCarteira objCarteira, EntResumoDiario ultimoStatus)
        {
            try
            {
                Decimal valor = ultimoStatus.MelhorCompra;
                if (valor < ultimoStatus.MelhorVenda)
                {
                    valor = ultimoStatus.MelhorVenda;
                }
                if (valor < ultimoStatus.PrecoUltimaTransacao)
                {
                    valor = ultimoStatus.PrecoUltimaTransacao;
                }

                if (valor < (objMoeda.OperacaoCompraAberta.ValorBitcoin * StringUtils.ToDecimal("1,005")))
                {
                    Aviso(objMoeda.Codigo, "BITCOINER - ORDEM DE VENDA NÃO CRIADA - VALOR MENOR QUE COMPRA", "Não criada ordem de venda em " + DateUtils.ToStringCompleto(DateTime.Now) + "\n" + objMoeda.Codigo + "\nValor: US$ " + DecimalUtils.ToString_8(valor), false);
                    return;
                }

                Decimal quantidade = objCarteira.SaldoBitcoin;
                quantidade = DecimalUtils.ToDecimalRound(quantidade, objMoeda.CasasDepoisDaVirgula);

                if (StringUtils.ToBoolean(ConfigurationManager.AppSettings["teste"]))
                {
                    EntOperacao objOperacao = new EntOperacao();
                    objOperacao.Ativo              = true;
                    objOperacao.Carteira           = objCarteira;
                    objOperacao.DataCriacao        = DateTime.Now;
                    objOperacao.DataInicioExecucao = DateTime.Now;
                    objOperacao.IsVenda            = true;
                    objOperacao.Operacao           = new Random().Next(10000, 99999).ToString();
                    objOperacao.ValorBitcoin       = valor;
                    objOperacao.ValorDolar         = quantidade * valor;
                    objOperacao.ValorReais         = quantidade;
                    objOperacao = new BllOperacao().Inserir(objOperacao, EntUsuario.USUARIO_PADRAO);

                    objMoeda.OperacaoVendaAberta = objOperacao;
                    new BllMoeda().Alterar(objMoeda, EntUsuario.USUARIO_PADRAO);

                    Aviso(objMoeda.Codigo, "BITCOINER - ORDEM DE VENDA", "Criada ordem de venda em " + DateUtils.ToStringCompleto(DateTime.Now) + "\n" + objMoeda.Codigo + "\nValor: US$ " + DecimalUtils.ToString_8(valor) + " | Quantidade: " + DecimalUtils.ToString_8(quantidade));
                }
                else
                {
                    var result = client.Spot.Order.PlaceOrder(objMoeda.Codigo + EntMoeda.USDT, OrderSide.Sell, OrderType.Market, quantity: quantidade);

                    if (result.Success)
                    {
                        EntOperacao objOperacao = new EntOperacao();
                        objOperacao.Ativo              = true;
                        objOperacao.Carteira           = objCarteira;
                        objOperacao.DataCriacao        = DateTime.Now;
                        objOperacao.DataInicioExecucao = DateTime.Now;
                        objOperacao.IsVenda            = true;
                        objOperacao.Operacao           = result.Data.OrderId.ToString();
                        objOperacao.ValorBitcoin       = valor;
                        objOperacao.ValorDolar         = quantidade * valor;
                        objOperacao.ValorReais         = quantidade;
                        objOperacao = new BllOperacao().Inserir(objOperacao, EntUsuario.USUARIO_PADRAO);

                        objMoeda.OperacaoVendaAberta = objOperacao;
                        new BllMoeda().Alterar(objMoeda, EntUsuario.USUARIO_PADRAO);

                        Aviso(objMoeda.Codigo, "BITCOINER - ORDEM DE VENDA", "Criada ordem de venda em " + DateUtils.ToStringCompleto(DateTime.Now) + "\n" + objMoeda.Codigo + "\nValor: US$ " + DecimalUtils.ToString_8(valor) + " | Quantidade: " + DecimalUtils.ToString_8(quantidade));
                    }
                    else
                    {
                        Aviso(objMoeda.Codigo, "BITCOINER - ORDEM DE VENDA", "ERRO Criada ordem de venda em " + DateUtils.ToStringCompleto(DateTime.Now) + "\n" + objMoeda.Codigo + "\nValor: US$ " + DecimalUtils.ToString_8(valor) + " | Quantidade: " + DecimalUtils.ToString_8(quantidade) +
                              "\n\n" + result.Error.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                Aviso(objMoeda.Codigo, "BITCOINER - ERRO CRIAÇÃO ORDEM DE VENDA", "Houve um erro na criação de ordem de venda " + objMoeda.Codigo + " em " + DateUtils.ToStringCompleto(DateTime.Now) + "\n\n" + ex.Message + "\n\n" + ex.StackTrace);
            }
        }