Example #1
0
 public HttpResponseMessage GetBTCValue()
 {
     try
     {
         var priece = BinanceHelper.getBTCMarketValue().price;
         return(Request.CreateResponse(HttpStatusCode.OK, decimal.Round(priece, 2, MidpointRounding.AwayFromZero)));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
     }
 }
Example #2
0
 public HttpResponseMessage GetMarketPriece(string symbol)
 {
     try
     {
         var priece = BinanceHelper.getMarketValue(symbol.ToUpper()).price;
         return(Request.CreateResponse(HttpStatusCode.OK, priece));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
     }
 }
Example #3
0
 public HttpResponseMessage GetDollarValue()
 {
     try
     {
         var currencies = BinanceHelper.getDollarValue();
         var BRL        = currencies.data.Where(x => x.pair == "BRL_USD").FirstOrDefault();
         return(Request.CreateResponse(HttpStatusCode.OK, decimal.Round(BRL.rate, 2, MidpointRounding.AwayFromZero)));
     }
     catch (Exception ex)
     {
         return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
     }
 }
Example #4
0
        public MyJsonResult validateLotSize(int id, decimal qtd)
        {
            var chamada = _ChamadasRepo.GetWith_Symbol_and_Filter(id);
            var obj     = new FilterLotSize()
            {
                isValid = true,
                msg     = ""
            };

            string FilterError;

            if (!BinanceHelper.IsValidateLotSizeFIlter(out FilterError, chamada, qtd))
            {
                obj.isValid = false;
                obj.msg     = FilterError;
                return(new MyJsonResult(obj, JsonRequestBehavior.AllowGet));
            }
            return(new MyJsonResult(obj, JsonRequestBehavior.AllowGet));
        }
Example #5
0
        public MyJsonResult getPriece(string symbol)
        {
            var price = BinanceHelper.getMarketValue(symbol.ToUpper()).price;

            return(new MyJsonResult(price, JsonRequestBehavior.AllowGet));
        }
        public HttpResponseMessage Post([FromBody] CreateChamadaViewModel ViewModel)
        {
            try
            {
                if (ViewModel == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotAcceptable, "Campos Inválidos", "text/plain"));
                }
                if (ModelState.IsValid)
                {
                    #region Binance
                    var    userId         = int.Parse(Helper.GetJWTPayloadValue(Request, "id"));
                    var    user           = _UserRepo.GetById(userId);
                    var    chamada        = _ChamadasRepo.GetWith_Symbol_and_Filter(ViewModel.id);
                    var    ordemType      = BinanceHelper.getEntradaOrderType(chamada);
                    string BinanceOrderID = "";
                    if (!BinanceHelper.ValidateFilterPrice(chamada.Symbol.filters.Where(x => x.filterType == "PRICE_FILTER").FirstOrDefault(), ViewModel.qtd))
                    {
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, new BinanceErrors {
                            code = 0, motivo = "Quantidade Inválida"
                        }));
                    }

                    do
                    {
                        BinanceOrderID = Helper.GenerateRandomOcoOrderID(10);
                    } while (_OrdemRepo.IsValidOrderID(BinanceOrderID));

                    HttpResponseMessage BinanceResult = BinanceRestApi.SendOrdemEntrada(user.BinanceAPIKey, user.BinanceAPISecret, ordemType, chamada.Symbol.symbol, ViewModel.qtd, chamada.PrecoEntrada, chamada.RangeEntrada, BinanceOrderID);
                    #endregion
                    if (BinanceResult.IsSuccessStatusCode)
                    {
                        var ordem = new Ordem()
                        {
                            DataCadastro     = DateTime.UtcNow,
                            DataExecucao     = null,
                            Quantidade       = (decimal)ViewModel.qtd,
                            Chamada_Id       = ViewModel.id,
                            Usuario_Id       = user.Id,
                            OrdemStatus_Id   = 1,
                            TipoOrdem_Id     = 1,
                            BinanceStatus_Id = 1,
                            OrderID          = BinanceOrderID
                        };
                        Logs.LogOrdem(user.Id + " (" + user.Email + ") => " + DateTime.UtcNow + " => Type (Aceitar Chamada Sucesso) ChamadaID => " + chamada.Id);
                        _OrdemRepo.Add(ordem);
                        var objanonimo = new
                        {
                            Id           = ordem.Id,
                            TipoOrdem    = 1,
                            Status_id    = ordem.OrdemStatus_Id,
                            DataCadastro = ordem.DataCadastro,
                            Quantidade   = ordem.Quantidade.ToString("N8"),
                            Chamada_Id   = ordem.Chamada_Id,
                            Symbol       = chamada.Symbol.symbol,
                            Descricao    = "Aguardando Entrada",
                            PrecoEntrada = chamada.PrecoEntrada.ToString("N8"),
                            PrecoGain    = chamada.PrecoGain.ToString("N8"),
                            PrecoLoss    = chamada.PrecoLoss.ToString("N8"),
                            RangeEntrada = chamada.RangeEntrada.ToString("N8"),
                            observacao   = chamada.Observacao
                        };
                        //necessario porque o kra pode estar logado no app e na web ao mesmo tempo e tentar enviar nos dois
                        _signalContext.Clients.User(userId.ToString()).RemoverChamada(chamada.Id);
                        _signalContext.Clients.User("admin").AddPosicionado(chamada.Id);
                        return(Request.CreateResponse(HttpStatusCode.OK, objanonimo));
                    }
                    else
                    {
                        var BinanceerrorObj = Helper.GetBinanceErrorObj(BinanceResult);
                        Logs.LogOrdem(user.Id + " (" + user.Email + ") => Type (Aceitar Chamada Erro) ChamadaID => " + chamada.Id + " code => " + BinanceerrorObj.code + " motivo => " + BinanceerrorObj.msg);
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, BinanceerrorObj));
                    }
                }
                var modelstateError = ModelStateErrors.DisplayModelStateError(ModelState);
                return(Request.CreateResponse(HttpStatusCode.NotAcceptable, modelstateError, "text/plain"));
            }
            catch (Exception ex)
            {
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }