Files
vtuber-awards/Backend/Contracts/AdminSeasonContracts.cs
T
AzuTear 18b61bed52 Improve admin candidate modal UX and add clip menu visibility toggle
- Widen AdminCandidateEditorModal to size lg for better readability
- Rename "Clip-Compilation" section to "Clip / Compilation", update copy to reflect single clips too, drop upload hint and Clip-Plattform field, rename label to "Link"
- Fix NativeSelect dropdown clipping inside overflow-y-auto modals by teleporting the menu to body with fixed positioning, flip-up logic, and dynamic maxHeight capped to viewport
- Add ClipAdminMenuVisible setting (backend domain, contracts, endpoint, migration) with matching frontend types, defaults, form wiring, and toggle in the Clip-Workflow modal — hides the Clips nav item from the admin sidebar when disabled

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 18:39:35 +02:00

122 lines
3.1 KiB
C#

namespace Backend.Contracts;
public sealed record AdminSeasonListItemDto(
int Id,
int Year,
string Name,
string CurrentPhase,
bool IsCurrent,
int CategoryCount);
public sealed record AdminCategoryItemDto(
int Id,
string GroupName,
string Name,
string Slug,
string Description,
int SortOrder,
int MaxNomineesPerUser,
int CandidateCount);
public sealed record AdminCandidateItemDto(
int Id,
int CategoryId,
string DisplayName,
string ChannelSlug,
string Platform,
string AcceptanceStatus,
string? AcceptanceNote,
string? ClipCompilationUrl,
string? ClipCompilationTitle,
string? ClipCompilationPlatform,
string ClipEmbedStatus);
public sealed record AdminAwardResultItemDto(
int Id,
int CategoryId,
string CategoryName,
int CandidateId,
string CandidateDisplayName,
string CandidateChannelSlug,
string CandidatePlatform);
public sealed record AdminSeasonDetailResponse(
int Id,
int Year,
string Name,
string ShowStreamUrl,
string CurrentPhase,
bool IsCurrent,
bool IsCommunityOnly,
DateOnly NominationStartsAt,
DateOnly NominationEndsAt,
DateOnly VotingStartsAt,
DateOnly VotingEndsAt,
DateOnly ReviewStartsAt,
DateOnly ReviewEndsAt,
DateOnly ShowDate,
TimeOnly ShowStartsAt,
IEnumerable<AdminCategoryItemDto> Categories,
IEnumerable<AdminCandidateItemDto> Candidates,
IEnumerable<AdminNominationReviewItemDto> PendingNominations,
IEnumerable<AdminNominationReviewItemDto> ReviewedNominations,
IEnumerable<AdminAwardResultItemDto> Results,
IEnumerable<AdminClipSubmissionItemDto> ClipSubmissions);
public sealed record CreateSeasonRequest(
int Year,
string Name,
string ShowStreamUrl,
string CurrentPhase,
bool IsCurrent,
bool IsCommunityOnly,
DateOnly NominationStartsAt,
DateOnly NominationEndsAt,
DateOnly VotingStartsAt,
DateOnly VotingEndsAt,
DateOnly ReviewStartsAt,
DateOnly ReviewEndsAt,
DateOnly ShowDate,
TimeOnly ShowStartsAt,
int? CopyStructureFromSeasonId = null);
public sealed record UpdateSeasonRequest(
int Year,
string Name,
string ShowStreamUrl,
string CurrentPhase,
bool IsCurrent,
bool IsCommunityOnly,
DateOnly NominationStartsAt,
DateOnly NominationEndsAt,
DateOnly VotingStartsAt,
DateOnly VotingEndsAt,
DateOnly ReviewStartsAt,
DateOnly ReviewEndsAt,
DateOnly ShowDate,
TimeOnly ShowStartsAt);
public sealed record UpsertCategoryRequest(
string GroupName,
string Name,
string Slug,
string Description,
int SortOrder,
int MaxNomineesPerUser);
public sealed record UpsertCandidateRequest(
int CategoryId,
string DisplayName,
string ChannelSlug,
string Platform,
string? AcceptanceStatus = null,
string? AcceptanceNote = null,
string? ClipCompilationUrl = null,
string? ClipCompilationTitle = null,
string? ClipCompilationPlatform = null,
string? ClipEmbedStatus = null);
public sealed record SetAwardResultRequest(
int CategoryId,
int CandidateId);