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