From 9ef618af4b535bb2afeddd9ee542d6c1a038af44 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Wed, 9 Mar 2016 17:19:49 +0000 Subject: [PATCH] Added the functionality for the admin to clear the issues. --- PlexRequests.Store/RequestedModel.cs | 11 +++--- PlexRequests.UI/Content/requests.js | 37 ++++++++++++++++++--- PlexRequests.UI/Modules/RequestsModule.cs | 23 +++++++++++++ PlexRequests.UI/Modules/SearchModule.cs | 6 ++-- PlexRequests.UI/Views/Requests/Index.cshtml | 18 ++++++---- 5 files changed, 77 insertions(+), 18 deletions(-) diff --git a/PlexRequests.Store/RequestedModel.cs b/PlexRequests.Store/RequestedModel.cs index fb7da9a87..e32f75766 100644 --- a/PlexRequests.Store/RequestedModel.cs +++ b/PlexRequests.Store/RequestedModel.cs @@ -33,10 +33,11 @@ namespace PlexRequests.Store public enum IssueState { - WrongAudio, - NoSubtitles, - WrongContent, - PlaybackIssues, - Other + None = 99, + WrongAudio = 0, + NoSubtitles = 1, + WrongContent = 2, + PlaybackIssues = 3, + Other = 4 // Provide a message } } diff --git a/PlexRequests.UI/Content/requests.js b/PlexRequests.UI/Content/requests.js index 1e63ede83..e216b0ee5 100644 --- a/PlexRequests.UI/Content/requests.js +++ b/PlexRequests.UI/Content/requests.js @@ -20,7 +20,7 @@ $('#approveAll').click(function () { dataType: "json", success: function (response) { if (checkJsonResponse(response)) { - generateNotify("Success!", "success"); + generateNotify("Success! All requests approved!", "success"); } }, error: function (e) { @@ -52,7 +52,7 @@ $(document).on("click", ".dropdownIssue", function (e) { dataType: "json", success: function (response) { if (checkJsonResponse(response)) { - generateNotify("Success!", "success"); + generateNotify("Success! Added Issue.", "success"); } }, error: function (e) { @@ -66,7 +66,7 @@ $(document).on("click", ".dropdownIssue", function (e) { $(".theSaveButton").click(function (e) { var comment = $("#commentArea").val(); e.preventDefault(); - var id = e.target.value; + var $form = $("#commentForm"); var data = $form.serialize(); data = data + "&issue=" + 4 + "&comment=" + comment; @@ -78,7 +78,7 @@ $(".theSaveButton").click(function (e) { dataType: "json", success: function (response) { if (checkJsonResponse(response)) { - generateNotify("Success!", "success"); + generateNotify("Success! Added Issue.", "success"); $("#myModal").modal("hide"); } }, @@ -100,6 +100,7 @@ $('#myModal').on('show.bs.modal', function (event) { requestField.val(id); // Add ID to the hidden field }); +// Delete $(document).on("click", ".delete", function (e) { e.preventDefault(); var buttonId = e.target.id; @@ -113,7 +114,7 @@ $(document).on("click", ".delete", function (e) { success: function (response) { if (checkJsonResponse(response)) { - generateNotify("Success!", "success"); + generateNotify("Success! Request Deleted.", "success"); $("#" + buttonId + "Template").slideUp(); } @@ -126,6 +127,32 @@ $(document).on("click", ".delete", function (e) { }); +// Clear issues +$(document).on("click", ".clear", function (e) { + e.preventDefault(); + var buttonId = e.target.id; + var $form = $('#clear' + buttonId); + + $.ajax({ + type: $form.prop('method'), + url: $form.prop('action'), + data: $form.serialize(), + dataType: "json", + success: function (response) { + + if (checkJsonResponse(response)) { + generateNotify("Success! Issues Cleared.", "info"); + $('#issueArea').html("

Issue: None

"); + } + }, + error: function (e) { + console.log(e); + generateNotify("Something went wrong!", "danger"); + } + }); + +}); + function movieLoad() { $("#movieList").html(""); diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs index 93a81ab2d..ff5aa0f8b 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -59,6 +59,8 @@ namespace PlexRequests.UI.Modules Post["/reportissue"] = _ => ReportIssue((int)Request.Form.requestId, (IssueState)(int)Request.Form.issue, null); Post["/reportissuecomment"] = _ => ReportIssue((int)Request.Form.requestId, IssueState.Other, (string)Request.Form.commentArea); + Post["/clearissues"] = _ => ClearIssue((int)Request.Form.requestId); + } private IRepository Service { get; } private ISettingsService PrSettings { get; } @@ -163,5 +165,26 @@ namespace PlexRequests.UI.Modules } return Response.AsJson(new JsonResponseModel { Result = false, Message = "Could not add issue, please try again or contact the administrator!" }); } + + private Response ClearIssue(int requestId) + { + if (!Context.CurrentUser.IsAuthenticated()) + { + return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot clear any issues." }); + } + + var originalRequest = Service.Get(requestId); + if (originalRequest == null) + { + return Response.AsJson(new JsonResponseModel { Result = false, Message = "Request does not exist to clear it!" }); + } + originalRequest.Issues = IssueState.None; + originalRequest.OtherMessage = string.Empty; + + var result = Service.Update(originalRequest); + return Response.AsJson(result + ? new JsonResponseModel { Result = true } + : new JsonResponseModel { Result = false, Message = "Could not clear issue, please try again or check the logs" }); + } } } \ No newline at end of file diff --git a/PlexRequests.UI/Modules/SearchModule.cs b/PlexRequests.UI/Modules/SearchModule.cs index 5c5085ba2..ecf68e21f 100644 --- a/PlexRequests.UI/Modules/SearchModule.cs +++ b/PlexRequests.UI/Modules/SearchModule.cs @@ -184,7 +184,8 @@ namespace PlexRequests.UI.Modules Status = movieInfo.Status, RequestedDate = DateTime.Now, Approved = false, - RequestedBy = Session[SessionKeys.UsernameKey].ToString() + RequestedBy = Session[SessionKeys.UsernameKey].ToString(), + Issues = IssueState.None, }; @@ -255,7 +256,8 @@ namespace PlexRequests.UI.Modules Status = showInfo.status, RequestedDate = DateTime.Now, Approved = false, - RequestedBy = Session[SessionKeys.UsernameKey].ToString() + RequestedBy = Session[SessionKeys.UsernameKey].ToString(), + Issues = IssueState.None }; RequestService.AddRequest(showId, model); diff --git a/PlexRequests.UI/Views/Requests/Index.cshtml b/PlexRequests.UI/Views/Requests/Index.cshtml index 272a4f939..26fe4de0f 100644 --- a/PlexRequests.UI/Views/Requests/Index.cshtml +++ b/PlexRequests.UI/Views/Requests/Index.cshtml @@ -93,12 +93,13 @@

Requested By: {{requestedBy}}

Requested Date: {{requestedDate}}

- {{#if otherMessage}} -

Message: {{otherMessage}}

- {{else}} -

Issue: {{issues}}

- {{/if}} - +
+ {{#if otherMessage}} +

Message: {{otherMessage}}

+ {{else}} +

Issue: {{issues}}

+ {{/if}} +

@@ -108,6 +109,11 @@ + +
+ + +
{{/if_eq}}