Example #1
0
        public ActionResult <TransactPresentation> CreateTransaction([FromBody] TransactSave transaction)
        {
            StartInfo(ControllerContext.RouteData.Values["action"].ToString(), transaction);
            try
            {
                Guid token  = new Guid(Request.Headers["Authorization"].ToString().Replace("Bearer ", string.Empty));
                int  userId = _tokenCache.Get(token);

                if (userId == 0)
                {
                    isUnauthorized = true;
                    throw new InvalidOperationException(ConstStrings.AuthorizationError);
                }

                if (transaction.RecipientID == 0)
                {
                    transaction.RecipientID = userId;
                }
                else
                {
                    transaction.SenderID = userId;
                }

                TransactPresentation dateTransaction = _databasePW.CreateTransaction(transaction);

                _logger.Info(string.Format("End. Return: {0}",
                                           JsonConvert.SerializeObject(dateTransaction)));
                _logger.EndLogMethod();

                return(Ok(dateTransaction));
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);
                _logger.EndLogMethod();

                if (isUnauthorized)
                {
                    return(Unauthorized());
                }
                else
                {
                    return(BadRequest(ex.Message));
                }
            }
        }
Example #2
0
        /// <summary>
        /// Создание транзакции.
        /// </summary>
        /// <param name="transaction">Модель транзакции.</param>
        /// <returns>Модель представления транзакции.</returns>
        public TransactPresentation CreateTransaction(TransactSave transaction)
        {
            UserDb        sender     = new UserDb();
            TransactionDb transactDb = new TransactionDb
            {
                TransactDate       = DateTime.Now,
                SenderID           = transaction.SenderID,
                RecipientID        = transaction.RecipientID,
                Amount             = transaction.Amount,
                TransferCardNumber = transaction.TransferCardNumber
            };

            if (transactDb.SenderID != 0)
            {
                sender         = _db.Users.Where(c => c.Id == transactDb.SenderID).First();
                sender.Balance = sender.Balance - transactDb.Amount;
                _db.Users.Update(sender);
            }

            UserDb recipient = _db.Users.Where(c => c.Id == transactDb.RecipientID).First();

            recipient.Balance = recipient.Balance + transactDb.Amount;

            _db.Transactions.Add(transactDb);
            _db.Users.Update(recipient);
            _db.SaveChanges();

            if (transactDb.Id != 0)
            {
                TransactPresentation transactPresentation = new TransactPresentation()
                {
                    Id            = transactDb.Id,
                    TransactDate  = transactDb.TransactDate.ToShortDateString() + ' ' + transactDb.TransactDate.ToShortTimeString(),
                    Amount        = transactDb.Amount,
                    SenderName    = sender.Id == 0 ? transactDb.TransferCardNumber : sender.Name,
                    RecipientName = recipient.Name,
                    RecipientId   = recipient.Id
                };
                return(transactPresentation);
            }
            return(null);
        }
Example #3
0
        /// <summary>
        /// Создание транзакции.
        /// </summary>
        /// <param name="id_token">Токен пользователя.</param>
        /// <param name="transaction">Модель транзакции для сохранения.</param>
        /// <returns>Модель транзакции для представления.</returns>
        public Result <TransactPresentation> CreateTransaction(Guid id_token, TransactSave transaction)
        {
            string methodName = new StackTrace(false).GetFrame(0).GetMethod().Name;

            try
            {
                RestRequest request = new RestRequest("CreateTransaction", Method.POST);
                request.AddHeader("Authorization", "Bearer " + id_token);
                request.AddJsonBody(transaction);

                IRestResponse response = StartRequest(methodName, request, new { id_token, transaction });

                if (response.StatusCode == HttpStatusCode.Unauthorized ||
                    response.StatusCode == HttpStatusCode.Forbidden)
                {
                    throw new InvalidOperationException((int)response.StatusCode + ". " + response.Content);
                }
                else if (response.StatusCode != HttpStatusCode.OK)
                {
                    throw new InvalidOperationException(response.Content);
                }

                TransactPresentation result =
                    JsonConvert.DeserializeObject <TransactPresentation>(response.Content);

                _logger.EndLogMethod();
                return(new Result <TransactPresentation> {
                    Data = result
                });
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message);
                _logger.EndLogMethod();
                return(new Result <TransactPresentation> {
                    Error = ex.Message.Replace("\"", string.Empty)
                });
            }
        }