public BankOperationModel Transfer(PersonalCardTransferCommand command)
 {
     EnsureIsValid(command);
     EnsureIsSecure <PersonalCardTransferCommand, CardSecurityValidator>(command);
     try
     {
         var fromCard = _deps.UserCards.SurelyFind(command.FromCardId);
         var toCard   = _deps.UserCards.SurelyFind(command.ToCardId);
         var transfer = _deps.CardTransferFactory.Create(fromCard, toCard, command.Amount);
         _deps.CardTransfers.Create(transfer);
         var userOperation = new UserBankOperation(transfer, Identity.User);
         _deps.UserBankOperations.Create(userOperation);
         Commit();
         var model = transfer.ToModel <BankOperation, BankOperationModel>();
         Publish(new OperationProgressEvent(Operation.Id, model));
         return(model);
     }
     catch (DomainException ex)
     {
         throw new UserMessageException(new UserMessage(ex.Message, ex.GetType().Name));
     }
     catch (Exception ex)
     {
         throw new ServiceException("Can't create transfer.", ex);
     }
 }
Exemplo n.º 2
0
 public IHttpActionResult Personal(PersonalCardTransferCommand command)
 {
     _transferService.Transfer(command);
     return(StatusCode(HttpStatusCode.Accepted));
 }