public async Task <DepositOutput> Handle(
            DepositCommand command,
            CancellationToken token)
        {
            var validationResult = await new DepositValidation()
                                   .ValidateAsync(
                command,
                token);

            if (!validationResult.IsValid)
            {
                return(new DepositOutput(
                           null,
                           validationResult));
            }

            var account = await _read
                          .GetOne(
                (Guid)command.AccountNumber,
                token);

            if (account == null)
            {
                _logger.LogError("Account with {0}" +
                                 " account number doesn't exist",
                                 command.AccountNumber);
                throw new AccountNotExistException(
                          $"Account with {command.AccountNumber}" +
                          $" account number doesn't exist");
            }

            account
            .Deposit((decimal)command.Amount);
            await _write
            .UnitOfWork
            .SaveEntitiesAsync(token);

            return(new DepositOutput(
                       account.Balance,
                       validationResult));
        }
        public async Task <GetOneOutput> Handle(
            GetOneQuery query,
            CancellationToken token)
        {
            var validationResult = await new GetOneValidation()
                                   .ValidateAsync(query, token);

            if (!validationResult.IsValid)
            {
                return(new GetOneOutput(
                           null,
                           null,
                           null,
                           validationResult));
            }

            var account = await _read.GetOne(
                (Guid)query.AccountNumber,
                token);

            if (account == null)
            {
                _logger.LogError("Account with {0}" +
                                 " account number doesn't exist",
                                 query.AccountNumber);
                throw new AccountNotExistException(
                          $"Account with {query.AccountNumber}" +
                          $" account number doesn't exist");
            }

            return(new GetOneOutput(
                       account.AccountName,
                       account.AccountNumber,
                       account.Balance,
                       validationResult));
        }