@using JSMR.Application.VoiceWorks.Queries.Search @using JSMR.Domain.Enums @using JSMR.UI.Blazor.Services @using System.Globalization
@Product.Maker @foreach (var creator in Product.Creators) { @creator.Name }
@Product.Description
@foreach (var tag in Product.Tags) {
@tag.Name
}
@GetReleaseDateText(Product)
@((Product.WishlistCount ?? 0).ToString("n0"))
@if (Product.SalesDate is not null) {
@((Product.Downloads ?? 0).ToString("n0"))
} @*
*@
@if (Product.IsValid != true) {
} @if (Product.Favorite) {
} @if (Product.HasTrial || Product.HasChobit) {
}
@code { [Parameter] public required VoiceWorkSearchResult Product { get; set; } private string GetCardClasses(VoiceWorkSearchResult voiceWork) { List classNames = ["j-card", "j-voice-work-card"]; if (voiceWork.Status == (byte)VoiceWorkStatus.NewRelease) { classNames.Add("type-sale"); } else if (voiceWork.Status == (byte)VoiceWorkStatus.NewAndUpcoming) { classNames.Add("type-new"); } return string.Join(" ", classNames); } private string GetReleaseDateText(VoiceWorkSearchResult voiceWork) { if (voiceWork.SalesDate.HasValue) { return voiceWork.SalesDate.Value.ToString("MMMM d, yyyy", CultureInfo.CurrentCulture); } if (voiceWork.PlannedReleaseDate.HasValue) { return voiceWork.PlannedReleaseDate.Value.ToString("MMMM d, yyyy", CultureInfo.CurrentCulture); } if (voiceWork.ExpectedDate.HasValue) { string part = voiceWork.ExpectedDate.Value.Day switch { 21 => "Late", 11 => "Middle", _ => "Early" }; return $"{part} {voiceWork.ExpectedDate.Value.ToString("MMMM yyyy")}"; } return "Unknown"; } private string GetFlagClassSuffix(VoiceWorkSearchResult voiceWork) { switch (voiceWork.SubtitleLanguage) { case 1: return "us"; case 2: return "cn"; case 3: return "kr"; default: return "jp"; } } }