// ***********************************************************************
//
// Heath
//
// ***********************************************************************
using Core.Cerberos.Adapters;
using Core.Cerberos.Adapters.Common.Enums;
using Core.Cerberos.Domain.Contexts.Onboarding.Request;
namespace Core.Cerberos.Provider.Contracts
{
public interface IRoleService
{
///
/// Creates a new Role.
///
/// The Role to be created.
/// A representing
/// the asynchronous execution of the service.
Task CreateRoleService(RoleRequest newRole);
///
/// Gets an Role by identifier.
///
/// The Role identifier.
/// A representing
/// the asynchronous execution of the service.
Task GetRoleByIdService(string id);
///
/// Gets all the roles.
///
/// A representing
/// the asynchronous execution of the service.
Task> GetAllRolesService();
///
/// Changes the status of the role.
///
/// The role identifier.
/// The new status of the role.
/// The updated entity.
/// A representing
/// the asynchronous execution of the service.
Task ChangeRoleStatusService(string id, StatusEnum newStatus);
///
/// Updates a Role by id.
///
/// The Role to be updated.
/// The Role identifier.
/// A representing
/// the asynchronous execution of the service.
Task UpdateRoleService(RoleAdapter entity, string id);
///
/// Adds an application to the role's list of applications.
///
/// The identifier of the role to which the application will be added.
/// The application enum value to add.
/// A representing the asynchronous operation, with the updated role object.
Task AddApplicationToRoleService(string roleId, ApplicationsEnum application);
///
/// Removes an application from the role's list of applications.
///
/// The identifier of the role from which the application will be removed.
/// The application enum value to remove.
/// A representing the asynchronous operation, with the updated role object.
Task RemoveApplicationFromRoleService(string roleId, ApplicationsEnum application);
}
}