using System.Text.Json.Nodes;

namespace Eis.Application.Administration;

public interface IAdminOrganizationService
{
    Task<AdminEndpointResult> CreateSchoolAsync(
        string sessionToken,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> UpdateSchoolAsync(
        string sessionToken,
        string schoolId,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> CreateClassAsync(
        string sessionToken,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> UpdateClassAsync(
        string sessionToken,
        string classId,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> CreateAdminAsync(
        string sessionToken,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> UpdateAdminAsync(
        string sessionToken,
        string adminId,
        JsonObject body,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> ResetAdminPasswordAsync(
        string sessionToken,
        string adminId,
        CancellationToken cancellationToken);

    Task<AdminEndpointResult> UpdateSelfRegistrationAsync(
        string sessionToken,
        JsonObject body,
        CancellationToken cancellationToken);
}
