private async Task <IEnumerable <RequestedModel> > FilterMovies(string searchTerm = null, bool approved = false, bool notApproved = false, bool available = false, bool notAvailable = false, bool released = false, bool notReleased = false) { var settings = PrSettings.GetSettings(); var allRequests = await Service.GetAllAsync(); allRequests = allRequests.Where(x => x.Type == RequestType.Movie); var dbMovies = allRequests; if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)); } // Filter the movies on the search term if (!string.IsNullOrEmpty(searchTerm)) { dbMovies = dbMovies.Where(x => x.Title.Contains(searchTerm)); } if (approved) { dbMovies = dbMovies.Where(x => x.Approved); } if (notApproved) { dbMovies = dbMovies.Where(x => !x.Approved); } if (available) { dbMovies = dbMovies.Where(x => x.Available); } if (notAvailable) { dbMovies = dbMovies.Where(x => !x.Available); } if (released) { dbMovies = dbMovies.Where(x => DateTime.Now > x.ReleaseDate); } if (notReleased) { dbMovies = dbMovies.Where(x => DateTime.Now < x.ReleaseDate); } return(dbMovies); }
private async Task <Response> GetAlbumRequests() { var settings = PrSettings.GetSettings(); var dbAlbum = await Service.GetAllAsync(); dbAlbum = dbAlbum.Where(x => x.Type == RequestType.Album); if (Security.HasPermissions(User, Permissions.UsersCanViewOnlyOwnRequests) && !IsAdmin) { dbAlbum = dbAlbum.Where(x => x.UserHasRequested(Username)); } var canManageRequest = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests); var viewModel = dbAlbum.Select(album => { return(new RequestViewModel { ProviderId = album.ProviderId, Type = album.Type, Status = album.Status, ImdbId = album.ImdbId, Id = album.Id, PosterPath = album.PosterPath, ReleaseDate = album.ReleaseDate, ReleaseDateTicks = album.ReleaseDate.Ticks, RequestedDate = album.RequestedDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(album.RequestedDate, DateTimeOffset).Ticks, Released = DateTime.Now > album.ReleaseDate, Approved = album.Available || album.Approved, Title = album.Title, Overview = album.Overview, RequestedUsers = canManageRequest ? album.AllUsers.ToArray() : new string[] { }, ReleaseYear = album.ReleaseDate.Year.ToString(), Available = album.Available, Admin = canManageRequest, IssueId = album.IssueId, Denied = album.Denied, DeniedReason = album.DeniedReason, TvSeriesRequestType = album.SeasonsRequested, MusicBrainzId = album.MusicBrainzId, ArtistName = album.ArtistName }); }).ToList(); return(Response.AsJson(viewModel)); }
private async Task <Response> GetAlbumRequests() { var settings = PrSettings.GetSettings(); var dbAlbum = await Service.GetAllAsync(); dbAlbum = dbAlbum.Where(x => x.Type == RequestType.Album); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbAlbum = dbAlbum.Where(x => x.UserHasRequested(Username)); } var viewModel = dbAlbum.Select(album => { return(new RequestViewModel { ProviderId = album.ProviderId, Type = album.Type, Status = album.Status, ImdbId = album.ImdbId, Id = album.Id, PosterPath = album.PosterPath, ReleaseDate = album.ReleaseDate, ReleaseDateTicks = album.ReleaseDate.Ticks, RequestedDate = album.RequestedDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(album.RequestedDate, DateTimeOffset).Ticks, Released = DateTime.Now > album.ReleaseDate, Approved = album.Available || album.Approved, Title = album.Title, Overview = album.Overview, RequestedUsers = IsAdmin ? album.AllUsers.ToArray() : new string[] { }, ReleaseYear = album.ReleaseDate.Year.ToString(), Available = album.Available, Admin = IsAdmin, Issues = album.Issues.ToString().CamelCaseToWords(), OtherMessage = album.OtherMessage, AdminNotes = album.AdminNote, TvSeriesRequestType = album.SeasonsRequested, MusicBrainzId = album.MusicBrainzId, ArtistName = album.ArtistName }); }).ToList(); return(Response.AsJson(viewModel)); }
private Response GetTvShows() // TODO: async await the API calls { var settings = PrSettings.GetSettings(); List <Task> taskList = new List <Task>(); List <RequestedModel> dbTv = new List <RequestedModel>(); taskList.Add(Task.Factory.StartNew(() => { return(Service.GetAll().Where(x => x.Type == RequestType.TvShow)); }).ContinueWith((t) => { dbTv = t.Result.ToList(); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbTv = dbTv.Where(x => x.UserHasRequested(Username)).ToList(); } })); List <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var sonarrSettings = SonarrSettings.GetSettings(); if (sonarrSettings.Enabled) { taskList.Add(Task.Factory.StartNew(() => { return(Cache.GetOrSet(CacheKeys.SonarrQualityProfiles, () => { return SonarrApi.GetProfiles(sonarrSettings.ApiKey, sonarrSettings.FullUri); // TODO: cache this! })); }).ContinueWith((t) => { qualities = t.Result.Select(x => new QualityModel() { Id = x.id.ToString(), Name = x.name }).ToList(); })); } else { var sickRageSettings = SickRageSettings.GetSettings(); if (sickRageSettings.Enabled) { qualities = sickRageSettings.Qualities.Select(x => new QualityModel() { Id = x.Key, Name = x.Value }).ToList(); } } } Task.WaitAll(taskList.ToArray()); var viewModel = dbTv.Select(tv => { return(new RequestViewModel { ProviderId = tv.ProviderId, Type = tv.Type, Status = tv.Status, ImdbId = tv.ImdbId, Id = tv.Id, PosterPath = tv.PosterPath, ReleaseDate = tv.ReleaseDate, ReleaseDateTicks = tv.ReleaseDate.Ticks, RequestedDate = tv.RequestedDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(tv.RequestedDate, DateTimeOffset).Ticks, Released = DateTime.Now > tv.ReleaseDate, Approved = tv.Available || tv.Approved, Title = tv.Title, Overview = tv.Overview, RequestedUsers = IsAdmin ? tv.AllUsers.ToArray() : new string[] { }, ReleaseYear = tv.ReleaseDate.Year.ToString(), Available = tv.Available, Admin = IsAdmin, Issues = tv.Issues.ToString().CamelCaseToWords(), OtherMessage = tv.OtherMessage, AdminNotes = tv.AdminNote, TvSeriesRequestType = tv.SeasonsRequested, Qualities = qualities.ToArray() }); }).ToList(); return(Response.AsJson(viewModel)); }
private Response GetMovies() // TODO: async await the API calls { var settings = PrSettings.GetSettings(); List <Task> taskList = new List <Task>(); List <RequestedModel> dbMovies = new List <RequestedModel>(); taskList.Add(Task.Factory.StartNew(() => { return(Service.GetAll().Where(x => x.Type == RequestType.Movie)); }).ContinueWith((t) => { dbMovies = t.Result.ToList(); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)).ToList(); } })); List <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) { taskList.Add(Task.Factory.StartNew(() => { return(Cache.GetOrSet(CacheKeys.CouchPotatoQualityProfiles, () => { return CpApi.GetProfiles(cpSettings.FullUri, cpSettings.ApiKey); // TODO: cache this! })); }).ContinueWith((t) => { qualities = t.Result.list.Select(x => new QualityModel() { Id = x._id, Name = x.label }).ToList(); })); } } Task.WaitAll(taskList.ToArray()); var viewModel = dbMovies.Select(movie => { return(new RequestViewModel { ProviderId = movie.ProviderId, Type = movie.Type, Status = movie.Status, ImdbId = movie.ImdbId, Id = movie.Id, PosterPath = movie.PosterPath, ReleaseDate = movie.ReleaseDate, ReleaseDateTicks = movie.ReleaseDate.Ticks, RequestedDate = movie.RequestedDate, Released = DateTime.Now > movie.ReleaseDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(movie.RequestedDate, DateTimeOffset).Ticks, Approved = movie.Available || movie.Approved, Title = movie.Title, Overview = movie.Overview, RequestedUsers = IsAdmin ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = IsAdmin, Issues = movie.Issues.ToString().CamelCaseToWords(), OtherMessage = movie.OtherMessage, AdminNotes = movie.AdminNote, Qualities = qualities.ToArray() }); }).ToList(); return(Response.AsJson(viewModel)); }
private Negotiator LoadRequests() { var settings = PrSettings.GetSettings(); return(View["Index", settings]); }
private async Task <Response> GetMovies() { var settings = PrSettings.GetSettings(); var allRequests = await Service.GetAllAsync(); allRequests = allRequests.Where(x => x.Type == RequestType.Movie); var dbMovies = allRequests.ToList(); if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)).ToList(); } List <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var cpSettings = CpSettings.GetSettings(); if (cpSettings.Enabled) { try { var result = await Cache.GetOrSetAsync(CacheKeys.CouchPotatoQualityProfiles, async() => { return(await Task.Run(() => CpApi.GetProfiles(cpSettings.FullUri, cpSettings.ApiKey)).ConfigureAwait(false)); }); if (result != null) { qualities = result.list.Select(x => new QualityModel { Id = x._id, Name = x.label }).ToList(); } } catch (Exception e) { Log.Info(e); } } } var viewModel = dbMovies.Select(movie => new RequestViewModel { ProviderId = movie.ProviderId, Type = movie.Type, Status = movie.Status, ImdbId = movie.ImdbId, Id = movie.Id, PosterPath = movie.PosterPath, ReleaseDate = movie.ReleaseDate, ReleaseDateTicks = movie.ReleaseDate.Ticks, RequestedDate = movie.RequestedDate, Released = DateTime.Now > movie.ReleaseDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(movie.RequestedDate, DateTimeOffset).Ticks, Approved = movie.Available || movie.Approved, Title = movie.Title, Overview = movie.Overview, RequestedUsers = IsAdmin ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = IsAdmin, IssueId = movie.IssueId, Qualities = qualities.ToArray() }).ToList(); return(Response.AsJson(viewModel)); }
private async Task <Response> GetTvShows() { var settings = PrSettings.GetSettings(); var requests = await Service.GetAllAsync(); requests = requests.Where(x => x.Type == RequestType.TvShow); var dbTv = requests; if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin) { dbTv = dbTv.Where(x => x.UserHasRequested(Username)).ToList(); } IEnumerable <QualityModel> qualities = new List <QualityModel>(); if (IsAdmin) { var sonarrSettings = SonarrSettings.GetSettings(); if (sonarrSettings.Enabled) { var result = Cache.GetOrSetAsync(CacheKeys.SonarrQualityProfiles, async() => { return(await Task.Run(() => SonarrApi.GetProfiles(sonarrSettings.ApiKey, sonarrSettings.FullUri))); }); qualities = result.Result.Select(x => new QualityModel() { Id = x.id.ToString(), Name = x.name }).ToList(); } else { var sickRageSettings = SickRageSettings.GetSettings(); if (sickRageSettings.Enabled) { qualities = sickRageSettings.Qualities.Select(x => new QualityModel() { Id = x.Key, Name = x.Value }).ToList(); } } } var viewModel = dbTv.Select(tv => { return(new RequestViewModel { ProviderId = tv.ProviderId, Type = tv.Type, Status = tv.Status, ImdbId = tv.ImdbId, Id = tv.Id, PosterPath = tv.PosterPath, ReleaseDate = tv.ReleaseDate, ReleaseDateTicks = tv.ReleaseDate.Ticks, RequestedDate = tv.RequestedDate, RequestedDateTicks = DateTimeHelper.OffsetUTCDateTime(tv.RequestedDate, DateTimeOffset).Ticks, Released = DateTime.Now > tv.ReleaseDate, Approved = tv.Available || tv.Approved, Title = tv.Title, Overview = tv.Overview, RequestedUsers = IsAdmin ? tv.AllUsers.ToArray() : new string[] { }, ReleaseYear = tv.ReleaseDate.Year.ToString(), Available = tv.Available, Admin = IsAdmin, Issues = tv.Issues.ToString().CamelCaseToWords(), OtherMessage = tv.OtherMessage, AdminNotes = tv.AdminNote, TvSeriesRequestType = tv.SeasonsRequested, Qualities = qualities.ToArray() }); }).ToList(); return(Response.AsJson(viewModel)); }