private async Task <Response> SaveWatcher() { var settings = this.Bind <WatcherSettings>(); var valid = this.Validate(settings); if (!valid.IsValid) { return(Response.AsJson(valid.SendJsonError())); } var cpSettings = await CpSettings.GetSettingsAsync().ConfigureAwait(false); if (cpSettings.Enabled) { return (Response.AsJson(new JsonResponseModel { Result = false, Message = "Cannot have Watcher and CouchPotato both enabled." })); } settings.ApiKey = settings.ApiKey.Trim(); var result = await WatcherSettings.SaveSettingsAsync(settings); return(Response.AsJson(result ? new JsonResponseModel { Result = true, Message = "Successfully Updated the Settings for Watcher!" } : new JsonResponseModel { Result = false, Message = "Could not update the settings, take a look at the logs." })); }
private async Task <Response> SaveRadarr() { var radarrSettings = this.Bind <RadarrSettings>(); //Check Watcher and CP make sure they are not enabled var watcher = await WatcherSettings.GetSettingsAsync(); if (watcher.Enabled) { return(Response.AsJson(new JsonResponseModel { Result = false, Message = "Watcher is enabled, we cannot enable Watcher and Radarr" })); } var cp = await CpSettings.GetSettingsAsync(); if (cp.Enabled) { return(Response.AsJson(new JsonResponseModel { Result = false, Message = "CouchPotato is enabled, we cannot enable Watcher and CouchPotato" })); } var valid = this.Validate(radarrSettings); if (!valid.IsValid) { return(Response.AsJson(valid.SendJsonError())); } radarrSettings.ApiKey = radarrSettings.ApiKey.Trim(); var result = await RadarrSettings.SaveSettingsAsync(radarrSettings); return(Response.AsJson(result ? new JsonResponseModel { Result = true, Message = "Successfully Updated the Settings for Radarr!" } : new JsonResponseModel { Result = false, Message = "Could not update the settings, take a look at the logs." })); }
private async Task <Response> GetMovies() { var allRequests = await Service.GetAllAsync(); allRequests = allRequests.Where(x => x.Type == RequestType.Movie); var dbMovies = allRequests.ToList(); if (Security.HasPermissions(User, Permissions.UsersCanViewOnlyOwnRequests) && !IsAdmin) { dbMovies = dbMovies.Where(x => x.UserHasRequested(Username)).ToList(); } List <QualityModel> qualities = new List <QualityModel>(); var rootFolders = new List <RootFolderModel>(); var radarr = await Radarr.GetSettingsAsync(); if (IsAdmin) { try { var cpSettings = await CpSettings.GetSettingsAsync(); 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); } } if (radarr.Enabled) { var rootFoldersResult = await Cache.GetOrSetAsync(CacheKeys.RadarrRootFolders, async() => { return(await Task.Run(() => RadarrApi.GetRootFolders(radarr.ApiKey, radarr.FullUri))); }); rootFolders = rootFoldersResult.Select( x => new RootFolderModel { Id = x.id.ToString(), Path = x.path, FreeSpace = x.freespace }) .ToList(); var result = await Cache.GetOrSetAsync(CacheKeys.RadarrQualityProfiles, async() => { return(await Task.Run(() => RadarrApi.GetProfiles(radarr.ApiKey, radarr.FullUri))); }); qualities = result.Select(x => new QualityModel { Id = x.id.ToString(), Name = x.name }).ToList(); } } catch (Exception e) { Log.Error(e); } } var canManageRequest = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ManageRequests); var allowViewUsers = Security.HasAnyPermissions(User, Permissions.Administrator, Permissions.ViewUsers); 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 = canManageRequest || allowViewUsers ? movie.AllUsers.ToArray() : new string[] { }, ReleaseYear = movie.ReleaseDate.Year.ToString(), Available = movie.Available, Admin = canManageRequest, IssueId = movie.IssueId, Denied = movie.Denied, DeniedReason = movie.DeniedReason, Qualities = qualities.ToArray(), HasRootFolders = rootFolders.Any(), RootFolders = rootFolders.ToArray(), CurrentRootPath = radarr.Enabled ? GetRootPath(movie.RootFolderSelected, radarr).Result : null }).ToList(); return(Response.AsJson(viewModel)); }