using GermanApp.Application.DTOs;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace GermanApp.Application.Interfaces;
///
/// Interface for admin services.
/// Part of the Application layer.
///
public interface IAdminService
{
///
/// Gets all users for admin view.
///
/// Cancellation token
/// List of all users
Task> GetAllUsersAsync(CancellationToken cancellationToken = default);
///
/// Gets a specific user by ID.
///
/// The user ID
/// Cancellation token
/// The user DTO
Task GetUserByIdAsync(int userId, CancellationToken cancellationToken = default);
///
/// Updates a user's role.
///
/// The user ID
/// The new role
/// Cancellation token
/// The updated user DTO
Task UpdateUserRoleAsync(int userId, string newRole, CancellationToken cancellationToken = default);
///
/// Deletes a user (admin only, cannot delete self).
///
/// The user ID to delete
/// The admin user ID making the request
/// Cancellation token
/// True if successful
Task DeleteUserAsync(int userId, int adminUserId, CancellationToken cancellationToken = default);
///
/// Gets admin dashboard statistics.
///
/// Cancellation token
/// Dashboard statistics
Task GetDashboardStatsAsync(CancellationToken cancellationToken = default);
}