예제 #1
0
        public bool Run(string TxName)
        {
            Request = new NewTransactionRequest();
            Request.param.txname = TxName;

            return(Run(Request));
        }
예제 #2
0
        public HttpResponseMessage Post([FromBody] NewTransactionRequest transactionRequest, string walletId)
        {
            // Desde el Identity, recupero el Id del usuario
            int userId = TokenService.GetIdClient(User.Identity as ClaimsIdentity);
            // Obtengo el wallet por Id o por nombre de moneda (shortcut)
            var wallet = _walletService.GetWalletByCoinNameOrWalletIdAndUser(walletId, userId);

            if (!ModelState.IsValid)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Campos Incorrectos"));
            }
            //Si no se encontro el wallet y el request usa el shortcut de nombre de moneda existente en CMC, creo un nuevo wallet
            if (wallet == null && CoinService.ExisteEnCoinMarketCap(walletId))
            {
                Coin moneda  = _coinService.GetCoinByName(walletId);
                User usuario = _userService.GetUserById(userId);
                wallet = _walletService.AddWallet(moneda, 0, usuario).Result;
            }

            if (wallet == null && walletId.All(c => Char.IsDigit(c)))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Id de wallet inexistente"));
            }
            if (wallet == null && !walletId.All(c => Char.IsDigit(c)))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound, "Tipo de moneda inexistente"));
            }

            var type               = transactionRequest.Type;
            var amount             = transactionRequest.Amount;
            var transactionService = _transactionService;

            try
            {
                if (type.ToLower() == "compra")
                {
                    return(Request.CreateResponse(HttpStatusCode.Created, new TransactionViewModel(transactionService.Buy(wallet.Id, amount))));
                }
                else if (type.ToLower() == "venta")
                {
                    return(Request.CreateResponse(HttpStatusCode.Created, new TransactionViewModel(transactionService.Sell(wallet.Id, amount))));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "La transaccion debe ser del tipo \"compra\" o \"venta\""));
                }
            }

            catch (Exception exception)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Forbidden, exception.Message));;
            }
        }
예제 #3
0
        public bool Run(NewTransactionRequest requestData)
        {
            var request = new RestRequest(Method.POST);

            request.JsonSerializer = new NewtonsoftJsonSerializer();
            request.AddJsonBody(requestData);

            var reply = Client.RestClient.Execute(request);

            JsonReply = reply.Content;
            if (reply.StatusCode == System.Net.HttpStatusCode.OK)
            {
                Result = JsonConvert.DeserializeObject <NewTransactionResult>(reply.Content);
                return(true);
            }

            return(false);
        }
        public IActionResult Post([FromBody] NewTransactionRequest request)
        {
            var client = getCacheClient();

            var transactionId         = RandomGenerator.GenerateToken();
            var newTransactionDetails = new NewTransactionDetails(transactionId, request.Price);

            var ttl   = RandomGenerator.GenerateTTL();
            var added = client.Add(NEW_REQUEST_PREFIX + transactionId, newTransactionDetails, ttl);

            if (!added)
            {
                return(BadRequest("Cache error"));
            }

            var response = new NewTransactionResponse(transactionId);

            return(Ok(response));
        }
예제 #5
0
 public async Task <AbstractAnswer <Transaction> > CreateTransactionAsync(NewTransactionRequest request)
 {
     return(await mediator.Send(request));
 }
예제 #6
0
        public async Task <IActionResult> AddTransaction([FromServices] FinancialControl.Module module,
                                                         [FromServices] IAuthService authService, [FromBody] NewTransactionRequest request)
        {
            var user = authService.AuthenticatedUser();

            request.UserId = user.Id;

            if (request.Type == "income")
            {
                if (request.Recurrent)
                {
                    await module.AddNewRecurrentIncome(new AddNewRecurrentIncomeMessage(request.UserId, request.Name, request.Category, request.Date, request.Value, request.Until, request.Frequency));
                }
                else
                {
                    await module.AddNewIncome(new AddNewIncomeMessage(request.UserId, request.Name, request.Category, request.Date, request.Value));
                }
            }
            else if (request.Type == "expense")
            {
                if (request.Recurrent)
                {
                    await module.AddNewRecurrentExpense(new AddNewRecurrentExpenseMessage(request.UserId, request.Name, request.Category, request.Date, request.Value, request.Until, request.Frequency));
                }
                else
                {
                    await module.AddNewExpense(new AddNewExpenseMessage(request.UserId, request.Name, request.Category, request.Date, request.Value));
                }
            }

            return(this.Ok());
        }