Update scheduling parameters and refactor channel endpoints: extend HorizonDays to 7 and RetentionDays to 90 in appsettings.json. Consolidate channel-related endpoint logic by removing obsolete files and enhancing the ShowEndpoints with audience and genre management capabilities. Improve error handling and streamline command handlers for channel operations.
This commit is contained in:
@@ -8,6 +8,7 @@ namespace TeleWave.Domain.Library;
|
||||
public class Show
|
||||
{
|
||||
private readonly List<ShowEpisode> _episodes = new();
|
||||
private readonly List<ShowGenre> _genres = new();
|
||||
|
||||
public Guid Id { get; private set; }
|
||||
public string Name { get; private set; } = string.Empty;
|
||||
@@ -40,6 +41,9 @@ public class Show
|
||||
/// потребители сортируют явно (см. загрузчик планировщика).</summary>
|
||||
public IReadOnlyList<ShowEpisode> Episodes => _episodes;
|
||||
|
||||
/// <summary>Жанры шоу (backing-field для EF). Ровно один помечен основным, если список не пуст.</summary>
|
||||
public IReadOnlyList<ShowGenre> Genres => _genres;
|
||||
|
||||
private Show() { }
|
||||
|
||||
public static Show Create(
|
||||
@@ -60,9 +64,29 @@ public class Show
|
||||
CreatedAt = DateTimeOffset.UtcNow,
|
||||
};
|
||||
|
||||
/// <summary>Задать категорию аудитории (обычное/детское/взрослое).</summary>
|
||||
/// <summary>Задать категорию аудитории.</summary>
|
||||
public void SetAudience(ShowAudience audience) => Audience = audience;
|
||||
|
||||
/// <summary>Основной жанр или null, если жанры не проставлены.</summary>
|
||||
public Guid? PrimaryGenreId => _genres.FirstOrDefault(g => g.IsPrimary)?.GenreId;
|
||||
|
||||
/// <summary>
|
||||
/// Полностью заменяет набор жанров; дубликаты и пустые идентификаторы отбрасываются. Основным
|
||||
/// становится <paramref name="primaryGenreId"/>, если он попал в набор, иначе первый в списке —
|
||||
/// так шоу с жанрами никогда не остаётся без основного.
|
||||
/// </summary>
|
||||
public void SetGenres(IEnumerable<Guid> genreIds, Guid? primaryGenreId = null)
|
||||
{
|
||||
var ids = genreIds.Where(id => id != Guid.Empty).Distinct().ToList();
|
||||
_genres.Clear();
|
||||
if (ids.Count == 0)
|
||||
return;
|
||||
|
||||
var primary = primaryGenreId is { } candidate && ids.Contains(candidate) ? candidate : ids[0];
|
||||
foreach (var id in ids)
|
||||
_genres.Add(ShowGenre.Create(Id, id, id == primary));
|
||||
}
|
||||
|
||||
public void Rename(string name, string? description)
|
||||
{
|
||||
Name = name;
|
||||
|
||||
Reference in New Issue
Block a user