PiggyBankAlert.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. using System;
  2. using System.Timers;
  3. using CardCollector.Controllers;
  4. using CardCollector.DataBase.Entity;
  5. using CardCollector.DataBase.EntityDao;
  6. using CardCollector.Resources;
  7. namespace CardCollector.TimerTasks
  8. {
  9. public class PiggyBankAlert : TimerTask
  10. {
  11. protected override TimeSpan RunAt => Constants.DEBUG
  12. ? new TimeSpan(DateTime.Now.TimeOfDay.Hours, DateTime.Now.TimeOfDay.Minutes + 1, 0)
  13. : new TimeSpan((DateTime.Now.TimeOfDay.Hours / 4 + 1) * 4, 0, 0);
  14. protected override async void TimerCallback(object o, ElapsedEventArgs e)
  15. {
  16. var users = await UserDao.GetAllWhere(user => !user.IsBlocked);
  17. var settings = await SettingsDao.GetAll();
  18. foreach (var user in users)
  19. {
  20. var cash = await CashDao.GetById(user.Id);
  21. var stickers = await UserStickerRelationDao.GetListById(user.Id);
  22. var income = await cash.CalculateIncome(stickers);
  23. try {
  24. if (settings[user.Id][UserSettingsEnum.PiggyBankCapacity])
  25. await MessageController.SendMessage(user,
  26. $"{Messages.uncollected_income}: {income} / {cash.MaxCapacity} {Text.coin}", addToList: false);
  27. }
  28. catch {
  29. await MessageController.SendMessage(user,
  30. $"{Messages.uncollected_income}: {income} / {cash.MaxCapacity} {Text.coin}", addToList: false);
  31. }
  32. }
  33. }
  34. }
  35. }