Files
viewengine.client/Models/ClientManagementModels.cs

161 lines
3.7 KiB
C#

namespace ViewEngine.Client.Models;
/// <summary>
/// Request to add a client programmatically
/// </summary>
public class AddClientRequest
{
/// <summary>
/// Email address of the user to add as client
/// </summary>
public string Email { get; set; } = string.Empty;
/// <summary>
/// Friendly name for this client (e.g., "John's Feeder")
/// </summary>
public string? Alias { get; set; }
/// <summary>
/// Your custom identifier for this client (alternative to using clientId)
/// </summary>
public string? CustomUserId { get; set; }
/// <summary>
/// Max jobs per day for this client (0 = unlimited, default: 0)
/// </summary>
public int DailyMaximum { get; set; }
}
/// <summary>
/// Request to update client settings
/// </summary>
public class UpdateClientRequest
{
/// <summary>
/// Friendly name for this client
/// </summary>
public string? Alias { get; set; }
/// <summary>
/// Your custom identifier for this client
/// </summary>
public string? CustomUserId { get; set; }
/// <summary>
/// Max jobs per day for this client (0 = unlimited)
/// </summary>
public int? DailyMaximum { get; set; }
}
/// <summary>
/// Information about a client
/// </summary>
public class ClientInfo
{
/// <summary>
/// Client ID
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// User ID of the client
/// </summary>
public Guid UserId { get; set; }
/// <summary>
/// Client's email address
/// </summary>
public string Email { get; set; } = string.Empty;
/// <summary>
/// Client's display name
/// </summary>
public string? DisplayName { get; set; }
/// <summary>
/// Friendly alias for the client
/// </summary>
public string? Alias { get; set; }
/// <summary>
/// Your custom user identifier
/// </summary>
public string? CustomUserId { get; set; }
/// <summary>
/// Client status: Active, Suspended, etc.
/// </summary>
public string Status { get; set; } = string.Empty;
/// <summary>
/// Maximum jobs per day
/// </summary>
public int DailyMaximum { get; set; }
/// <summary>
/// When the client was added
/// </summary>
public DateTime CreatedAt { get; set; }
/// <summary>
/// When the client was last active
/// </summary>
public DateTime? LastActiveAt { get; set; }
/// <summary>
/// Whether the client's feeder is currently online
/// </summary>
public bool FeederOnline { get; set; }
/// <summary>
/// Number of jobs processed today
/// </summary>
public int JobsProcessedToday { get; set; }
}
/// <summary>
/// Statistics for a client
/// </summary>
public class ClientStats
{
/// <summary>
/// Client ID
/// </summary>
public Guid ClientId { get; set; }
/// <summary>
/// Total jobs processed all time
/// </summary>
public int TotalJobsProcessed { get; set; }
/// <summary>
/// Jobs processed today
/// </summary>
public int JobsProcessedToday { get; set; }
/// <summary>
/// Jobs processed this month
/// </summary>
public int JobsProcessedThisMonth { get; set; }
/// <summary>
/// Average processing time in milliseconds
/// </summary>
public double AverageProcessingTimeMs { get; set; }
/// <summary>
/// Success rate (0-100)
/// </summary>
public double SuccessRate { get; set; }
/// <summary>
/// When the feeder was last online
/// </summary>
public DateTime? LastOnlineAt { get; set; }
/// <summary>
/// Current feeder status
/// </summary>
public bool IsOnline { get; set; }
}