UserDao.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace MafiaTelegramBot.DataBase
  6. {
  7. public static class UserDao
  8. {
  9. //private static readonly List<UserEntity> DataBase = new();
  10. private static Mafia DataBase = new Mafia();
  11. private static readonly Dictionary<long,UserEntity> ActiveUsers = new();
  12. public static async Task<UserEntity> GetUserById(long id)
  13. {
  14. if (ActiveUsers.ContainsKey(id)) return ActiveUsers[id];
  15. var user = await Task.Run(()=> DataBase.Users.First(user1 => user1.Id == id));
  16. ActiveUsers.Add(user.Id, user);
  17. return user;
  18. }
  19. private static UserEntity ConvertToUser()
  20. {
  21. return new();
  22. }
  23. public static async Task Update(UserEntity userEntity)
  24. {
  25. if (await DataBase.Users.AnyAsync(user => user.Id == userEntity.Id))
  26. {
  27. DataBase.Update(userEntity);
  28. }
  29. else
  30. {
  31. DataBase.Add(userEntity);
  32. }
  33. await DataBase.SaveChangesAsync();
  34. }
  35. public static async Task<bool> UserExists(long id)
  36. {
  37. if (ActiveUsers.ContainsKey(id))
  38. return true;
  39. return await DataBase.Users.AnyAsync(user => user.Id == id);
  40. /*
  41. return await Task.Run(() =>
  42. {
  43. return ActiveUsers.ContainsKey(id) || DataBase.Users.AnyAsync(user => user.Id == id);
  44. });
  45. */
  46. }
  47. }
  48. }