/// <summary> /// Gets the requests. /// </summary> /// <param name="count">The count.</param> /// <param name="position">The position.</param> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > GetRequests(int count, int position) { var allRequests = await MovieRepository.GetWithUser().Skip(position).Take(count).ToListAsync(); allRequests.ForEach(x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); }); return(allRequests); }
/// <summary> /// Searches the movie request. /// </summary> /// <param name="search">The search.</param> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > SearchMovieRequest(string search) { var allRequests = await MovieRepository.GetWithUser().ToListAsync(); var results = allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToList(); results.ForEach(x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); }); return(results); }
public async Task<TvRequests> UpdateTvRequest(TvRequests request) { await Audit.Record(AuditType.Updated, AuditArea.TvRequest, $"Updated Request {request.Title}", Username); var allRequests = TvRepository.Get(); var results = await allRequests.FirstOrDefaultAsync(x => x.Id == request.Id); results.TvDbId = request.TvDbId; results.ImdbId = request.ImdbId; results.Overview = request.Overview; results.PosterPath = PosterPathHelper.FixPosterPath(request.PosterPath); results.QualityOverride = request.QualityOverride; results.RootFolder = request.RootFolder; await TvRepository.Update(results); return results; }
public async Task <TvRequests> UpdateTvRequest(TvRequests request) { var allRequests = TvRepository.Get(); var results = await allRequests.FirstOrDefaultAsync(x => x.Id == request.Id); results.TvDbId = request.TvDbId; results.ImdbId = request.ImdbId; results.Overview = request.Overview; results.PosterPath = PosterPathHelper.FixPosterPath(request.PosterPath); results.Background = PosterPathHelper.FixBackgroundPath(request.Background); results.QualityOverride = request.QualityOverride; results.RootFolder = request.RootFolder; await TvRepository.Update(results); return(results); }
/// <summary> /// Gets the requests. /// </summary> /// <param name="count">The count.</param> /// <param name="position">The position.</param> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > GetRequests(int count, int position) { var shouldHide = await HideFromOtherUsers(); List <MovieRequests> allRequests; if (shouldHide.Hide) { allRequests = await MovieRepository.GetWithUser(shouldHide.UserId).Skip(position).Take(count).ToListAsync(); } else { allRequests = await MovieRepository.GetWithUser().Skip(position).Take(count).ToListAsync(); } allRequests.ForEach(x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); }); return(allRequests); }
/// <summary> /// Gets the requests. /// </summary> /// <param name="count">The count.</param> /// <param name="position">The position.</param> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > GetRequests(int count, int position) { var shouldHide = await HideFromOtherUsers(); List <MovieRequests> allRequests; if (shouldHide.Hide) { allRequests = await MovieRepository.GetWithUser(shouldHide.UserId).Skip(position).Take(count).OrderByDescending(x => x.ReleaseDate).ToListAsync(); } else { allRequests = await MovieRepository.GetWithUser().Skip(position).Take(count).OrderByDescending(x => x.ReleaseDate).ToListAsync(); } allRequests.ForEach(async x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); await CheckForSubscription(shouldHide, x); }); return(allRequests); }
private async Task CheckForSubscription(HideResult shouldHide, List <MovieRequests> movieRequests) { var requestIds = movieRequests.Select(x => x.Id); var sub = await _subscriptionRepository.GetAll().Where(s => s.UserId == shouldHide.UserId && requestIds.Contains(s.RequestId) && s.RequestType == RequestType.Movie) .ToListAsync(); foreach (var x in movieRequests) { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); if (shouldHide.UserId == x.RequestedUserId) { x.ShowSubscribe = false; } else { x.ShowSubscribe = true; var hasSub = sub.FirstOrDefault(r => r.RequestId == x.Id); x.Subscribed = hasSub != null; } } }
/// <summary> /// Updates the movie request. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public async Task <MovieRequests> UpdateMovieRequest(MovieRequests request) { var allRequests = await MovieRepository.GetWithUser().ToListAsync(); var results = allRequests.FirstOrDefault(x => x.Id == request.Id); results.Approved = request.Approved; results.Available = request.Available; results.Denied = request.Denied; results.DeniedReason = request.DeniedReason; results.ImdbId = request.ImdbId; results.IssueId = request.IssueId; results.Issues = request.Issues; results.Overview = request.Overview; results.PosterPath = PosterPathHelper.FixPosterPath(request.PosterPath); results.QualityOverride = request.QualityOverride; results.RootPathOverride = request.RootPathOverride; await MovieRepository.Update(results); return(results); }
/// <summary> /// Gets the requests. /// </summary> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > GetRequests() { var shouldHide = await HideFromOtherUsers(); List <MovieRequests> allRequests; if (shouldHide.Hide) { allRequests = await MovieRepository.GetWithUser(shouldHide.UserId).ToListAsync(); } else { allRequests = await MovieRepository.GetWithUser().ToListAsync(); } allRequests.ForEach(async x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); await CheckForSubscription(shouldHide, x); }); return(allRequests); }
/// <summary> /// Searches the movie request. /// </summary> /// <param name="search">The search.</param> /// <returns></returns> public async Task <IEnumerable <MovieRequests> > SearchMovieRequest(string search) { var shouldHide = await HideFromOtherUsers(); List <MovieRequests> allRequests; if (shouldHide.Hide) { allRequests = await MovieRepository.GetWithUser(shouldHide.UserId).ToListAsync(); } else { allRequests = await MovieRepository.GetWithUser().ToListAsync(); } var results = allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToList(); results.ForEach(x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); }); return(results); }
/// <summary> /// Requests the movie. /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public async Task <RequestEngineResult> RequestMovie(MovieRequestViewModel model) { var movieInfo = await MovieApi.GetMovieInformationWithExtraInfo(model.TheMovieDbId, model.LanguageCode); if (movieInfo == null || movieInfo.Id == 0) { return(new RequestEngineResult { Result = false, Message = "There was an issue adding this movie!", ErrorMessage = $"Please try again later" }); } var fullMovieName = $"{movieInfo.Title}{(!string.IsNullOrEmpty(movieInfo.ReleaseDate) ? $" ({DateTime.Parse(movieInfo.ReleaseDate).Year})" : string.Empty)}"; var userDetails = await GetUser(); var canRequestOnBehalf = model.RequestOnBehalf.HasValue(); var isAdmin = await UserManager.IsInRoleAsync(userDetails, OmbiRoles.PowerUser) || await UserManager.IsInRoleAsync(userDetails, OmbiRoles.Admin); if (canRequestOnBehalf && !isAdmin) { return(new RequestEngineResult { Result = false, Message = "You do not have the correct permissions to request on behalf of users!", ErrorMessage = $"You do not have the correct permissions to request on behalf of users!" }); } if ((model.RootFolderOverride.HasValue || model.QualityPathOverride.HasValue) && !isAdmin) { return(new RequestEngineResult { Result = false, Message = "You do not have the correct permissions!", ErrorMessage = $"You do not have the correct permissions!" }); } var requestModel = new MovieRequests { TheMovieDbId = movieInfo.Id, RequestType = RequestType.Movie, Overview = movieInfo.Overview, ImdbId = movieInfo.ImdbId, PosterPath = PosterPathHelper.FixPosterPath(movieInfo.PosterPath), Title = movieInfo.Title, ReleaseDate = !string.IsNullOrEmpty(movieInfo.ReleaseDate) ? DateTime.Parse(movieInfo.ReleaseDate) : DateTime.MinValue, Status = movieInfo.Status, RequestedDate = DateTime.UtcNow, Approved = false, RequestedUserId = canRequestOnBehalf ? model.RequestOnBehalf : userDetails.Id, Background = movieInfo.BackdropPath, LangCode = model.LanguageCode, RequestedByAlias = model.RequestedByAlias, RootPathOverride = model.RootFolderOverride.GetValueOrDefault(), QualityOverride = model.QualityPathOverride.GetValueOrDefault() }; var usDates = movieInfo.ReleaseDates?.Results?.FirstOrDefault(x => x.IsoCode == "US"); requestModel.DigitalReleaseDate = usDates?.ReleaseDate ?.FirstOrDefault(x => x.Type == ReleaseDateType.Digital)?.ReleaseDate; var ruleResults = (await RunRequestRules(requestModel)).ToList(); var ruleResultInError = ruleResults.Find(x => !x.Success); if (ruleResultInError != null) { return(new RequestEngineResult { ErrorMessage = ruleResultInError.Message, ErrorCode = ruleResultInError.ErrorCode }); } if (requestModel.Approved) // The rules have auto approved this { var requestEngineResult = await AddMovieRequest(requestModel, fullMovieName, model.RequestOnBehalf); if (requestEngineResult.Result) { var result = await ApproveMovie(requestModel); if (result.IsError) { Logger.LogWarning("Tried auto sending movie but failed. Message: {0}", result.Message); return(new RequestEngineResult { Message = result.Message, ErrorMessage = result.Message, Result = false }); } return(requestEngineResult); } // If there are no providers then it's successful but movie has not been sent } return(await AddMovieRequest(requestModel, fullMovieName, model.RequestOnBehalf)); }
/// <summary> /// Requests the movie. /// </summary> /// <param name="model">The model.</param> /// <returns></returns> public async Task <RequestEngineResult> RequestMovie(MovieRequestViewModel model) { var movieInfo = await MovieApi.GetMovieInformationWithExtraInfo(model.TheMovieDbId); if (movieInfo == null || movieInfo.Id == 0) { return(new RequestEngineResult { Result = false, Message = "There was an issue adding this movie!", ErrorMessage = $"Please try again later" }); } var fullMovieName = $"{movieInfo.Title}{(!string.IsNullOrEmpty(movieInfo.ReleaseDate) ? $" ({DateTime.Parse(movieInfo.ReleaseDate).Year})" : string.Empty)}"; var userDetails = await GetUser(); var requestModel = new MovieRequests { TheMovieDbId = movieInfo.Id, RequestType = RequestType.Movie, Overview = movieInfo.Overview, ImdbId = movieInfo.ImdbId, PosterPath = PosterPathHelper.FixPosterPath(movieInfo.PosterPath), Title = movieInfo.Title, ReleaseDate = !string.IsNullOrEmpty(movieInfo.ReleaseDate) ? DateTime.Parse(movieInfo.ReleaseDate) : DateTime.MinValue, Status = movieInfo.Status, RequestedDate = DateTime.UtcNow, Approved = false, RequestedUserId = userDetails.Id, Background = movieInfo.BackdropPath }; var usDates = movieInfo.ReleaseDates?.Results?.FirstOrDefault(x => x.IsoCode == "US"); requestModel.DigitalReleaseDate = usDates?.ReleaseDate ?.FirstOrDefault(x => x.Type == ReleaseDateType.Digital)?.ReleaseDate; var ruleResults = (await RunRequestRules(requestModel)).ToList(); if (ruleResults.Any(x => !x.Success)) { return(new RequestEngineResult { ErrorMessage = ruleResults.FirstOrDefault(x => x.Message.HasValue()).Message }); } if (requestModel.Approved) // The rules have auto approved this { var requestEngineResult = await AddMovieRequest(requestModel, fullMovieName); if (requestEngineResult.Result) { var result = await ApproveMovie(requestModel); if (result.IsError) { Logger.LogWarning("Tried auto sending movie but failed. Message: {0}", result.Message); return(new RequestEngineResult { Message = result.Message, ErrorMessage = result.Message, Result = false }); } return(requestEngineResult); } // If there are no providers then it's successful but movie has not been sent } return(await AddMovieRequest(requestModel, fullMovieName)); }
/// <summary> /// Gets the requests. /// </summary> /// <param name="count">The count.</param> /// <param name="position">The position.</param> /// <param name="orderFilter">The order/filter type.</param> /// <returns></returns> public async Task <RequestsViewModel <MovieRequests> > GetRequests(int count, int position, OrderFilterModel orderFilter) { var shouldHide = await HideFromOtherUsers(); IQueryable <MovieRequests> allRequests; if (shouldHide.Hide) { allRequests = MovieRepository.GetWithUser(shouldHide .UserId); //.Skip(position).Take(count).OrderByDescending(x => x.ReleaseDate).ToListAsync(); } else { allRequests = MovieRepository .GetWithUser(); //.Skip(position).Take(count).OrderByDescending(x => x.ReleaseDate).ToListAsync(); } switch (orderFilter.AvailabilityFilter) { case FilterType.None: break; case FilterType.Available: allRequests = allRequests.Where(x => x.Available); break; case FilterType.NotAvailable: allRequests = allRequests.Where(x => !x.Available); break; default: throw new ArgumentOutOfRangeException(); } switch (orderFilter.StatusFilter) { case FilterType.None: break; case FilterType.Approved: allRequests = allRequests.Where(x => x.Approved); break; case FilterType.Processing: allRequests = allRequests.Where(x => x.Approved && !x.Available); break; case FilterType.PendingApproval: allRequests = allRequests.Where(x => !x.Approved && !x.Available && !(x.Denied ?? false)); break; default: throw new ArgumentOutOfRangeException(); } var total = allRequests.Count(); var requests = await(OrderMovies(allRequests, orderFilter.OrderType)).Skip(position).Take(count) .ToListAsync(); requests.ForEach(async x => { x.PosterPath = PosterPathHelper.FixPosterPath(x.PosterPath); await CheckForSubscription(shouldHide, x); }); return(new RequestsViewModel <MovieRequests> { Collection = requests, Total = total }); }
public string PostPathTest(string posterPath) { return(PosterPathHelper.FixPosterPath(posterPath)); }