Added a filter onto the movies requests page for some inital feedback

This commit is contained in:
Jamie 2018-01-23 14:19:50 +00:00
parent 8621a754f5
commit 71ff8fe301
14 changed files with 276 additions and 88 deletions

View file

@ -17,5 +17,6 @@ namespace Ombi.Core.Engine.Interfaces
Task<RequestEngineResult> ApproveMovie(MovieRequests request);
Task<RequestEngineResult> ApproveMovieById(int requestId);
Task<RequestEngineResult> DenyMovieById(int modelId);
IEnumerable<MovieRequests> Filter(FilterViewModel vm);
}
}

View file

@ -335,22 +335,41 @@ namespace Ombi.Core.Engine
return new RequestEngineResult { Result = true, Message = $"{movieName} has been successfully added!" };
}
public async Task<IEnumerable<MovieRequests>> GetApprovedRequests()
public IEnumerable<MovieRequests> Filter(FilterViewModel vm)
{
var allRequests = MovieRepository.GetWithUser();
return await allRequests.Where(x => x.Approved && !x.Available).ToListAsync();
}
var requests = MovieRepository.GetWithUser();
switch (vm.AvailabilityFilter)
{
case FilterType.None:
break;
case FilterType.Available:
requests = requests.Where(x => x.Available);
break;
case FilterType.NotAvailable:
requests = requests.Where(x => !x.Available);
break;
default:
throw new ArgumentOutOfRangeException();
}
public async Task<IEnumerable<MovieRequests>> GetNewRequests()
{
var allRequests = MovieRepository.GetWithUser();
return await allRequests.Where(x => !x.Approved && !x.Available).ToListAsync();
}
switch (vm.StatusFilter)
{
case FilterType.None:
break;
case FilterType.Approved:
requests = requests.Where(x => x.Approved);
break;
case FilterType.Processing:
requests = requests.Where(x => x.Approved && !x.Available);
break;
case FilterType.PendingApproval:
requests = requests.Where(x => !x.Approved && !x.Available && !(x.Denied ?? false));
break;
default:
throw new ArgumentOutOfRangeException();
}
public async Task<IEnumerable<MovieRequests>> GetAvailableRequests()
{
var allRequests = MovieRepository.GetWithUser();
return await allRequests.Where(x => !x.Approved && x.Available).ToListAsync();
return requests;
}
}
}

View file

@ -0,0 +1,18 @@
namespace Ombi.Core.Models.Requests
{
public class FilterViewModel
{
public FilterType AvailabilityFilter { get; set; }
public FilterType StatusFilter { get; set; }
}
public enum FilterType
{
None = 0,
Available = 1,
NotAvailable = 2,
Approved = 3,
Processing = 4,
PendingApproval = 5
}
}