/// <summary>
        /// Handles the specified command.
        /// </summary>
        /// <param name="cmd">The command.</param>
        public async void Handle(YodleeGetTransactionsCommand cmd)
        {
            YCobrandLoginRequest cobrandLoginRequest = new YCobrandLoginRequest().SetCobrandUserName(cmd.CobrandUserName)
                                                       .SetCobrandPassword(cmd.CobrandPassword);

            YCobrandLoginResponse yCobrandLoginResponse = await Yodlee.LoginCobrand(cobrandLoginRequest);

            YUserLoginRequest userLoginRequest = new YUserLoginRequest()
                                                 .SetCobrandSessionToken(yCobrandLoginResponse.cobrandConversationCredentials.sessionToken)
                                                 .SetUserName(cmd.UserName)
                                                 .SetUserPassword(cmd.UserPassword);

            YUserLoginResponse yUserLoginResponse = await Yodlee.LoginUser(userLoginRequest);

            YTransactionsSearchRequest transactionsSearchRequest = new YTransactionsSearchRequest()
                                                                   .SetCoBrandToken(yCobrandLoginResponse.cobrandConversationCredentials.sessionToken)
                                                                   .SetUserSessionToken(yUserLoginResponse.userContext.conversationCredentials.sessionToken)
                                                                   .SetContainerType(EContainerType.bank);

            var lookup = cmd.AccountsNumbers.ToLookup(o => o);

            IEnumerable <YTransactionsSearchResponse> transactions = Yodlee.GetTransactions(transactionsSearchRequest);

            foreach (var transaction in transactions)
            {
                var currentTransation = transaction;
                SendReply(new InfoAccumulator(), cmd, reply => {
                    reply.HitsCount = currentTransation.numberOfHits;
                    reply.TotalTransactionsCount = currentTransation.countOfAllTransaction;
                    reply.Transactions           = currentTransation.searchResult.Transactions.Where(t => !lookup.Contains(t.account.itemAccountId))
                                                   .Select(ConvertToApiTransaction);
                    reply.AccountNumbers = cmd.AccountsNumbers;
                });
            }
        }
        /// <summary>
        /// Sends the transactions request command.
        /// </summary>
        /// <param name="accounts">The accounts.</param>
        /// <param name="yodleeUserName">Name of the yodlee user.</param>
        /// <param name="yodleeUserPassword">The yodlee user password.</param>
        private void SendTransactionsRequestCommand(IList <YodleeContentServiceAccount> accounts, string yodleeUserName, string yodleeUserPassword)
        {
            YodleeGetTransactionsCommand getTransactionsCommand = new YodleeGetTransactionsCommand
            {
                UserName        = yodleeUserName,
                UserPassword    = yodleeUserPassword,
                CobrandUserName = Config.CoBrandUserName,
                CobrandPassword = Config.CoBrandPassword,
                AccountsNumbers = accounts.Select(o => o.SiteAccountId)
            };

            Bus.Send(ThirdPartyService.Address, getTransactionsCommand);
        }