using Microsoft.EntityFrameworkCore.Infrastructure; using Newtonsoft.Json; using System.Net.Http.Json; using System.Text; using TIAMWebApp.Shared.Application.Interfaces; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.PageModels; namespace TIAMMobilApp.Services { public class UserDataService : IUserDataService { private readonly HttpClient http; public User? User { get; set; } = new User("","",""); public Dictionary userRoleTypes { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } public UserDataService(HttpClient http) { this.http = http; } public List roleTypes = new List { new RoleType { Id = 1, RoleName = "Login" }, new RoleType { Id = 2, RoleName = "Member" }, new RoleType { Id = 4, RoleName = "Vip" }, new RoleType { Id = 8, RoleName = "Uvip" }, new RoleType { Id = 16, RoleName = "Volunteer" }, new RoleType { Id = 32, RoleName = "Guide" }, new RoleType { Id = 64, RoleName = "Protector" }, new RoleType { Id = 128, RoleName = "Admin" }, new RoleType { Id = 256, RoleName = "SuperAdmin" }, new RoleType { Id = 512, RoleName = "God" } }; public async Task IsLoggedInAsync() { if (User == null) { User = new User("","",""); User.IsLoggedIn = false; User.UserType = UserType.User; return User; } else { return User; } } //Mock method for now public async Task AuthorizeUserAsync(int userType) { if (User == null) { User = new User("", "", ""); } //simply return true for now User.IsLoggedIn = true; User.UserType = (UserType)userType; return User; } public async Task TestUserApi(int Param) { var url = APIUrls.UserTest; var response = await http.PostAsJsonAsync(url, Param); var result = await response.Content.ReadAsStringAsync(); return result; } public async Task AuthenticateUser(LoginModel loginModel) { string result = string.Empty; var url = APIUrls.AuthenticateUser; var response = await http.PostAsJsonAsync(url, loginModel); if(response.IsSuccessStatusCode) { result = await response.Content.ReadAsStringAsync(); } else { result = await response.Content.ReadAsStringAsync(); } //result = await response.Content.ReadAsStringAsync(); return result; } public async Task<(bool isSuccess, string ErrorMessage)> CreateUser(RegistrationModel regModel) { bool isSuccess = true; string result = string.Empty; var url = APIUrls.CreateUser; var response = await http.PostAsJsonAsync(url, regModel); result = await response.Content.ReadAsStringAsync(); /*if (response.IsSuccessStatusCode) { isSuccess = true; result = await response.Content.ReadAsStringAsync(); } else { isSuccess = false; result = await response.Content.ReadAsStringAsync(); }*/ return (isSuccess, result); } public Task> GetUserRolesAsync(User user) { //get the user's roles int role = User.UserRoles; foreach (var roleType in roleTypes) { if ((role & roleType.Id) == roleType.Id) { //add the role to the dictionary userRoleTypes.Add(roleType.Id, roleType.RoleName); } } return Task.FromResult(userRoleTypes); } } }