Add tenant services

This commit is contained in:
2025-08-03 15:19:16 -06:00
parent 7c92a7e791
commit 0eadd6e217
18 changed files with 1134 additions and 514 deletions

View File

@@ -3,100 +3,125 @@
// AgileWebs
// </copyright>
// ***********************************************************************
using Core.Thalos.BuildingBlocks;
using Core.Thalos.Domain.Contexts.Onboarding.Request;
namespace Core.Thalos.Provider.Contracts
{
/// <summary>
/// Interface for User-related service operations.
/// </summary>
public interface IUserProvider
{
/// <summary>
/// Creates a new User.
/// </summary>
/// <param name="entity">The User to be created.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="newUser">The User to be created.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter> CreateUser(UserRequest newUser, CancellationToken cancellationToken);
/// <summary>
/// Gets an User by identifier.
/// Gets a User by Mongo identifier.
/// </summary>
/// <param name="id">The User identifier.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="_id">The User Mongo identifier.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter> GetUserById(string _id, CancellationToken cancellationToken);
/// <summary>
/// Gets all the users.
/// Gets all Users.
/// </summary>
/// <returns>A <see cref="{Task{IEnumerable{UserAdapter}}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{IEnumerable{UserAdapter}}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<IEnumerable<UserAdapter>> GetAllUsers(CancellationToken cancellationToken);
/// <summary>
/// Gets an User by email.
/// Gets a User by email.
/// </summary>
/// <param name="email">The User email.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
ValueTask<UserAdapter> GetUserByEmail(string? email, CancellationToken cancellationToken);
/// <param name="email">The User's email.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter> GetUserByEmail(string email, CancellationToken cancellationToken);
/// <summary>
/// Validates if a users exists by email.
/// Validates if a User exists by email.
/// </summary>
/// <param name="eamil">The User email.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
ValueTask<UserExistenceAdapter> ValidateUserExistence(string? email, CancellationToken cancellationToken);
/// <param name="email">The User's email.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserExistenceAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserExistenceAdapter> ValidateUserExistence(string email, CancellationToken cancellationToken);
/// <summary>
/// Changes the status of the user.
/// Changes the status of a User.
/// </summary>
/// <param name="id">The user identifier.</param>
/// <param name="newStatus">The new status of the user.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
ValueTask<UserAdapter> ChangeUserStatus(string id, Blueprint.Mongo.StatusEnum newStatus, CancellationToken cancellationToken);
/// <param name="_id">The User Mongo identifier.</param>
/// <param name="newStatus">The new status of the User.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter> ChangeUserStatus(string _id, Blueprint.Mongo.StatusEnum newStatus, CancellationToken cancellationToken);
/// <summary>
/// Updates a User by id.
/// Updates a User.
/// </summary>
/// <param name="entity">The User to be updated.</param>
/// <param name="id">The User identifier.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter> UpdateUser(UserAdapter entity, CancellationToken cancellationToken);
/// <summary>
/// Logs in the user.
/// Logs in the User.
/// </summary>
/// <param name="email">The User's email.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter?> LogInUser(string email, CancellationToken cancellationToken);
/// <summary>
/// Logs out the user's session.
/// Logs out the User's session.
/// </summary>
/// <param name="email">The User's email.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter?> LogOutUserSession(string email, CancellationToken cancellationToken);
/// <summary>
/// Gets the token adapter for a user.
/// Gets the TokenAdapter for a User.
/// </summary>
/// <param name="email">The user's email.</param>
/// <returns>A <see cref="{Task{TokenAdapter}}"/> representing the asynchronous execution of the service.</returns>
/// <param name="email">The User's email.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{TokenAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<TokenAdapter?> GetToken(string email, CancellationToken cancellationToken);
/// <summary>
/// Delete an User by identifier.
/// Deletes a User by Mongo identifier.
/// </summary>
/// <param name="id">The User identifier.</param>
/// <returns>A <see cref="{Task{UserAdapter}}"/> representing
/// the asynchronous execution of the service.</returns>
ValueTask<UserAdapter> DeleteUser(string _id, CancellationToken cancellationToken);
/// <param name="_id">The User Mongo identifier.</param>
/// <param name="cancellationToken">A token to cancel the asynchronous operation.</param>
/// <returns>
/// A <see cref="ValueTask{UserAdapter}"/> representing the asynchronous execution of the service.
/// </returns>
ValueTask<UserAdapter?> DeleteUser(string _id, CancellationToken cancellationToken);
}
}