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; } } }