diff --git a/PlexRequests.UI.Tests/UserLoginModuleTests.cs b/PlexRequests.UI.Tests/UserLoginModuleTests.cs index 55720dd1d..63fd034c6 100644 --- a/PlexRequests.UI.Tests/UserLoginModuleTests.cs +++ b/PlexRequests.UI.Tests/UserLoginModuleTests.cs @@ -98,12 +98,12 @@ namespace PlexRequests.UI.Tests var plexFriends = new PlexFriends { User = new[] - { - new UserFriends { - Username = "abc", - }, - } + new UserFriends + { + Username = "abc", + }, + } }; AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings); @@ -144,12 +144,12 @@ namespace PlexRequests.UI.Tests var plexFriends = new PlexFriends { User = new[] - { - new UserFriends { - Username = "aaaa", - }, - } + new UserFriends + { + Username = "aaaa", + }, + } }; AuthMock.Setup(x => x.GetSettings()).Returns(expectedSettings); @@ -193,12 +193,12 @@ namespace PlexRequests.UI.Tests var plexFriends = new PlexFriends { User = new[] - { - new UserFriends { - Username = "abc", - }, - } + new UserFriends + { + Username = "abc", + } + } }; var plexAuth = new PlexAuthentication { @@ -249,12 +249,12 @@ namespace PlexRequests.UI.Tests var plexFriends = new PlexFriends { User = new[] - { - new UserFriends { - Username = "abc", - }, - } + new UserFriends + { + Username = "abc", + }, + } }; var plexAuth = new PlexAuthentication { diff --git a/PlexRequests.UI/Content/requests.js b/PlexRequests.UI/Content/requests.js index 9aacf652e..94ae03e12 100644 --- a/PlexRequests.UI/Content/requests.js +++ b/PlexRequests.UI/Content/requests.js @@ -13,7 +13,7 @@ var tvimer = 0; movieLoad(); tvLoad(); -$('#approveAll').click(function() { +$('#approveAll').click(function () { $.ajax({ type: 'post', url: '/approval/approveall', @@ -39,18 +39,20 @@ $(document).on("click", ".dropdownIssue", function (e) { if (issue == 4) { return; } + e.preventDefault(); + var $form = $('#form' + id); + var data = $form.serialize(); + data = data + "&issue=" + issue; + $.ajax({ - type: "post", - url: "/requests/reportissue", - data: $form.serialize(), // TODO pass in issue enum and Id + type: $form.prop('method'), + url: $form.prop('action'), + data: data, dataType: "json", success: function (response) { - if (checkJsonResponse(response)) { generateNotify("Success!", "success"); - - $("#" + buttonId + "Template").slideUp(); } }, error: function (e) { @@ -61,17 +63,40 @@ $(document).on("click", ".dropdownIssue", function (e) { }); // Modal click -$('.theSaveButton').click(function() { +$(".theSaveButton").click(function () { + var comment = $("#commentArea").val(); + e.preventDefault(); + + var $form = $("#form" + id); + var data = $form.serialize(); + data = data + "&issue=" + 4 + "&comment="+comment; + $.ajax({ + type: $form.prop("method"), + url: $form.prop("action"), + data: data, + dataType: "json", + success: function (response) { + if (checkJsonResponse(response)) { + generateNotify("Success!", "success"); + $("#myModal").modal("hide"); + } + }, + error: function (e) { + console.log(e); + generateNotify("Something went wrong!", "danger"); + } + }); }); // Update the modal -$('#myModal').on('show.bs.modal', function(event) { +$('#myModal').on('show.bs.modal', function (event) { var button = $(event.relatedTarget); // Button that triggered the modal var id = button.data('identifier'); // Extract info from data-* attributes var modal = $(this); - modal.find('.theSaveButton').val(id); + modal.find('.theSaveButton').val(id); // Add ID to the button + modal.find('#requestId').val(id); // Add ID to the hidden field }); $(document).on("click", ".delete", function (e) { @@ -141,7 +166,9 @@ function buildRequestContext(result, type) { requestedBy: result.requestedBy, requestedDate: result.requestedDate, available: result.available, - admin: result.admin + admin: result.admin, + issues: result.issues, + otherMessage: result.otherMessage }; return context; diff --git a/PlexRequests.UI/Models/RequestViewModel.cs b/PlexRequests.UI/Models/RequestViewModel.cs index 34260b832..f3f7b3cf3 100644 --- a/PlexRequests.UI/Models/RequestViewModel.cs +++ b/PlexRequests.UI/Models/RequestViewModel.cs @@ -45,5 +45,7 @@ namespace PlexRequests.UI.Models public string ReleaseYear { get; set; } public bool Available { get; set; } public bool Admin { get; set; } + public IssueState Issues { get; set; } + public string OtherMessage { get; set; } } } diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs index f24e4058f..1e76f3ac8 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -60,6 +60,9 @@ namespace PlexRequests.UI.Modules var convertedType = (string)Request.Form.type == "movie" ? RequestType.Movie : RequestType.TvShow; return DeleteRequest((int)Request.Form.id, convertedType); }; + Get["/reportissue"] = _ => ReportIssue((int)Request.Form.requestId, (IssueState)Request.Form.issue, null); + Get["/reportissuecomment"] = _ => ReportIssue((int)Request.Form.requestId, IssueState.Other, (string)Request.Form.commentArea); + } private IRepository Service { get; } private ISettingsService PrSettings { get; } @@ -92,7 +95,9 @@ namespace PlexRequests.UI.Modules RequestedBy = movie.RequestedBy, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, - Admin = isAdmin + Admin = isAdmin, + Issues = movie.Issues, + OtherMessage = movie.OtherMessage }).ToList(); return Response.AsJson(viewModel); @@ -118,7 +123,9 @@ namespace PlexRequests.UI.Modules RequestedBy = tv.RequestedBy, ReleaseYear = tv.ReleaseDate.Year.ToString(), Available = tv.Available, - Admin = isAdmin + Admin = isAdmin, + Issues = tv.Issues, + OtherMessage = tv.OtherMessage }).ToList(); return Response.AsJson(viewModel); @@ -134,5 +141,19 @@ namespace PlexRequests.UI.Modules } return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot delete any requests." }); } + + /// + /// Reports the issue. + /// Comment can be null if the IssueState != Other + /// + /// The request identifier. + /// The issue. + /// The comment. + /// + private Response ReportIssue(int requestId, IssueState issue, string comment) + { + + return Response.AsJson(new JsonResponseModel()); + } } } \ No newline at end of file diff --git a/PlexRequests.UI/Views/Requests/Index.cshtml b/PlexRequests.UI/Views/Requests/Index.cshtml index 0f37e64bc..20143a3db 100644 --- a/PlexRequests.UI/Views/Requests/Index.cshtml +++ b/PlexRequests.UI/Views/Requests/Index.cshtml @@ -105,23 +105,24 @@ {{/if_eq}} - {{#if_eq admin false}} - - {{/if_eq}} +
+ + +
- + @* // TODO add Issues to the view *@
@@ -132,15 +133,18 @@