using Diligent.WebAPI.Business.Services.Interfaces; using Diligent.WebAPI.Business.Settings; using Diligent.WebAPI.Data; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Logging; namespace Diligent.WebAPI.Business.Services { public class UserService : IUserService { private readonly AuthorizationSettings _authSettings; private readonly FrontEndSettings _frontEndSettings; private readonly UserManager _userManager; private readonly IMapper _mapper; private readonly DatabaseContext _databaseContext; private readonly IEmailer _emailer; private readonly ILogger _logger; private const string GoogleApiTokenInfoUrl = "https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}"; private string[] SupportedClientsIds = { "" }; public UserService(IOptions authSettings, IOptions frontEndSettings, UserManager userManager, IMapper mapper, DatabaseContext databaseContext, IEmailer emailer, ILogger logger) { _authSettings = authSettings.Value; _frontEndSettings = frontEndSettings.Value; _userManager = userManager; _mapper = mapper; _databaseContext = databaseContext; _emailer = emailer; _logger = logger; } public async Task> GetAll() => await _userManager.Users.ToListAsync(); public async Task GetById(int id) => await _userManager.FindByIdAsync(id.ToString()); public async Task CreateUser(CreateUserRequestDto model) { var user = _mapper.Map(model); await _userManager.CreateAsync(user, model.Password); } public async Task RemoveUser(User user) { await _userManager.DeleteAsync(user); await _databaseContext.SaveChangesAsync(); } public async Task ToggleEnable(User user) { user.IsEnabled = !user.IsEnabled; await _databaseContext.SaveChangesAsync(); } } }