diff --git a/PlexRequests.UI/Content/requests.js b/PlexRequests.UI/Content/requests.js index 2740dc2fc..98252440f 100644 --- a/PlexRequests.UI/Content/requests.js +++ b/PlexRequests.UI/Content/requests.js @@ -182,6 +182,50 @@ $(document).on("click", ".clear", function (e) { }); +//change + +// Change Availability +$(document).on("click", ".change", function (e) { + e.preventDefault(); + var buttonId = e.target.id; + + var availablity = $("button[custom-availibility='" + buttonId + "']").val(); + var $form = $('#change' + buttonId); + var data = $form.serialize(); + data = data + "&Available=" + availablity; + + $.ajax({ + type: $form.prop('method'), + url: $form.prop('action'), + data: data, + dataType: "json", + success: function (response) { + + if (checkJsonResponse(response)) { + generateNotify("Success! Availibility changed.", "info"); + var button = $("button[custom-availibility='" + buttonId + "']"); + var icon = $('#availableIcon'+buttonId); + + if (response.available) { + button.text("Mark Unavailable"); + button.val("false"); + button.prop("class", "btn btn-sm btn-info-outline change"); + icon.prop("class", "fa fa-check"); + } else { + button.text("Mark Available"); + button.prop("class", "btn btn-sm btn-success-outline change"); + icon.prop("class", "fa fa-times"); + button.val("true"); + } + } + }, + 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 3b8c9b6a4..1b60f7aa3 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -45,11 +45,10 @@ namespace PlexRequests.UI.Modules public class RequestsModule : BaseModule { - public RequestsModule(IRepository service, ISettingsService prSettings, ISettingsService auth, ISettingsService plex) : base("requests") + public RequestsModule(IRepository service, ISettingsService prSettings, ISettingsService plex) : base("requests") { Service = service; PrSettings = prSettings; - AuthSettings = auth; PlexSettings = plex; Get["/"] = _ => LoadRequests(); @@ -61,10 +60,10 @@ namespace PlexRequests.UI.Modules Post["/clearissues"] = _ => ClearIssue((int)Request.Form.Id); + Post["/changeavailability"] = _ => ChangeRequestAvailability((int)Request.Form.Id, (bool)Request.Form.Available); } private IRepository Service { get; } private ISettingsService PrSettings { get; } - private ISettingsService AuthSettings { get; } private ISettingsService PlexSettings { get; } private Negotiator LoadRequests() @@ -131,13 +130,14 @@ namespace PlexRequests.UI.Modules private Response DeleteRequest(int requestid) { - if (Context.CurrentUser.IsAuthenticated()) + if (!Context.CurrentUser.IsAuthenticated()) { - var currentEntity = Service.Get(requestid); - Service.Delete(currentEntity); - return Response.AsJson(new JsonResponseModel { Result = true }); + return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot delete any requests." }); } - return Response.AsJson(new JsonResponseModel { Result = false, Message = "You are not an Admin, so you cannot delete any requests." }); + + var currentEntity = Service.Get(requestid); + Service.Delete(currentEntity); + return Response.AsJson(new JsonResponseModel { Result = true }); } /// @@ -162,11 +162,9 @@ namespace PlexRequests.UI.Modules var result = Service.Update(originalRequest); - if (result) - { - return Response.AsJson(new JsonResponseModel { Result = true }); - } - return Response.AsJson(new JsonResponseModel { Result = false, Message = "Could not add issue, please try again or contact the administrator!" }); + return Response.AsJson(result + ? new JsonResponseModel { Result = true } + : new JsonResponseModel { Result = false, Message = "Could not add issue, please try again or contact the administrator!" }); } private Response ClearIssue(int requestId) @@ -189,5 +187,21 @@ namespace PlexRequests.UI.Modules ? new JsonResponseModel { Result = true } : new JsonResponseModel { Result = false, Message = "Could not clear issue, please try again or check the logs" }); } + + private Response ChangeRequestAvailability(int requestId, bool available) + { + var originalRequest = Service.Get(requestId); + if (originalRequest == null) + { + return Response.AsJson(new JsonResponseModel { Result = false, Message = "Request does not exist to change the availability!" }); + } + + originalRequest.Available = available; + + var result = Service.Update(originalRequest); + return Response.AsJson(result + ? new {Result = true, Available = available, Message = string.Empty} + : new { Result = false, Available=false, Message = "Could not update the availability, please try again or check the logs" }); + } } } \ No newline at end of file diff --git a/PlexRequests.UI/Program.cs b/PlexRequests.UI/Program.cs index 1f45c4d1e..b85c99c73 100644 --- a/PlexRequests.UI/Program.cs +++ b/PlexRequests.UI/Program.cs @@ -67,9 +67,7 @@ namespace PlexRequests.UI var s = new Setup(); s.SetupDb(); - - //ConfigureTargets(connection); - + if(string.IsNullOrEmpty(uri)) uri = GetStartupUri(); diff --git a/PlexRequests.UI/Views/Requests/Index.cshtml b/PlexRequests.UI/Views/Requests/Index.cshtml index 38b707bdb..e12d6cd80 100644 --- a/PlexRequests.UI/Views/Requests/Index.cshtml +++ b/PlexRequests.UI/Views/Requests/Index.cshtml @@ -87,10 +87,10 @@
Available {{#if_eq available false}} - + {{/if_eq}} {{#if_eq available true}} - + {{/if_eq}}
Requested By: {{requestedBy}}
@@ -122,6 +122,16 @@ + +
+ + {{#if_eq available true}} + + {{else}} + + {{/if_eq}} +
+ {{/if_eq}}