@page @using global::c3stream.DataModels @model WatchlistModel @{ var cookie = c3stream.UpdateCookie(Request, Response, "/Watchlist"); ViewData["Title"] = "Watchlist"; await using var db = new Database.DbConn(); var states = db.States.ToList(); var marked = db.States.Where(p => p.UserId == cookie && p.State == "marked").Select(p => p.TalkId).ToList(); var watchlist = c3stream.GetEventsByGuid(marked); } @foreach (var talk in Request.Query["orderby"] == "published" ? watchlist.OrderByDescending(p => p.ReleaseDate) : watchlist.OrderBy(p => p.Date)) { var state = states.FirstOrDefault(p => p.TalkId == talk.Guid && p.UserId == cookie)?.State; var isWatched = state == "watched"; var isMarked = state == "marked"; var file = $"{talk.Slug}.mp4"; var conference = c3stream.GetConferenceByEventGuid(talk.Guid); var eventName = talk.Tags.Count <= 1 ? conference.Acronym : talk.Tags[0].Replace("-", "-
"); var category = talk.Tags.Count switch { 0 => "", 1 => talk.Tags[0], 2 => "", 3 => talk.Tags[2], 4 => talk.Tags[3], 5 => talk.Tags[3], 6 => talk.Tags[3], 7 => talk.Tags[3], _ => "" }; @if (isWatched) { } else if (isMarked) { } else { } }
Conference Event @Html.Raw(Request.Query["orderby"] == "published" ? "Published" : "Date") Category Title Speaker(s) Lang Actions
@Html.Raw(conference.Acronym) @Html.Raw(eventName) @(Request.Query["orderby"] == "published" ? talk.ReleaseDate?.Date.ToShortDateString() : talk.Date?.Date.ToShortDateString()) @category@talk.Title@talk.Title@talk.Title@(talk.Persons.Any() ? talk.Persons.Aggregate((s, s1) => $"{s}, {s1}") : "") @talk.OriginalLanguage
@if (System.IO.File.Exists(System.IO.Path.Combine(c3stream.CachePath, conference.Acronym, file))) { } else { } @if (isWatched) { } else if (isMarked) { } else { }