|
|
|
@ -39,7 +39,6 @@ using PlexRequests.Services.Notification;
|
|
|
|
|
using PlexRequests.Store;
|
|
|
|
|
using PlexRequests.UI.Models;
|
|
|
|
|
using PlexRequests.Helpers;
|
|
|
|
|
using PlexRequests.UI.Helpers;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using PlexRequests.Api.Interfaces;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
@ -48,7 +47,7 @@ using NLog;
|
|
|
|
|
|
|
|
|
|
using PlexRequests.Core.Models;
|
|
|
|
|
using PlexRequests.Helpers.Analytics;
|
|
|
|
|
|
|
|
|
|
using PlexRequests.Helpers.Permissions;
|
|
|
|
|
using Action = PlexRequests.Helpers.Analytics.Action;
|
|
|
|
|
|
|
|
|
|
namespace PlexRequests.UI.Modules
|
|
|
|
@ -157,6 +156,8 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var canManageRequest = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests);
|
|
|
|
|
var viewModel = dbMovies.Select(movie => new RequestViewModel
|
|
|
|
|
{
|
|
|
|
|
ProviderId = movie.ProviderId,
|
|
|
|
@ -173,10 +174,10 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
Approved = movie.Available || movie.Approved,
|
|
|
|
|
Title = movie.Title,
|
|
|
|
|
Overview = movie.Overview,
|
|
|
|
|
RequestedUsers = IsAdmin ? movie.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
RequestedUsers = canManageRequest ? movie.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
ReleaseYear = movie.ReleaseDate.Year.ToString(),
|
|
|
|
|
Available = movie.Available,
|
|
|
|
|
Admin = IsAdmin,
|
|
|
|
|
Admin = canManageRequest,
|
|
|
|
|
IssueId = movie.IssueId,
|
|
|
|
|
Denied = movie.Denied,
|
|
|
|
|
DeniedReason = movie.DeniedReason,
|
|
|
|
@ -230,6 +231,7 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var canManageRequest = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests);
|
|
|
|
|
var viewModel = dbTv.Select(tv => new RequestViewModel
|
|
|
|
|
{
|
|
|
|
|
ProviderId = tv.ProviderId,
|
|
|
|
@ -246,10 +248,10 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
Approved = tv.Available || tv.Approved,
|
|
|
|
|
Title = tv.Title,
|
|
|
|
|
Overview = tv.Overview,
|
|
|
|
|
RequestedUsers = IsAdmin ? tv.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
RequestedUsers = canManageRequest ? tv.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
ReleaseYear = tv.ReleaseDate.Year.ToString(),
|
|
|
|
|
Available = tv.Available,
|
|
|
|
|
Admin = IsAdmin,
|
|
|
|
|
Admin = canManageRequest,
|
|
|
|
|
IssueId = tv.IssueId,
|
|
|
|
|
Denied = tv.Denied,
|
|
|
|
|
DeniedReason = tv.DeniedReason,
|
|
|
|
@ -270,7 +272,7 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
{
|
|
|
|
|
dbAlbum = dbAlbum.Where(x => x.UserHasRequested(Username));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var canManageRequest = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests);
|
|
|
|
|
var viewModel = dbAlbum.Select(album =>
|
|
|
|
|
{
|
|
|
|
|
return new RequestViewModel
|
|
|
|
@ -289,10 +291,10 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
Approved = album.Available || album.Approved,
|
|
|
|
|
Title = album.Title,
|
|
|
|
|
Overview = album.Overview,
|
|
|
|
|
RequestedUsers = IsAdmin ? album.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
RequestedUsers = canManageRequest ? album.AllUsers.ToArray() : new string[] { },
|
|
|
|
|
ReleaseYear = album.ReleaseDate.Year.ToString(),
|
|
|
|
|
Available = album.Available,
|
|
|
|
|
Admin = IsAdmin,
|
|
|
|
|
Admin = canManageRequest,
|
|
|
|
|
IssueId = album.IssueId,
|
|
|
|
|
Denied = album.Denied,
|
|
|
|
|
DeniedReason = album.DeniedReason,
|
|
|
|
@ -308,7 +310,12 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
|
|
|
|
|
private async Task<Response> DeleteRequest(int requestid)
|
|
|
|
|
{
|
|
|
|
|
this.RequiresAnyClaim(UserClaims.Admin, UserClaims.PowerUser);
|
|
|
|
|
if (!Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests))
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new JsonResponseModel { Result = true });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Analytics.TrackEventAsync(Category.Requests, Action.Delete, "Delete Request", Username, CookieHelper.GetAnalyticClientId(Cookies));
|
|
|
|
|
|
|
|
|
|
var currentEntity = await Service.GetAsync(requestid);
|
|
|
|
@ -326,6 +333,10 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private async Task<Response> ReportIssue(int requestId, IssueState issue, string comment)
|
|
|
|
|
{
|
|
|
|
|
if (!Security.HasPermissions(User, Permissions.ReportIssue))
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Sorry, you do not have the correct permissions to report an issue." });
|
|
|
|
|
}
|
|
|
|
|
var originalRequest = await Service.GetAsync(requestId);
|
|
|
|
|
if (originalRequest == null)
|
|
|
|
|
{
|
|
|
|
@ -356,7 +367,10 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
|
|
|
|
|
private async Task<Response> ClearIssue(int requestId)
|
|
|
|
|
{
|
|
|
|
|
this.RequiresAnyClaim(UserClaims.Admin, UserClaims.PowerUser);
|
|
|
|
|
if (!Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests))
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Sorry, you do not have the correct permissions to clear an issue." });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var originalRequest = await Service.GetAsync(requestId);
|
|
|
|
|
if (originalRequest == null)
|
|
|
|
@ -374,7 +388,11 @@ namespace PlexRequests.UI.Modules
|
|
|
|
|
|
|
|
|
|
private async Task<Response> ChangeRequestAvailability(int requestId, bool available)
|
|
|
|
|
{
|
|
|
|
|
this.RequiresAnyClaim(UserClaims.Admin, UserClaims.PowerUser);
|
|
|
|
|
if (!Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests))
|
|
|
|
|
{
|
|
|
|
|
return Response.AsJson(new JsonResponseModel { Result = false, Message = "Sorry, you do not have the correct permissions to change a request." });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Analytics.TrackEventAsync(Category.Requests, Action.Update, available ? "Make request available" : "Make request unavailable", Username, CookieHelper.GetAnalyticClientId(Cookies));
|
|
|
|
|
var originalRequest = await Service.GetAsync(requestId);
|
|
|
|
|
if (originalRequest == null)
|
|
|
|
|