Exemple #1
0
        private async Task <Negotiator> LoadRequests()
        {
            var settings = await PrSettings.GetSettingsAsync();

            var custom = await CustomizationSettings.GetSettingsAsync();

            return(View["Index", new RequestsIndexViewModel {
                            CustomizationSettings = custom, PlexRequestSettings = settings
                        }]);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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]);
        }
Exemple #8
0
        private async Task <Response> GetTvShows()
        {
            var settingsTask = PrSettings.GetSettingsAsync();

            var requests = await Service.GetAllAsync();

            requests = requests.Where(x => x.Type == RequestType.TvShow);

            var dbTv     = requests;
            var settings = await settingsTask;

            if (settings.UsersCanViewOnlyOwnRequests && !IsAdmin)
            {
                dbTv = dbTv.Where(x => x.UserHasRequested(Username)).ToList();
            }

            IEnumerable <QualityModel> qualities = new List <QualityModel>();

            if (IsAdmin)
            {
                try
                {
                    var sonarrSettings = await SonarrSettings.GetSettingsAsync();

                    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 = await SickRageSettings.GetSettingsAsync();

                        if (sickRageSettings.Enabled)
                        {
                            qualities = sickRageSettings.Qualities.Select(x => new QualityModel {
                                Id = x.Key, Name = x.Value
                            }).ToList();
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Info(e);
                }
            }

            var viewModel = dbTv.Select(tv => 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,
                IssueId             = tv.IssueId,
                TvSeriesRequestType = tv.SeasonsRequested,
                Qualities           = qualities.ToArray(),
                Episodes            = tv.Episodes.ToArray(),
            }).ToList();

            return(Response.AsJson(viewModel));
        }
Exemple #9
0
        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));
        }
Exemple #10
0
        private async Task <Negotiator> LoadRequests()
        {
            var settings = await PrSettings.GetSettingsAsync();

            return(View["Index", settings]);
        }
Exemple #11
0
 private async Task <Response> GetPlexRequestSettings()
 {
     return(Response.AsJson(await PrSettings.GetSettingsAsync()));
 }