// *********************************************************************** // // AgileWebs // // *********************************************************************** using Core.Blueprint.Storage.Adapters; using Core.Cerberos.Adapters; using Core.Cerberos.Adapters.Common.Enums; using Core.Cerberos.Domain.Contexts.Onboarding.Request; namespace Core.Cerberos.Provider.Contracts { public interface IUserService { /// /// Creates a new User. /// /// The User to be created. /// A representing /// the asynchronous execution of the service. Task CreateUserService(UserRequest newUser); /// /// Gets an User by identifier. /// /// The User identifier. /// A representing /// the asynchronous execution of the service. Task GetUserByIdService(string id); /// /// Gets all the users. /// /// A representing /// the asynchronous execution of the service. Task> GetAllUsersService(); /// /// Gets an User by email. /// /// The User email. /// A representing /// the asynchronous execution of the service. Task GetUserByEmailService(string? email); /// /// Validates if a users exists by email. /// /// The User email. /// A representing /// the asynchronous execution of the service. Task ValidateUserExistenceService(string? email); /// /// Changes the status of the user. /// /// The user identifier. /// The new status of the user. /// A representing /// the asynchronous execution of the service. Task ChangeUserStatusService(string id, StatusEnum newStatus); /// /// Updates a User by id. /// /// The User to be updated. /// The User identifier. /// A representing /// the asynchronous execution of the service. Task UpdateUserService(UserAdapter entity, string id); /// /// Logs in the user. /// /// The User's email. /// A representing /// the asynchronous execution of the service. Task LogInUserService(string email); /// /// Logs out the user's session. /// /// The User's email. /// A representing /// the asynchronous execution of the service. Task LogOutUserSessionService(string email); /// /// Adds a company to the user's list of companies. /// /// The identifier of the user to whom the company will be added. /// The identifier of the company to add. /// A representing the asynchronous operation, with the updated user object. Task AddCompanyToUserService(string userId, string companyId); /// /// Removes a company from the user's list of companies. /// /// The identifier of the user from whom the company will be removed. /// The identifier of the company to remove. /// A representing the asynchronous operation, with the updated user object. Task RemoveCompanyFromUserService(string userId, string companyId); /// /// Adds a project to the user's list of projects. /// /// The identifier of the user to whom the project will be added. /// The identifier of the project to add. /// A representing the asynchronous operation, with the updated user object. Task AddProjectToUserService(string userId, string projectId); /// /// Removes a project from the user's list of projects. /// /// The identifier of the user from whom the project will be removed. /// The identifier of the project to remove. /// A representing the asynchronous operation, with the updated user object. Task RemoveProjectFromUserService(string userId, string projectId); /// /// Gets the token adapter for a user. /// /// The user's email. /// A representing the asynchronous execution of the service. Task GetTokenAdapter(string email); } }