using System.Threading.Tasks;
using GB5Shared.DTO.Framework.Login;
namespace GB5Shared.User
{
///
/// Narrow port for creating a client's first admin MUSER row, without EntitlementBLL taking a
/// hard dependency on FrameworkBLL.User.IUserBLL/FrameworkDAL.DTO.User.UserDTO (the real
/// user-management surface, which stays Framework-owned). The adapter implementing this
/// interface — GB5Shared.User.ClientUserProvisioner — lives alongside FrameworkBLL.User.UserBLL
/// and is registered wherever both EntitlementBLL and FrameworkBLL/FrameworkDAL coexist
/// (PlatformHost today, via EntitlementModule.cs's blanket FrameworkBLL/FrameworkDAL scan).
///
public interface IClientUserProvisioner
{
Task ProvisionAsync(ProvisionClientUserRequest request, LoginDTO login);
}
public class ProvisionClientUserRequest
{
public string UserCode { get; set; } = string.Empty;
public string UserName { get; set; } = string.Empty;
public string UserPrimaryMail { get; set; } = string.Empty;
public string UserPrimaryMobile { get; set; } = string.Empty;
public int RoleId { get; set; }
}
public class ProvisionClientUserResult
{
public int UserId { get; set; }
public string? UserGeneratedPassword { get; set; }
}
}