diff --git a/Tv7Playlist/Controllers/HomeController.cs b/Tv7Playlist/Controllers/HomeController.cs index f2d545c..cb2687a 100644 --- a/Tv7Playlist/Controllers/HomeController.cs +++ b/Tv7Playlist/Controllers/HomeController.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using Tv7Playlist.Core; using Tv7Playlist.Data; using Tv7Playlist.Models; @@ -12,10 +13,12 @@ namespace Tv7Playlist.Controllers public class HomeController : Controller { private readonly PlaylistContext _playlistContext; + private readonly IPlaylistSynchronizer _playlistSynchronizer; - public HomeController(PlaylistContext playlistContext) + public HomeController(PlaylistContext playlistContext, IPlaylistSynchronizer playlistSynchronizer) { _playlistContext = playlistContext ?? throw new ArgumentNullException(nameof(playlistContext)); + _playlistSynchronizer = playlistSynchronizer ?? throw new ArgumentNullException(nameof(playlistSynchronizer)); } [HttpGet] @@ -35,5 +38,14 @@ namespace Tv7Playlist.Controllers return View(errorViewModel); } + + [HttpGet] + [Route("synchronize")] + public async Task Synchronize() + { + await _playlistSynchronizer.SynchronizeAsync(); + + return RedirectToAction("Index", "Home"); + } } } \ No newline at end of file diff --git a/Tv7Playlist/Controllers/PlaylistApiController.cs b/Tv7Playlist/Controllers/PlaylistApiController.cs index 98879ce..b979b08 100644 --- a/Tv7Playlist/Controllers/PlaylistApiController.cs +++ b/Tv7Playlist/Controllers/PlaylistApiController.cs @@ -16,13 +16,11 @@ namespace Tv7Playlist.Controllers private readonly ILogger _logger; private readonly IPlaylistBuilder _playlistBuilder; - private readonly IPlaylistSynchronizer _playlistSynchronizer; public PlaylistApiController(ILogger logger, IPlaylistSynchronizer playlistSynchronizer, IPlaylistBuilder playlistBuilder, IAppConfig appConfig) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); - _playlistSynchronizer = playlistSynchronizer ?? throw new ArgumentNullException(nameof(playlistSynchronizer)); _playlistBuilder = playlistBuilder ?? throw new ArgumentNullException(nameof(playlistBuilder)); _appConfig = appConfig ?? throw new ArgumentNullException(nameof(appConfig)); } @@ -43,15 +41,6 @@ namespace Tv7Playlist.Controllers }; } - [HttpPost] - [Route("")] - public async Task Synchronize() - { - await _playlistSynchronizer.SynchronizeAsync(); - return Ok(); - } - - private string GetDownloadFileName() { var downloadFileName = _appConfig.DownloadFileName; diff --git a/Tv7Playlist/Controllers/PlaylistEntryController.cs b/Tv7Playlist/Controllers/PlaylistEntryController.cs new file mode 100644 index 0000000..9d0b481 --- /dev/null +++ b/Tv7Playlist/Controllers/PlaylistEntryController.cs @@ -0,0 +1,58 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Tv7Playlist.Core; +using Tv7Playlist.Data; +using Tv7Playlist.Models; + +namespace Tv7Playlist.Controllers +{ + public class PlaylistEntryController : Controller + { + private readonly PlaylistContext _playlistContext; + + public PlaylistEntryController(PlaylistContext playlistContext) + { + _playlistContext = playlistContext ?? throw new ArgumentNullException(nameof(playlistContext)); + } + + [HttpGet] + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public async Task Edit(Guid? id) + { + if (id == null) return NotFound(); + + var entry = await _playlistContext.PlaylistEntries.FindAsync(id); + if (entry == null) return NotFound(); + + return View(entry); + } + + [HttpPost] + [ValidateAntiForgeryToken] + public async Task Edit(Guid id, PlaylistEntry updatedEntry) + //[Bind("PlaylistEntry.Id,PlaylistEntry.Position,PlaylistEntry.TrackNumberOverride,PlaylistEntry.NameOverride,PlaylistEntry.IsEnabled")] + { + if (updatedEntry == null) return NotFound(); + + if (id != updatedEntry.Id) return NotFound(); + + if (ModelState.IsValid) + { + var entry = await _playlistContext.PlaylistEntries.FindAsync(id); + if (entry == null) return NotFound(); + + entry.Position = updatedEntry.Position; + entry.TrackNumberOverride = updatedEntry.TrackNumberOverride; + entry.NameOverride = updatedEntry.NameOverride; + entry.IsEnabled = updatedEntry.IsEnabled; + + await _playlistContext.SaveChangesAsync(); + + return RedirectToAction("Index", "Home"); + } + + return View(updatedEntry); + } + } +} \ No newline at end of file diff --git a/Tv7Playlist/Models/PlaylistEntryEditViewModel.cs b/Tv7Playlist/Models/PlaylistEntryEditViewModel.cs new file mode 100644 index 0000000..c68e6dd --- /dev/null +++ b/Tv7Playlist/Models/PlaylistEntryEditViewModel.cs @@ -0,0 +1,14 @@ +using Tv7Playlist.Data; + +namespace Tv7Playlist.Models +{ + public class PlaylistEntryEditViewModel + { + public PlaylistEntryEditViewModel(PlaylistEntry playlistEntry) + { + PlaylistEntry = playlistEntry; + } + + public PlaylistEntry PlaylistEntry { get; } + } +} \ No newline at end of file diff --git a/Tv7Playlist/Views/Home/Index.cshtml b/Tv7Playlist/Views/Home/Index.cshtml index 7bfee46..d28ea62 100644 --- a/Tv7Playlist/Views/Home/Index.cshtml +++ b/Tv7Playlist/Views/Home/Index.cshtml @@ -2,10 +2,12 @@ @{ ViewData["Title"] = "TV7 Playlist"; } +
+ @@ -21,6 +23,7 @@ foreach (var track in Model.PlaylistEntries) { + diff --git a/Tv7Playlist/Views/PlaylistEntry/Edit.cshtml b/Tv7Playlist/Views/PlaylistEntry/Edit.cshtml new file mode 100644 index 0000000..43c80ea --- /dev/null +++ b/Tv7Playlist/Views/PlaylistEntry/Edit.cshtml @@ -0,0 +1,103 @@ +@model Tv7Playlist.Data.PlaylistEntry; +@{ + ViewData["Title"] = "Edit Entry"; +} + +
+
+

Edit channel @Model.TrackNumber - @Model.Name

+
+
+ +
+ + + + + +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+ + Cancel +
+
+ + +@section Scripts { + @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } +} \ No newline at end of file diff --git a/Tv7Playlist/Views/Shared/_Layout.cshtml b/Tv7Playlist/Views/Shared/_Layout.cshtml index efdea8a..aedc504 100644 --- a/Tv7Playlist/Views/Shared/_Layout.cshtml +++ b/Tv7Playlist/Views/Shared/_Layout.cshtml @@ -14,6 +14,7 @@ +
-
Number Number override Position
Edit @track.TrackNumber @(track.TrackNumberOverride==0?string.Empty:track.TrackNumberOverride.ToString()) @track.Position