Example #1
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)
            {
                await NotificationHelper.Notify(request, NotificationType.RequestApproved);

                // Autosend
                await TvSender.Send(request);
            }
            return(new RequestEngineResult
            {
                Result = true
            });
        }
Example #2
0
        public async Task <RequestEngineResult> DenyChildRequest(int requestId, string reason)
        {
            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;
            request.DeniedReason = reason;
            await TvRepository.UpdateChild(request);

            await NotificationHelper.Notify(request, NotificationType.RequestDeclined);

            return(new RequestEngineResult
            {
                Result = true
            });
        }
Example #3
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 #4
0
 public async Task <bool> UserHasRequest(string userId)
 {
     return(await TvRepository.GetChild().AnyAsync(x => x.RequestedUserId == userId));
 }
Example #5
0
        public async Task <RequestsViewModel <ChildRequests> > GetRequests(int count, int position, string sortProperty, string sortOrder, RequestStatus status)
        {
            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();
            }

            switch (status)
            {
            case RequestStatus.PendingApproval:
                allRequests = allRequests.Where(x => !x.Approved && !x.Available && (!x.Denied.HasValue || !x.Denied.Value)).ToList();
                break;

            case RequestStatus.ProcessingRequest:
                allRequests = allRequests.Where(x => x.Approved && !x.Available && (!x.Denied.HasValue || !x.Denied.Value)).ToList();
                break;

            case RequestStatus.Available:
                allRequests = allRequests.Where(x => x.Available && (!x.Denied.HasValue || !x.Denied.Value)).ToList();
                break;

            case RequestStatus.Denied:
                allRequests = allRequests.Where(x => x.Denied.HasValue && x.Denied.Value).ToList();
                break;

            default:
                break;
            }

            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
 public async Task <IEnumerable <ChildRequests> > GetAllChldren(int tvId)
 {
     return(await TvRepository.GetChild().Include(x => x.SeasonRequests).Where(x => x.ParentRequestId == tvId).ToListAsync());
 }