2025-07-08 23:06:19 +08:00
|
|
|
using AGSS.Models;
|
|
|
|
using AGSS.Models.Entities;
|
|
|
|
using Microsoft.AspNetCore.Identity;
|
2025-07-12 15:00:55 +08:00
|
|
|
using Microsoft.EntityFrameworkCore;
|
2025-07-08 23:06:19 +08:00
|
|
|
|
2025-07-11 22:59:29 +08:00
|
|
|
namespace AGSS.Services;
|
|
|
|
|
2025-07-08 23:06:19 +08:00
|
|
|
public class UserService
|
|
|
|
{
|
|
|
|
private readonly UserManager<UserModel> _userManager;
|
|
|
|
|
|
|
|
public UserService(UserManager<UserModel> userManager)
|
|
|
|
{
|
|
|
|
_userManager = userManager;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task<UserProfile> GetUserProfileAsync(string userId)
|
|
|
|
{
|
|
|
|
var user = await _userManager.FindByIdAsync(userId);
|
|
|
|
if (user == null)
|
|
|
|
{
|
|
|
|
throw new ArgumentException("User not found");
|
|
|
|
}
|
|
|
|
|
|
|
|
return new UserProfile
|
|
|
|
{
|
|
|
|
Id = user.Id,
|
|
|
|
UserName = user.UserName,
|
|
|
|
Email = user.Email,
|
|
|
|
Sex = user.Sex,
|
|
|
|
Description = user.Description,
|
|
|
|
Config = user.Config,
|
|
|
|
JobCode = user.JobCode,
|
|
|
|
JobName = user.JobName,
|
2025-07-10 23:09:03 +08:00
|
|
|
Birthday = user.Birthday,
|
|
|
|
MenuCode = user.MenuCode,
|
|
|
|
MenuName = user.MenuName
|
2025-07-08 23:06:19 +08:00
|
|
|
};
|
|
|
|
}
|
2025-07-11 22:59:29 +08:00
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<UserProfile>> GetUsersProfileInRoleAsync(string roleName)
|
|
|
|
{
|
|
|
|
var usersInRole = await _userManager.GetUsersInRoleAsync(roleName);
|
|
|
|
if (usersInRole == null || !usersInRole.Any())
|
|
|
|
{
|
|
|
|
throw new ArgumentException("No users found in the specified role");
|
|
|
|
}
|
|
|
|
|
|
|
|
var userProfiles = new List<UserProfile>();
|
|
|
|
foreach (var user in usersInRole)
|
|
|
|
{
|
|
|
|
userProfiles.Add(new UserProfile
|
|
|
|
{
|
|
|
|
Id = user.Id,
|
|
|
|
UserName = user.UserName,
|
|
|
|
Email = user.Email,
|
|
|
|
Sex = user.Sex,
|
|
|
|
Description = user.Description,
|
|
|
|
Config = user.Config,
|
|
|
|
JobCode = user.JobCode,
|
|
|
|
JobName = user.JobName,
|
|
|
|
Birthday = user.Birthday,
|
|
|
|
MenuCode = user.MenuCode,
|
|
|
|
MenuName = user.MenuName
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
// Assuming you want to return a single UserProfile, you might need to adjust this logic
|
|
|
|
// For now, returning the first user's profile
|
|
|
|
return userProfiles;
|
|
|
|
}
|
2025-07-12 15:00:55 +08:00
|
|
|
|
|
|
|
|
|
|
|
public async Task<List<UserProfile>> GetUsersProfileByUserNameAsync(string userName)
|
|
|
|
{
|
|
|
|
var users = await _userManager.Users
|
|
|
|
.Where(u => u.UserName.Contains(userName))
|
|
|
|
.Select(u => new UserProfile
|
|
|
|
{
|
|
|
|
Id = u.Id,
|
|
|
|
UserName = u.UserName,
|
|
|
|
Email = u.Email,
|
|
|
|
Sex = u.Sex,
|
|
|
|
Description = u.Description,
|
|
|
|
Config = u.Config,
|
|
|
|
JobCode = u.JobCode,
|
|
|
|
JobName = u.JobName,
|
|
|
|
Birthday = u.Birthday,
|
|
|
|
MenuCode = u.MenuCode,
|
|
|
|
MenuName = u.MenuName
|
|
|
|
})
|
|
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
if (users == null || !users.Any())
|
|
|
|
{
|
|
|
|
throw new ArgumentException("No users found with the specified username");
|
|
|
|
}
|
|
|
|
|
|
|
|
return users;
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task<List<UserProfile>> GetUsersProfileAllAsync()
|
|
|
|
{
|
|
|
|
var users = await _userManager.Users
|
|
|
|
.Select(u => new UserProfile
|
|
|
|
{
|
|
|
|
Id = u.Id,
|
|
|
|
UserName = u.UserName,
|
|
|
|
Email = u.Email,
|
|
|
|
Sex = u.Sex,
|
|
|
|
Description = u.Description,
|
|
|
|
Config = u.Config,
|
|
|
|
JobCode = u.JobCode,
|
|
|
|
JobName = u.JobName,
|
|
|
|
Birthday = u.Birthday,
|
|
|
|
MenuCode = u.MenuCode,
|
|
|
|
MenuName = u.MenuName
|
|
|
|
})
|
|
|
|
.ToListAsync();
|
|
|
|
|
|
|
|
if (users == null || !users.Any())
|
|
|
|
{
|
|
|
|
throw new ArgumentException("No users found");
|
|
|
|
}
|
|
|
|
|
|
|
|
return users;
|
|
|
|
}
|
2025-07-11 22:59:29 +08:00
|
|
|
}
|