RandomSticker1Tier2Day.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Threading.Tasks;
  6. using CardCollector.DataBase.Entity;
  7. using CardCollector.DataBase.EntityDao;
  8. namespace CardCollector.StickerEffects
  9. {
  10. public class RandomSticker1Tier3Day
  11. {
  12. public static int Interval = 2;
  13. public static async Task<int> GetStickersCount(Dictionary<string, UserStickerRelation> stickers)
  14. {
  15. var today = DateTime.Today.ToString(CultureInfo.CurrentCulture);
  16. var stickersWithEffect = (await StickerDao.GetListWhere(
  17. item => item.Effect == (int) Effect.RandomSticker1Tier3Day)).Select(item => item.Md5Hash);
  18. var userStickers = stickers.Values.Where(item => stickersWithEffect.Contains(item.ShortHash));
  19. return userStickers.Sum(item =>
  20. {
  21. var interval = DateTime.Today - Convert.ToDateTime(item.AdditionalData);
  22. if (interval.Days < Interval) return 0;
  23. item.AdditionalData = today;
  24. return item.Count;
  25. });
  26. }
  27. public static async Task<Dictionary<StickerEntity, int>> GenerateList(int count)
  28. {
  29. var stickers = await StickerDao.GetListWhere(item => item.Tier == 1);
  30. var rnd = new Random();
  31. var result = new List<StickerEntity>();
  32. for (var i = 0; i < count; i++)
  33. result.Add(stickers[rnd.Next(stickers.Count)]);
  34. return result.GroupBy(item => item).ToDictionary(item => item.Key, item => item.Count());
  35. }
  36. }
  37. }