public async Task When_requesting_for_transaction_summary_generates_summary_for_accounts_queries_truelayer_if_data_not_present()
        {
            // Arrange
            SetupDependencies();

            transactionStore.SetupSequence(s => s.GetTransactions(user, It.IsAny <DateTime>(), It.IsAny <DateTime>()))
            .Returns(new Dictionary <string, IList <Transaction> >())
            .Returns(new Dictionary <string, IList <Transaction> >()
            {
                { accountOne.Identifier, accountTransactions[accountOne.Identifier] },
                { accountTwo.Identifier, accountTransactions[accountTwo.Identifier] }
            });


            TransactionSummaryBuilder target = BuildTarget();

            // Act
            var result = await target.BuildAsync(user.Identifier, DateTime.Now.Date.AddDays(-6), DateTime.Now.Date);

            // Assert
            result.Should().NotBeNull();
            result.Categories.Count.Should().BeInRange(1, categories.Length);

            result.Categories.Sum(c => c.TotalSpend).Should().Be(-(accountTransactions[accountOne.Identifier].Where(t => t.Amount < 0).Sum(t => t.Amount) +
                                                                   accountTransactions[accountTwo.Identifier].Where(t => t.Amount < 0).Sum(t => t.Amount)));

            result.Categories.Sum(c => c.Accounts.Count).Should().Be(result.Categories.Count * 2);
        }
        public async Task When_requesting_for_transaction_summary_generates_summary_for_accounts_without_querying_truelayer()
        {
            // Arrange
            SetupDependencies();
            TransactionSummaryBuilder target = BuildTarget();

            // Act
            var result = await target.BuildAsync(user.Identifier, DateTime.Now.Date.AddDays(-6), DateTime.Now.Date);

            // Assert
            result.Should().NotBeNull();
            result.Categories.Count.Should().BeInRange(1, categories.Length);

            result.Categories.Sum(c => c.TotalSpend).Should().Be(-(accountTransactions[accountOne.Identifier].Where(t => t.Amount < 0).Sum(t => t.Amount) +
                                                                   accountTransactions[accountTwo.Identifier].Where(t => t.Amount < 0).Sum(t => t.Amount)));

            result.Categories.Sum(c => c.Accounts.Count).Should().Be(result.Categories.Count * 2);
        }
        public ClientInformationAndAgeingBalances GetMatchedClientInfo(int clientId)
        {
            ClientInformationAndAgeingBalances information = null;

            //ArrayList arrClist = new ArrayList();
            //arrClist.Add(clientId);

            //DataSet theDs = clients.CACrLimitFromDrMgt(arrClist);
            //if (theDs != null)
            //{
            //     //theDs.Tables.
            //}


            using (SqlConnection connection = CreateConnection())
            {
                //djhjhdfjhdfh
                using (SqlDataReader dataReader = SqlHelper.ExecuteReader(connection,
                                                                          CommandType.StoredProcedure,
                                                                          "stGetClientAgingAndCurrent",
                                                                          CreateClientIdAndUserParameters(clientId, 7)))
                {
                    CleverReader reader = new CleverReader(dataReader);
                    if (reader.Read())
                    {
                        ClientInformation clientInformation = new ClientInformationBuilder(reader).Build();
                        reader.NextResult();
                        TransactionSummary transactionSummary = new TransactionSummaryBuilder(reader).Build();
                        reader.NextResult();
                        AgeingBalances ageingBalances = new AgeingBalancesBuilder(reader).Build();

                        information = new ClientInformationAndAgeingBalances(ageingBalances, clientInformation,
                                                                             transactionSummary);
                    }
                }
            }

            return(information);
        }