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); } }
public IHttpActionResult Personal(PersonalCardTransferCommand command) { _transferService.Transfer(command); return(StatusCode(HttpStatusCode.Accepted)); }