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); } }
public async Task <List <UserStatisticDTO> > Post([FromBody] StatisticRequestModel model) { return(await _accountService.GetStatistics(model)); }