using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using WebVentaCoche.DataBase; using WebVentaCoche.Models; using WebVentaCoche.ViewModels; namespace WebVentaCoche.Helpers { public class UserHelper : IUserHelper { private readonly ApplicationDbContext _context; private readonly UserManager _userManager; private readonly RoleManager _roleManager; private readonly SignInManager _signInManager; public UserHelper(ApplicationDbContext context, UserManager userManager, RoleManager roleManager, SignInManager signInManager) { _context = context; _userManager = userManager; _roleManager = roleManager; _signInManager = signInManager; } public async Task AddUserAsync(User user, string password) { return await _userManager.CreateAsync(user, password); } public async Task AddUserRoleAsync(User user, string role) { await _userManager.AddToRoleAsync(user, role); } public async Task GetUserAsync(string email) { return await _context.Users.FirstOrDefaultAsync(x => x.Email == email); } public async Task IsUserInroleAsync(User user, string role) { return await _userManager.IsInRoleAsync(user, role); } public async Task LoginAsync(LoginViewModel model) { return await _signInManager.PasswordSignInAsync(model.Email, model.Password, false, false); } public async Task LogoutAsync() { await _signInManager.SignOutAsync(); } public async Task ValidateRoleAsync(string role) { bool existRole = await _roleManager.RoleExistsAsync(role); if (!existRole) { await _roleManager.CreateAsync(new IdentityRole { Name = role }); } } public async Task GenerateEmailConfirmationTokenAsync(User user) { return await _userManager.GenerateEmailConfirmationTokenAsync(user); } public async Task ConfirmEmailAsync(User user, string token) { return await _userManager.ConfirmEmailAsync(user, token); } public async Task IsEmailConfirmedAsync(User user) { return await _userManager.IsEmailConfirmedAsync(user); } public async Task GetUserByIdAsync(string id) { return await _userManager.FindByIdAsync(id); } } }