From 1ca3e0532b6f2ed777431416e2b89095c468c9b4 Mon Sep 17 00:00:00 2001 From: Drewster727 Date: Wed, 30 Mar 2016 13:59:03 -0500 Subject: [PATCH] add a better way to merge RequestedBy and RequestedUsers to avoid code duplication and simplify checks --- PlexRequests.Store/RequestedModel.cs | 27 ++++++++++++++++++----- PlexRequests.UI/Modules/RequestsModule.cs | 13 ++--------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/PlexRequests.Store/RequestedModel.cs b/PlexRequests.Store/RequestedModel.cs index 839968cd0..81c087ae6 100644 --- a/PlexRequests.Store/RequestedModel.cs +++ b/PlexRequests.Store/RequestedModel.cs @@ -4,6 +4,7 @@ using System.Security.Cryptography; using Dapper.Contrib.Extensions; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; namespace PlexRequests.Store { @@ -39,14 +40,28 @@ namespace PlexRequests.Store public string SeasonsRequested { get; set; } public List RequestedUsers { get; set; } + [JsonIgnore] + public List AllUsers + { + get + { + var u = new List(); + if (!string.IsNullOrEmpty(RequestedBy)) + { + u.Add(RequestedBy); + } + + if (RequestedUsers.Any()) + { + u.AddRange(RequestedUsers.Where(requestedUser => requestedUser != RequestedBy)); + } + return u; + } + } + public bool UserHasRequested(string username) { - bool alreadyRequested = !string.IsNullOrEmpty(RequestedBy) && RequestedBy.Equals(username, StringComparison.OrdinalIgnoreCase); - if (!alreadyRequested && RequestedUsers != null && RequestedUsers.Count > 0) - { - alreadyRequested = RequestedUsers.Any(x => x.Equals(username, StringComparison.OrdinalIgnoreCase)); - } - return alreadyRequested; + return AllUsers.Any(x => x.Equals(username, StringComparison.OrdinalIgnoreCase)); } } diff --git a/PlexRequests.UI/Modules/RequestsModule.cs b/PlexRequests.UI/Modules/RequestsModule.cs index 631cfbfea..b52e81475 100644 --- a/PlexRequests.UI/Modules/RequestsModule.cs +++ b/PlexRequests.UI/Modules/RequestsModule.cs @@ -88,10 +88,6 @@ namespace PlexRequests.UI.Modules } var viewModel = dbMovies.Select(movie => { - if (!string.IsNullOrEmpty(movie.RequestedBy) && !movie.RequestedUsers.Any(x => x.Equals(movie.RequestedBy, StringComparison.OrdinalIgnoreCase))) - { - movie.RequestedUsers.Add(movie.RequestedBy); - } return new RequestViewModel { ProviderId = movie.ProviderId, @@ -107,7 +103,7 @@ namespace PlexRequests.UI.Modules Approved = movie.Available || movie.Approved, Title = movie.Title, Overview = movie.Overview, - RequestedUsers = isAdmin ? movie.RequestedUsers.ToArray() : new string[] { }, + RequestedUsers = isAdmin ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = isAdmin, @@ -131,11 +127,6 @@ namespace PlexRequests.UI.Modules } var viewModel = dbTv.Select(tv => { - if (!string.IsNullOrEmpty(tv.RequestedBy) && - !tv.RequestedUsers.Any(x => x.Equals(tv.RequestedBy, StringComparison.OrdinalIgnoreCase))) - { - tv.RequestedUsers.Add(tv.RequestedBy); - } return new RequestViewModel { ProviderId = tv.ProviderId, @@ -151,7 +142,7 @@ namespace PlexRequests.UI.Modules Approved = tv.Available || tv.Approved, Title = tv.Title, Overview = tv.Overview, - RequestedUsers = isAdmin ? tv.RequestedUsers.ToArray() : new string[] { }, + RequestedUsers = isAdmin ? tv.AllUsers.ToArray() : new string[] { }, ReleaseYear = tv.ReleaseDate.Year.ToString(), Available = tv.Available, Admin = isAdmin,