public async Task <List <UserStatisticDTO> > GetStatistics(StatisticRequestModel model)
        {
            var tInfo = await _db.Transactions.Where(x => x.Time.Date == model.onDay.Date).ToListAsync();

            List <UserStatisticDTO> userStatistics = new List <UserStatisticDTO>();



            foreach (var item in tInfo)
            {
                decimal debet  = 0;
                decimal credit = 0;
                if (item.Type == TransactionType.Income)
                {
                    debet += item.Amount;
                }
                else
                {
                    credit += item.Amount;
                }

                var user = userStatistics.FirstOrDefault(u => u.UserID == item.UserID);

                if (user != null)
                {
                    user.Debet  += debet;
                    user.Credit += credit;
                }
                else
                {
                    UserStatisticDTO statistic = new UserStatisticDTO
                    {
                        UserID = item.UserID,
                        Debet  = debet,
                        Credit = credit,
                        Day    = model.onDay
                    };
                    userStatistics.Add(statistic);
                }
            }
            return(userStatistics);
        }
        public void IsGetStat()
        {
            var opt     = new DbContextOptionsBuilder <DatabaseContext>().UseInMemoryDatabase(databaseName: "GetStat").Options;
            var context = new DatabaseContext(opt);

            var serivce = new AccountService(context);

            AddDb(context);

            StatisticRequestModel model = new StatisticRequestModel
            {
                onDay = DateTime.Parse("20.02.2020")
            };

            List <UserStatisticDTO> expected = new List <UserStatisticDTO>()
            {
                new UserStatisticDTO
                {
                    UserID = 4,
                    Debet  = 0,
                    Credit = 250
                },
                new UserStatisticDTO
                {
                    UserID = 3,
                    Debet  = 0,
                    Credit = 200
                }
            };
            var res = serivce.GetStatistics(model);

            foreach (var item in res.Result)
            {
                Assert.Equal(model.onDay, item.Day);
            }
        }
Exemple #3
0
 public async Task <List <UserStatisticDTO> > Post([FromBody] StatisticRequestModel model)
 {
     return(await _accountService.GetStatistics(model));
 }