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