Example #1
0
        public async Task UpdateRootPath(int requestId, int rootPath)
        {
            var allRequests = TvRepository.Get();
            var results     = await allRequests.FirstOrDefaultAsync(x => x.Id == requestId);

            results.RootFolder = rootPath;

            await TvRepository.Update(results);
        }
Example #2
0
        public async Task UpdateQualityProfile(int requestId, int profileId)
        {
            var allRequests = TvRepository.Get();
            var results     = await allRequests.FirstOrDefaultAsync(x => x.Id == requestId);

            results.QualityOverride = profileId;

            await TvRepository.Update(results);
        }
Example #3
0
        private async Task <RequestEngineResult> AddExistingRequest(ChildRequests newRequest, TvRequests existingRequest)
        {
            // Add the child
            existingRequest.ChildRequests.Add(newRequest);

            await TvRepository.Update(existingRequest);

            return(await AfterRequest(newRequest));
        }
Example #4
0
        public async Task <IEnumerable <TreeNode <TvRequests, List <ChildRequests> > > > GetRequestsTreeNode(int count, int position)
        {
            var allRequests = await TvRepository.Get()
                              .Include(x => x.ChildRequests)
                              .ThenInclude(x => x.SeasonRequests)
                              .ThenInclude(x => x.Episodes)
                              .Skip(position).Take(count).ToListAsync();

            return(ParseIntoTreeNode(allRequests));
        }
Example #5
0
        public async Task <RequestsViewModel <ChildRequests> > GetRequests(int count, int position, string sortProperty, string sortOrder)
        {
            var shouldHide = await HideFromOtherUsers();

            List <ChildRequests> allRequests;

            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.GetChild(shouldHide.UserId).ToListAsync();

                // Filter out children

                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                allRequests = await TvRepository.GetChild().ToListAsync();
            }

            if (allRequests == null)
            {
                return(new RequestsViewModel <ChildRequests>());
            }

            var total = allRequests.Count;


            var prop = TypeDescriptor.GetProperties(typeof(ChildRequests)).Find(sortProperty, true);

            if (sortProperty.Contains('.'))
            {
                // This is a navigation property currently not supported
                prop = TypeDescriptor.GetProperties(typeof(ChildRequests)).Find("Title", true);
                //var properties = sortProperty.Split(new []{'.'}, StringSplitOptions.RemoveEmptyEntries);
                //var firstProp = TypeDescriptor.GetProperties(typeof(MovieRequests)).Find(properties[0], true);
                //var propType = firstProp.PropertyType;
                //var secondProp = TypeDescriptor.GetProperties(propType).Find(properties[1], true);
            }
            allRequests = sortOrder.Equals("asc", StringComparison.InvariantCultureIgnoreCase)
                ? allRequests.OrderBy(x => prop.GetValue(x)).ToList()
                : allRequests.OrderByDescending(x => prop.GetValue(x)).ToList();

            await CheckForSubscription(shouldHide, allRequests);

            // Make sure we do not show duplicate child requests
            allRequests = allRequests.DistinctBy(x => x.ParentRequest.Title).ToList();

            allRequests = allRequests.Skip(position).Take(count).ToList();

            return(new RequestsViewModel <ChildRequests>
            {
                Collection = allRequests,
                Total = total,
            });
        }
Example #6
0
 /// <summary>
 /// Loads the TV or Movie Request
 /// </summary>
 /// <param name="requestId"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 protected virtual async Task LoadRequest(int requestId, RequestType type)
 {
     if (type == RequestType.Movie)
     {
         MovieRequest = await MovieRepository.GetWithUser().FirstOrDefaultAsync(x => x.Id == requestId);
     }
     else
     {
         TvRequest = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId);
     }
 }
Example #7
0
        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);

            await TvRepository.Update(results);

            return(results);
        }
Example #8
0
        public async Task <int> GetTotal()
        {
            var shouldHide = await HideFromOtherUsers();

            if (shouldHide.Hide)
            {
                return(await TvRepository.Get(shouldHide.UserId).CountAsync());
            }
            else
            {
                return(await TvRepository.Get().CountAsync());
            }
        }
Example #9
0
 public async Task<IEnumerable<TreeNode<TvRequests, List<ChildRequests>>>> SearchTvRequestTree(string search)
 {
     var shouldHide = await HideFromOtherUsers();
     IQueryable<TvRequests> allRequests;
     if (shouldHide.Hide)
     {
         allRequests = TvRepository.Get(shouldHide.UserId);
     }
     else
     {
         allRequests = TvRepository.Get();
     }
     var results = await allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToListAsync();
     return ParseIntoTreeNode(results);
 }
Example #10
0
        public async Task<IEnumerable<ChildRequests>> GetAllChldren(int tvId)
        {
            var shouldHide = await HideFromOtherUsers();
            List<ChildRequests> allRequests;
            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.GetChild(shouldHide.UserId).Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync();
            }
            else
            {
                allRequests = await TvRepository.GetChild().Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync();
            }

            return allRequests;
        }
Example #11
0
        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;
        }
Example #12
0
        public async Task <RequestEngineResult> ReProcessRequest(int requestId, bool is4K, CancellationToken cancellationToken)
        {
            var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId, cancellationToken);

            if (request == null)
            {
                return(new RequestEngineResult
                {
                    Result = false,
                    ErrorCode = ErrorCode.RequestDoesNotExist,
                    ErrorMessage = "Request does not exist"
                });
            }

            return(await ProcessSendingShow(request));
        }
Example #13
0
        public async Task<IEnumerable<TvRequests>> GetRequests()
        {
            var shouldHide = await HideFromOtherUsers();
            IQueryable<TvRequests> allRequests;
            if (shouldHide.Hide)
            {
                allRequests = TvRepository.Get(shouldHide.UserId);

                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                allRequests = TvRepository.Get();
            }

            return await allRequests.ToListAsync();
        }
Example #14
0
        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);
        }
Example #15
0
        public async Task RemoveTvChild(int requestId)
        {
            var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId);

            TvRepository.Db.ChildRequests.Remove(request);
            var all    = TvRepository.Db.TvRequests.Include(x => x.ChildRequests);
            var parent = all.FirstOrDefault(x => x.Id == request.ParentRequestId);

            // Is this the only child? If so delete the parent
            if (parent.ChildRequests.Count <= 1)
            {
                // Delete the parent
                TvRepository.Db.TvRequests.Remove(parent);
            }

            await TvRepository.Db.SaveChangesAsync();
        }
Example #16
0
        private async Task <RequestEngineResult> AddExistingRequest(ChildRequests newRequest, TvRequests existingRequest, string requestOnBehalf, int rootFolder, int qualityProfile)
        {
            // Add the child
            existingRequest.ChildRequests.Add(newRequest);
            if (qualityProfile > 0)
            {
                existingRequest.QualityOverride = qualityProfile;
            }
            if (rootFolder > 0)
            {
                existingRequest.RootFolder = rootFolder;
            }

            await TvRepository.Update(existingRequest);

            return(await AfterRequest(newRequest, requestOnBehalf));
        }
Example #17
0
 public async Task<RequestEngineResult> DenyChildRequest(int requestId)
 {
     var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId);
     if (request == null)
     {
         return new RequestEngineResult
         {
             ErrorMessage = "Child Request does not exist"
         };
     }
     request.Denied = true;
     await TvRepository.UpdateChild(request);
     NotificationHelper.Notify(request, NotificationType.RequestDeclined);
     return new RequestEngineResult
     {
         Result = true
     };
 }
Example #18
0
        public async Task RemoveTvChild(int requestId)
        {
            var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == requestId);

            TvRepository.Db.ChildRequests.Remove(request);
            var all    = TvRepository.Db.TvRequests.Include(x => x.ChildRequests);
            var parent = all.FirstOrDefault(x => x.Id == request.ParentRequestId);

            // Is this the only child? If so delete the parent
            if (parent.ChildRequests.Count <= 1)
            {
                // Delete the parent
                TvRepository.Db.TvRequests.Remove(parent);
            }
            await Audit.Record(AuditType.Deleted, AuditArea.TvRequest, $"Deleting Request {request.Title}", Username);

            await TvRepository.Db.SaveChangesAsync();
        }
Example #19
0
        public async Task <RequestEngineResult> ApproveChildRequest(int id)
        {
            var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == id);

            if (request == null)
            {
                return(new RequestEngineResult
                {
                    ErrorCode = ErrorCode.ChildRequestDoesNotExist,
                    ErrorMessage = "Child Request does not exist"
                });
            }
            request.Approved = true;
            request.Denied   = false;

            foreach (var s in request.SeasonRequests)
            {
                foreach (var ep in s.Episodes)
                {
                    ep.Approved  = true;
                    ep.Requested = true;
                }
            }

            await TvRepository.UpdateChild(request);

            await _mediaCacheService.Purge();

            if (request.Approved)
            {
                var canNotify = await RunSpecificRule(request, SpecificRules.CanSendNotification, string.Empty);

                if (canNotify.Success)
                {
                    await NotificationHelper.Notify(request, NotificationType.RequestApproved);
                }
                // Autosend
                await TvSender.Send(request);
            }
            return(new RequestEngineResult
            {
                Result = true
            });
        }
Example #20
0
        public async Task <IEnumerable <TvRequests> > SearchTvRequest(string search)
        {
            var shouldHide = await HideFromOtherUsers();

            IQueryable <TvRequests> allRequests;

            if (shouldHide.Hide)
            {
                allRequests = TvRepository.Get(shouldHide.UserId);
            }
            else
            {
                allRequests = TvRepository.Get();
            }
            var results = await allRequests.Where(x => x.Title.Contains(search, CompareOptions.IgnoreCase)).ToListAsync();

            results.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
            return(results);
        }
Example #21
0
        public async Task <IEnumerable <ChildRequests> > GetAllChldren(int tvId)
        {
            var shouldHide = await HideFromOtherUsers();

            List <ChildRequests> allRequests;

            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.GetChild(shouldHide.UserId).Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync();
            }
            else
            {
                allRequests = await TvRepository.GetChild().Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync();
            }

            allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });

            return(allRequests);
        }
Example #22
0
        public async Task <IEnumerable <TvRequests> > GetRequests()
        {
            var shouldHide = await HideFromOtherUsers();

            List <TvRequests> allRequests;

            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.Get(shouldHide.UserId).ToListAsync();

                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                allRequests = await TvRepository.Get().ToListAsync();
            }

            allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });
            return(allRequests);
        }
Example #23
0
        public async Task <TvRequests> GetTvRequest(int requestId)
        {
            var shouldHide = await HideFromOtherUsers();

            TvRequests request;

            if (shouldHide.Hide)
            {
                request = await TvRepository.Get(shouldHide.UserId).Where(x => x.Id == requestId).FirstOrDefaultAsync();

                FilterChildren(request, shouldHide);
            }
            else
            {
                request = await TvRepository.Get().Where(x => x.Id == requestId).FirstOrDefaultAsync();
            }

            await CheckForSubscription(shouldHide, request);

            return(request);
        }
Example #24
0
        public async Task <RequestEngineResult> ApproveChildRequest(int id)
        {
            var request = await TvRepository.GetChild().FirstOrDefaultAsync(x => x.Id == id);

            if (request == null)
            {
                return(new RequestEngineResult
                {
                    ErrorMessage = "Child Request does not exist"
                });
            }
            request.Approved = true;
            request.Denied   = false;

            foreach (var s in request.SeasonRequests)
            {
                foreach (var ep in s.Episodes)
                {
                    ep.Approved  = true;
                    ep.Requested = true;
                }
            }

            await TvRepository.UpdateChild(request);

            if (request.Approved)
            {
                NotificationHelper.Notify(request, NotificationType.RequestApproved);
                await Audit.Record(AuditType.Approved, AuditArea.TvRequest, $"Approved Request {request.Title}", Username);

                // Autosend
                await TvSender.Send(request);
            }
            return(new RequestEngineResult
            {
                Result = true
            });
        }
Example #25
0
        public async Task <RequestsViewModel <TvRequests> > GetRequestsLite(int count, int position, OrderFilterModel type)
        {
            var shouldHide = await HideFromOtherUsers();

            List <TvRequests> allRequests = null;

            if (shouldHide.Hide)
            {
                var tv = TvRepository.GetLite(shouldHide.UserId);
                if (tv.Any() && tv.Select(x => x.ChildRequests).Any())
                {
                    allRequests = await tv.OrderByDescending(x => x.ChildRequests.Select(y => y.RequestedDate).FirstOrDefault()).Skip(position).Take(count).ToListAsync();
                }

                // Filter out children
                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                var tv = TvRepository.GetLite();
                if (tv.Any() && tv.Select(x => x.ChildRequests).Any())
                {
                    allRequests = await tv.OrderByDescending(x => x.ChildRequests.Select(y => y.RequestedDate).FirstOrDefault()).Skip(position).Take(count).ToListAsync();
                }
            }
            if (allRequests == null)
            {
                return(new RequestsViewModel <TvRequests>());
            }

            await CheckForSubscription(shouldHide, allRequests);

            return(new RequestsViewModel <TvRequests>
            {
                Collection = allRequests
            });
        }
Example #26
0
        public async Task <RequestsViewModel <TvRequests> > GetRequests(int count, int position, OrderFilterModel type)
        {
            var shouldHide = await HideFromOtherUsers();

            List <TvRequests> allRequests;

            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.Get(shouldHide.UserId)
                              .Include(x => x.ChildRequests)
                              .ThenInclude(x => x.SeasonRequests)
                              .ThenInclude(x => x.Episodes)
                              .OrderByDescending(x => x.ChildRequests.Max(y => y.RequestedDate))
                              .Skip(position).Take(count).ToListAsync();

                // Filter out children

                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                allRequests = await TvRepository.Get()
                              .Include(x => x.ChildRequests)
                              .ThenInclude(x => x.SeasonRequests)
                              .ThenInclude(x => x.Episodes)
                              .OrderByDescending(x => x.ChildRequests.Max(y => y.RequestedDate))
                              .Skip(position).Take(count).ToListAsync();
            }

            allRequests.ForEach(async r => { await CheckForSubscription(shouldHide, r); });

            return(new RequestsViewModel <TvRequests>
            {
                Collection = allRequests
            });
        }
Example #27
0
        public async Task<IEnumerable<TreeNode<TvRequests, List<ChildRequests>>>> GetRequestsTreeNode(int count, int position)
        {
            var shouldHide = await HideFromOtherUsers();
            List<TvRequests> allRequests;
            if (shouldHide.Hide)
            {
                allRequests = await TvRepository.Get(shouldHide.UserId)
                    .Include(x => x.ChildRequests)
                    .ThenInclude(x => x.SeasonRequests)
                    .ThenInclude(x => x.Episodes)
                    .Skip(position).Take(count).ToListAsync();

                FilterChildren(allRequests, shouldHide);
            }
            else
            {
                allRequests = await TvRepository.Get()
                    .Include(x => x.ChildRequests)
                    .ThenInclude(x => x.SeasonRequests)
                    .ThenInclude(x => x.Episodes)
                    .Skip(position).Take(count).ToListAsync();
            }
            return ParseIntoTreeNode(allRequests);
        }
Example #28
0
        public async Task <RequestEngineResult> RequestTvShow(TvRequestViewModel tv)
        {
            var user = await GetUser();

            var canRequestOnBehalf = false;

            if (tv.RequestOnBehalf.HasValue())
            {
                canRequestOnBehalf = await UserManager.IsInRoleAsync(user, OmbiRoles.PowerUser) || await UserManager.IsInRoleAsync(user, OmbiRoles.Admin);

                if (!canRequestOnBehalf)
                {
                    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!"
                    });
                }
            }

            var tvBuilder = new TvShowRequestBuilder(TvApi, MovieDbApi, _logger);

            (await tvBuilder
             .GetShowInfo(tv.TvDbId))
            .CreateTvList(tv)
            .CreateChild(tv, canRequestOnBehalf ? tv.RequestOnBehalf : user.Id);

            await tvBuilder.BuildEpisodes(tv);

            var ruleResults = await RunRequestRules(tvBuilder.ChildRequest);

            var results = ruleResults as RuleResult[] ?? ruleResults.ToArray();

            if (results.Any(x => !x.Success))
            {
                return(new RequestEngineResult
                {
                    ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
                });
            }

            // Check if we have auto approved the request, if we have then mark the episodes as approved
            if (tvBuilder.ChildRequest.Approved)
            {
                foreach (var seasons in tvBuilder.ChildRequest.SeasonRequests)
                {
                    foreach (var ep in seasons.Episodes)
                    {
                        ep.Approved  = true;
                        ep.Requested = true;
                    }
                }
            }

            var existingRequest = await TvRepository.Get().FirstOrDefaultAsync(x => x.TvDbId == tv.TvDbId);

            if (existingRequest != null)
            {
                // Remove requests we already have, we just want new ones
                foreach (var existingSeason in existingRequest.ChildRequests)
                {
                    foreach (var existing in existingSeason.SeasonRequests)
                    {
                        var newChild = tvBuilder.ChildRequest.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == existing.SeasonNumber);
                        if (newChild != null)
                        {
                            // We have some requests in this season...
                            // Let's find the episodes.
                            foreach (var existingEp in existing.Episodes)
                            {
                                var duplicateEpisode = newChild.Episodes.FirstOrDefault(x => x.EpisodeNumber == existingEp.EpisodeNumber);
                                if (duplicateEpisode != null)
                                {
                                    // Remove it.
                                    newChild.Episodes.Remove(duplicateEpisode);
                                }
                            }
                            if (!newChild.Episodes.Any())
                            {
                                // We may have removed all episodes
                                tvBuilder.ChildRequest.SeasonRequests.Remove(newChild);
                            }
                        }
                    }
                }

                // Remove the ID since this is a new child
                // This was a TVDBID for the request rules to run
                tvBuilder.ChildRequest.Id = 0;
                if (!tvBuilder.ChildRequest.SeasonRequests.Any())
                {
                    // Looks like we have removed them all! They were all duplicates...
                    return(new RequestEngineResult
                    {
                        Result = false,
                        ErrorCode = ErrorCode.AlreadyRequested,
                        ErrorMessage = "This has already been requested"
                    });
                }
                return(await AddExistingRequest(tvBuilder.ChildRequest, existingRequest, tv.RequestOnBehalf, tv.RootFolderOverride.GetValueOrDefault(), tv.QualityPathOverride.GetValueOrDefault()));
            }

            // This is a new request
            var newRequest = tvBuilder.CreateNewRequest(tv);

            return(await AddRequest(newRequest.NewRequest, tv.RequestOnBehalf));
        }
Example #29
0
        public async Task <RequestEngineResult> RequestTvShow(TvRequestViewModel tv)
        {
            var user = await GetUser();

            var tvBuilder = new TvShowRequestBuilder(TvApi, MovieDbApi);

            (await tvBuilder
             .GetShowInfo(tv.TvDbId))
            .CreateTvList(tv)
            .CreateChild(tv, user.Id);

            await tvBuilder.BuildEpisodes(tv);

            var ruleResults = await RunRequestRules(tvBuilder.ChildRequest);

            var results = ruleResults as RuleResult[] ?? ruleResults.ToArray();

            if (results.Any(x => !x.Success))
            {
                return(new RequestEngineResult
                {
                    ErrorMessage = results.FirstOrDefault(x => !string.IsNullOrEmpty(x.Message)).Message
                });
            }

            // Check if we have auto approved the request, if we have then mark the episodes as approved
            if (tvBuilder.ChildRequest.Approved)
            {
                foreach (var seasons in tvBuilder.ChildRequest.SeasonRequests)
                {
                    foreach (var ep in seasons.Episodes)
                    {
                        ep.Approved  = true;
                        ep.Requested = true;
                    }
                }
            }

            await Audit.Record(AuditType.Added, AuditArea.TvRequest, $"Added Request {tvBuilder.ChildRequest.Title}", Username);

            var existingRequest = await TvRepository.Get().FirstOrDefaultAsync(x => x.TvDbId == tv.TvDbId);

            if (existingRequest != null)
            {
                // Remove requests we already have, we just want new ones
                foreach (var existingSeason in existingRequest.ChildRequests)
                {
                    foreach (var existing in existingSeason.SeasonRequests)
                    {
                        var newChild = tvBuilder.ChildRequest.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == existing.SeasonNumber);
                        if (newChild != null)
                        {
                            // We have some requests in this season...
                            // Let's find the episodes.
                            foreach (var existingEp in existing.Episodes)
                            {
                                var duplicateEpisode = newChild.Episodes.FirstOrDefault(x => x.EpisodeNumber == existingEp.EpisodeNumber);
                                if (duplicateEpisode != null)
                                {
                                    // Remove it.
                                    newChild.Episodes.Remove(duplicateEpisode);
                                }
                            }
                            if (!newChild.Episodes.Any())
                            {
                                // We may have removed all episodes
                                tvBuilder.ChildRequest.SeasonRequests.Remove(newChild);
                            }
                        }
                    }
                }

                // Remove the ID since this is a new child
                tvBuilder.ChildRequest.Id = 0;
                if (!tvBuilder.ChildRequest.SeasonRequests.Any())
                {
                    // Looks like we have removed them all! They were all duplicates...
                    return(new RequestEngineResult
                    {
                        Result = false,
                        ErrorMessage = "This has already been requested"
                    });
                }
                return(await AddExistingRequest(tvBuilder.ChildRequest, existingRequest));
            }

            // This is a new request
            var newRequest = tvBuilder.CreateNewRequest(tv);

            return(await AddRequest(newRequest.NewRequest));
        }
Example #30
0
 public async Task <bool> UserHasRequest(string userId)
 {
     return(await TvRepository.GetChild().AnyAsync(x => x.RequestedUserId == userId));
 }