AccountModel.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using System.Numerics;
  3. using System.Threading.Tasks;
  4. using System.Collections.Generic;
  5. namespace HyperCube.Models
  6. {
  7. public enum Role { Admin = 1, Verifier, User }
  8. public class AccountModel
  9. {
  10. public static Dictionary<string, AccountModel> Loaded = new();
  11. public static AccountModel Current;
  12. public string eth_address { get; set; }
  13. /// <summary>
  14. /// ASP Identity ID
  15. /// </summary>
  16. public string UUID { get; set; }
  17. public string Name { get; set; }
  18. public string Email { get; set; }
  19. public Role AccRole { get; set; }
  20. public AccountModel()
  21. {
  22. }
  23. public static AccountModel GetCurrent()
  24. {
  25. return Current;
  26. }
  27. public static AccountModel Find(string uuid)
  28. {
  29. if (uuid == null)
  30. return null;
  31. if (Loaded.ContainsKey(uuid))
  32. return Loaded[uuid];
  33. else
  34. return null;
  35. }
  36. public static BigInteger ConvertBalance(string hex)
  37. {
  38. string newHex = hex.Remove(0, 2);
  39. var balance = System.Numerics.BigInteger.Parse("0"+ newHex, System.Globalization.NumberStyles.HexNumber );
  40. Console.WriteLine($"ConvertBalance {hex} {balance}");
  41. return balance;
  42. }
  43. public static async void InitializeAccounts()
  44. {
  45. Loaded = await MySQLConnector.Instance().SQLSelectASPUsers();
  46. Console.WriteLine("InitializeAccounts");
  47. }
  48. public async Task GetEthAddress()
  49. {
  50. var addr = await Blockchain.GetMain().CreateBlockchainAccount(this);
  51. }
  52. public async Task<string> GetBalance()
  53. {
  54. var res = await Blockchain.GetMain().GetBalance(eth_address);
  55. var balanceInt = ConvertBalance(res);
  56. string balance = balanceInt.ToString();
  57. //Console.WriteLine($"GetBalance {balance}");
  58. return balance;
  59. }
  60. }
  61. }