Exemplo n.º 1
0
        private async Task <List <TransactionDayGroup> > ListTransactionDayGroup(TransactionDayGroupFilter filter)
        {
            // Khoi tao List chua ket qua
            List <TransactionDayGroup> result = new List <TransactionDayGroup>();

            // Lay het ngay trong thang filter ra
            List <DateTime> dates = GetDates(filter.Year, filter.Month);

            // Trong moi ngay ma co Transaction thi tao 1 TransactionDayGroup
            foreach (DateTime date in dates)
            {
                // Tao filter theo tung ngay trong thang
                TransactionFilter transactionFilter = new TransactionFilter
                {
                    Date = new DateTimeFilter {
                        Equal = date
                    },
                    WalletName = new StringFilter {
                        Equal = filter.WalletName
                    },
                    UserId = new GuidFilter {
                        Equal = filter.UserId
                    }
                };

                // List transactions trong ngay hom do
                List <Transaction> transactions = await List(transactionFilter);

                // Neu ngay hom do co transactions thi tao 1 TransactionDayGroup moi
                if (transactions != null)
                {
                    if (transactions.Count > 0)
                    {
                        decimal inflow  = 0;
                        decimal outflow = 0;
                        transactions.ForEach(t =>
                        {
                            if (t.Amount < 0)
                            {
                                outflow += t.Amount;
                            }
                            else
                            {
                                inflow += t.Amount;
                            }
                        });
                        result.Add(new TransactionDayGroup
                        {
                            Date         = date,
                            Transactions = transactions,
                            Inflow       = inflow,
                            Outflow      = outflow
                        });
                    }
                }
            }

            // Tra ket qua
            return(result);
        }
Exemplo n.º 2
0
        public async Task <TransactionMonthGroup> GetTransactionMonthGroup(TransactionMonthGroupFilter filter)
        {
            // Filter theo thang va nam de list transaction day group theo thang do
            TransactionDayGroupFilter transactionDayGroupFilter = new TransactionDayGroupFilter
            {
                Month      = filter.Month,
                Year       = filter.Year,
                WalletName = filter.WalletName,
                UserId     = filter.UserId
            };
            List <TransactionDayGroup> transactionDayGroups = await ListTransactionDayGroup(transactionDayGroupFilter);

            // Tinh toan voi outflow < 0 va inflow > 0
            decimal inflow  = 0;
            decimal outflow = 0;

            transactionDayGroups.ForEach(tdg =>
            {
                inflow  += tdg.Inflow;
                outflow += tdg.Outflow;
            });

            // Tra ve transaction month group
            return(new TransactionMonthGroup
            {
                Outflow = outflow,
                Inflow = inflow,
                InOutRate = inflow + outflow,
                Month = filter.Month,
                Year = filter.Year,
                TransactionDayGroups = transactionDayGroups
            });
        }