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)); } } }
/// <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); }
/// <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) }); } }