/// <summary> /// Созлание записи в журнале проводок /// </summary> /// <param name="sourceAccount">DTO счета с которого совершается проводка</param> /// <param name="destinationAccount">DTO счета на который совершается проводка</param> /// <param name="isActiceSource">Флаг признака активного типа для счета дебета</param> /// <param name="isActiveDestination">Флаг признака активного типа для счета кредита</param> /// <param name="request">Сущность комманды создания записи в журнале проводки</param> /// <param name="cancellationToken">Токен отмены</param> /// <returns></returns> public async Task <ResponseBaseDto> CreateAccountHistoryTransferEntry(AccountDto sourceAccount, AccountDto destinationAccount, bool isActiceSource, bool isActiveDestination, CreateTransferAccountCommand request, CancellationToken cancellationToken) { bool sourceIsPresent = true; bool destinationIsPresent = true; if (sourceAccount == null) { sourceAccount = _baseHelper.InitiateAccount(request.SourceAccountNumber, request.SourceAccountType, isActiceSource); sourceIsPresent = false; } if (destinationAccount == null) { destinationAccount = _baseHelper.InitiateAccount(request.DestinationAccountNumber, request.DestinationAccountType, isActiveDestination); destinationIsPresent = false; } var result = await _helper.FormAccountEntryResponse(sourceAccount, destinationAccount, request.OperationId, request.Amount, request.DueDate, request.Description, sourceIsPresent, destinationIsPresent); if (result is ResponseMessageDto) { return(result); } return(result); }
/// <summary> /// Метод проведения корректирующей проводки в прошлое число /// </summary> /// <param name="sourceAccount">DTO счета с которого совершается проводка</param> /// <param name="destinationAccount">DTO счета на который совершается проводка</param> /// <param name="request">Сущность комманды создания счета</param> /// <param name="cancellationToken">Токен отмены</param> /// <returns></returns> public async Task <ResponseBaseDto> TryRecalculateEntriesForTransfer(AccountDto sourceAccount, AccountDto destinationAccount, CreateTransferAccountCommand request, CancellationToken cancellationToken) { var sourceType = (ResponseOkDto <AccountTypeModel>) await _mediator.Send(new GetAccountTypeQuery(request.SourceAccountType)); var destinationType = (ResponseOkDto <AccountTypeModel>) await _mediator.Send(new GetAccountTypeQuery(request.DestinationAccountType)); var isSourceActive = sourceType.Result.IsActive; var isDestinatiomActive = destinationType.Result.IsActive; var accountsForUpdate = new List <AccountHistoryModel>(); if (sourceAccount is null && destinationAccount is null) { return(await _createAccountEntryHelper.CreateAccountHistoryTransferEntry(sourceAccount, destinationAccount, isSourceActive, isDestinatiomActive, request, cancellationToken)); }
/// <summary> /// Созлание записи в таблице модуля проводок /// </summary> /// <param name="sourceAccount">DTO счета с которого совершается проводка</param> /// <param name="destinationAccount">DTO счета на который совершается проводка</param> /// <param name="request">Сущность комманды на создание счета</param> /// <param name="isSourcePresent">Присутствует ли счет с которго совершается проводка</param> /// <param name="isDestinationPresent">Присутсвует ли счет на который совершается проводка</param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <ResponseBaseDto> AddBuferEntry(AccountDto sourceAccount, AccountDto destinationAccount, CreateTransferAccountCommand request, bool isSourcePresent, bool isDestinationPresent, CancellationToken cancellationToken) { await _accountHistoryBufferRepository.AddBufferEntry(new BufferForFutureEntriesDatesModel(request.SourceAccountNumber, request.DestinationAccountNumber, request.Amount, request.DueDate.Date, request.OperationId, request.SourceAccountType, request.DestinationAccountType, request.Description)); await _accountHistoryBufferRepository.SaveChangesAsync(); return(_baseHelper.FormMessageResponse(ok, message)); }
public async Task <ActionResult> TransferAccount(AmountTransferDto account) { var accountCommand = new CreateTransferAccountCommand(account.SourceAccountNumber, account.DestinationAccountNumber, Convert.ToDecimal(account.CurrentAmount), account.DueDate, account.SourceAccountType, account.DestinationAccountType, account.OperationId, account.Description); return(Ok(await CommandAsync(accountCommand))); }