mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-11 07:46:05 -07:00
Added in deletion of requests
This commit is contained in:
parent
cedd58f372
commit
754ace42b0
7 changed files with 103 additions and 75 deletions
|
@ -24,20 +24,18 @@ namespace RequestPlex.UI
|
||||||
|
|
||||||
protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
|
protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
|
||||||
{
|
{
|
||||||
|
|
||||||
container.Register<IUserMapper, UserMapper>();
|
container.Register<IUserMapper, UserMapper>();
|
||||||
base.ConfigureRequestContainer(container, context);
|
|
||||||
|
|
||||||
container.Register<ISqliteConfiguration, DbConfiguration>(new DbConfiguration(new SqliteFactory()));
|
container.Register<ISqliteConfiguration, DbConfiguration>(new DbConfiguration(new SqliteFactory()));
|
||||||
|
|
||||||
container.Register<ISettingsRepository, JsonRepository>();
|
container.Register<ISettingsRepository, JsonRepository>();
|
||||||
container.Register<ICacheProvider, MemoryCacheProvider>();
|
container.Register<ICacheProvider, MemoryCacheProvider>();
|
||||||
|
|
||||||
|
|
||||||
container.Register<ISettingsService<RequestPlexSettings>, SettingsServiceV2<RequestPlexSettings>>();
|
container.Register<ISettingsService<RequestPlexSettings>, SettingsServiceV2<RequestPlexSettings>>();
|
||||||
container.Register<ISettingsService<CouchPotatoSettings>, SettingsServiceV2<CouchPotatoSettings>>();
|
container.Register<ISettingsService<CouchPotatoSettings>, SettingsServiceV2<CouchPotatoSettings>>();
|
||||||
container.Register<IRepository<RequestedModel>, GenericRepository<RequestedModel>>();
|
container.Register<IRepository<RequestedModel>, GenericRepository<RequestedModel>>();
|
||||||
|
|
||||||
|
base.ConfigureRequestContainer(container, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
|
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
|
||||||
|
|
|
@ -13,6 +13,34 @@ var tvimer = 0;
|
||||||
movieLoad();
|
movieLoad();
|
||||||
tvLoad();
|
tvLoad();
|
||||||
|
|
||||||
|
$(document).on("click", ".delete", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var buttonId = e.target.id;
|
||||||
|
var $form = $('#form' + buttonId);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: $form.prop('method'),
|
||||||
|
url: $form.prop('action'),
|
||||||
|
data: $form.serialize(),
|
||||||
|
dataType: "json",
|
||||||
|
success: function (response) {
|
||||||
|
console.log(response);
|
||||||
|
if (response.result === true) {
|
||||||
|
generateNotify("Success!", "success");
|
||||||
|
|
||||||
|
$("#" + buttonId + "Template").html("");
|
||||||
|
} else {
|
||||||
|
generateNotify(response.message, "warning");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
console.log(e);
|
||||||
|
generateNotify("Something went wrong!", "danger");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
function movieLoad() {
|
function movieLoad() {
|
||||||
$("#movieList").html("");
|
$("#movieList").html("");
|
||||||
|
|
|
@ -21,17 +21,16 @@ $("#tvSearchContent").keypress(function (e) {
|
||||||
if (tvimer) {
|
if (tvimer) {
|
||||||
clearTimeout(tvimer);
|
clearTimeout(tvimer);
|
||||||
}
|
}
|
||||||
tvimer = setTimeout(tvSearch(), 400);
|
tvimer = setTimeout(tvSearch, 400);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Click TV dropdown option
|
||||||
$(document).on("click", ".dropdownTv", function (e) {
|
$(document).on("click", ".dropdownTv", function (e) {
|
||||||
|
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
console.log(e.target.id);
|
var buttonId = e.target.id;
|
||||||
var $form = $('#form'+e.target.id);
|
var $form = $('#form' + buttonId);
|
||||||
var data = $form.serialize();
|
var data = $form.serialize();
|
||||||
var seasons = $(this).attr("season-select");
|
var seasons = $(this).attr("season-select");
|
||||||
console.log(data);
|
|
||||||
if (seasons === "1") {
|
if (seasons === "1") {
|
||||||
data = data + "&latest=true";
|
data = data + "&latest=true";
|
||||||
}
|
}
|
||||||
|
@ -45,6 +44,10 @@ $(document).on("click", ".dropdownTv", function (e) {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
if (response.result === true) {
|
if (response.result === true) {
|
||||||
generateNotify("Success!", "success");
|
generateNotify("Success!", "success");
|
||||||
|
|
||||||
|
$('#' + buttonId).html("<i class='fa fa-check'></i> Requested <span class='caret'></span>");
|
||||||
|
$('#' + buttonId).removeClass("btn-primary");
|
||||||
|
$('#' + buttonId).addClass("btn-success");
|
||||||
} else {
|
} else {
|
||||||
generateNotify(response.message, "warning");
|
generateNotify(response.message, "warning");
|
||||||
}
|
}
|
||||||
|
@ -57,10 +60,11 @@ $(document).on("click", ".dropdownTv", function (e) {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Click Request for movie
|
||||||
$(document).on("click", ".requestMovie", function (e) {
|
$(document).on("click", ".requestMovie", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
console.log(e.target.id);
|
var buttonId = e.target.id;
|
||||||
var $form = $('#form' + e.target.id);
|
var $form = $('#form' + buttonId);
|
||||||
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: $form.prop('method'),
|
type: $form.prop('method'),
|
||||||
|
@ -71,6 +75,10 @@ $(document).on("click", ".requestMovie", function (e) {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
if (response.result === true) {
|
if (response.result === true) {
|
||||||
generateNotify("Success!", "success");
|
generateNotify("Success!", "success");
|
||||||
|
|
||||||
|
$('#' + buttonId).html("<i class='fa fa-check'></i> Requested");
|
||||||
|
$('#' + buttonId).removeClass("btn-primary");
|
||||||
|
$('#' + buttonId).addClass("btn-success");
|
||||||
} else {
|
} else {
|
||||||
generateNotify(response.message, "warning");
|
generateNotify(response.message, "warning");
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,13 +13,18 @@ namespace RequestPlex.UI.Modules
|
||||||
public class RequestsModule : NancyModule
|
public class RequestsModule : NancyModule
|
||||||
{
|
{
|
||||||
private IRepository<RequestedModel> Service { get; set; }
|
private IRepository<RequestedModel> Service { get; set; }
|
||||||
public RequestsModule(IRepository<RequestedModel> service)
|
public RequestsModule(IRepository<RequestedModel> service) : base("requests")
|
||||||
{
|
{
|
||||||
Service = service;
|
Service = service;
|
||||||
|
|
||||||
Get["requests/"] = _ => LoadRequests();
|
Get["/"] = _ => LoadRequests();
|
||||||
Get["requests/movies"] = _ => GetMovies();
|
Get["/movies"] = _ => GetMovies();
|
||||||
Get["requests/tvshows"] = _ => GetTvShows();
|
Get["/tvshows"] = _ => GetTvShows();
|
||||||
|
Post["/delete"] = _ =>
|
||||||
|
{
|
||||||
|
var convertedType = (string)Request.Form.type == "movie" ? RequestType.Movie : RequestType.TvShow;
|
||||||
|
return Delete((int)Request.Form.id, convertedType);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,5 +44,12 @@ namespace RequestPlex.UI.Modules
|
||||||
var dbTv = Service.GetAll().Where(x => x.Type == RequestType.TvShow);
|
var dbTv = Service.GetAll().Where(x => x.Type == RequestType.TvShow);
|
||||||
return Response.AsJson(dbTv);
|
return Response.AsJson(dbTv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Response Delete(int tmdbId, RequestType type)
|
||||||
|
{
|
||||||
|
var currentEntity = Service.GetAll().FirstOrDefault(x => x.Tmdbid == tmdbId && x.Type == type);
|
||||||
|
Service.Delete(currentEntity);
|
||||||
|
return Response.AsJson(new { Result = true });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -9,38 +9,21 @@ namespace RequestPlex.UI.Modules
|
||||||
{
|
{
|
||||||
public class SearchModule : NancyModule
|
public class SearchModule : NancyModule
|
||||||
{
|
{
|
||||||
public SearchModule()
|
public SearchModule() : base("search")
|
||||||
{
|
{
|
||||||
Get["search/"] = parameters => RequestLoad();
|
Api = new TheMovieDbApi();
|
||||||
|
Get["/"] = parameters => RequestLoad();
|
||||||
|
|
||||||
Get["search/movie/{searchTerm}"] = parameters =>
|
Get["movie/{searchTerm}"] = parameters => SearchMovie((string)parameters.searchTerm);
|
||||||
{
|
Get["tv/{searchTerm}"] = parameters => SearchTvShow((string)parameters.searchTerm);
|
||||||
var search = (string)parameters.searchTerm;
|
|
||||||
return SearchMovie(search);
|
|
||||||
};
|
|
||||||
|
|
||||||
Get["search/tv/{searchTerm}"] = parameters =>
|
Get["movie/upcoming"] = parameters => UpcomingMovies();
|
||||||
{
|
Get["movie/playing"] = parameters => CurrentlyPlayingMovies();
|
||||||
var search = (string)parameters.searchTerm;
|
|
||||||
return SearchTvShow(search);
|
|
||||||
};
|
|
||||||
|
|
||||||
Get["search/movie/upcoming"] = parameters => UpcomingMovies();
|
Post["request/movie"] = parameters => RequestMovie((int)Request.Form.movieId);
|
||||||
Get["search/movie/playing"] = parameters => CurrentlyPlayingMovies();
|
Post["request/tv"] = parameters => RequestTvShow((int)Request.Form.tvId, (bool)Request.Form.latest);
|
||||||
|
|
||||||
Post["search/request/movie"] = parameters =>
|
|
||||||
{
|
|
||||||
var movieId = (int)Request.Form.movieId;
|
|
||||||
return RequestMovie(movieId);
|
|
||||||
};
|
|
||||||
|
|
||||||
Post["search/request/tv"] = parameters =>
|
|
||||||
{
|
|
||||||
var tvShowId = (int)Request.Form.tvId;
|
|
||||||
var latest = (bool)Request.Form.latest;
|
|
||||||
return RequestTvShow(tvShowId, latest);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
private TheMovieDbApi Api { get; }
|
||||||
|
|
||||||
private Negotiator RequestLoad()
|
private Negotiator RequestLoad()
|
||||||
{
|
{
|
||||||
|
@ -49,32 +32,28 @@ namespace RequestPlex.UI.Modules
|
||||||
|
|
||||||
private Response SearchMovie(string searchTerm)
|
private Response SearchMovie(string searchTerm)
|
||||||
{
|
{
|
||||||
var api = new TheMovieDbApi();
|
var movies = Api.SearchMovie(searchTerm);
|
||||||
var movies = api.SearchMovie(searchTerm);
|
|
||||||
var result = movies.Result;
|
var result = movies.Result;
|
||||||
return Response.AsJson(result);
|
return Response.AsJson(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response SearchTvShow(string searchTerm)
|
private Response SearchTvShow(string searchTerm)
|
||||||
{
|
{
|
||||||
var api = new TheMovieDbApi();
|
var tvShow = Api.SearchTv(searchTerm);
|
||||||
var tvShow = api.SearchTv(searchTerm);
|
|
||||||
var result = tvShow.Result;
|
var result = tvShow.Result;
|
||||||
return Response.AsJson(result);
|
return Response.AsJson(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response UpcomingMovies()
|
private Response UpcomingMovies()
|
||||||
{
|
{
|
||||||
var api = new TheMovieDbApi();
|
var movies = Api.GetUpcomingMovies();
|
||||||
var movies = api.GetUpcomingMovies();
|
|
||||||
var result = movies.Result;
|
var result = movies.Result;
|
||||||
return Response.AsJson(result);
|
return Response.AsJson(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Response CurrentlyPlayingMovies()
|
private Response CurrentlyPlayingMovies()
|
||||||
{
|
{
|
||||||
var api = new TheMovieDbApi();
|
var movies = Api.GetCurrentPlayingMovies();
|
||||||
var movies = api.GetCurrentPlayingMovies();
|
|
||||||
var result = movies.Result;
|
var result = movies.Result;
|
||||||
return Response.AsJson(result);
|
return Response.AsJson(result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
|
|
||||||
|
|
||||||
<script id="search-template" type="text/x-handlebars-template">
|
<script id="search-template" type="text/x-handlebars-template">
|
||||||
|
<div id="{{id}}Template">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-2">
|
<div class="col-sm-2">
|
||||||
{{#if posterPath}}
|
{{#if posterPath}}
|
||||||
|
@ -51,14 +52,16 @@
|
||||||
<span class="label label-success">{{status}}</span>
|
<span class="label label-success">{{status}}</span>
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
<form method="POST" action="/search/request/{{type}}" id="form{{id}}">
|
<form method="POST" action="/requests/delete" id="form{{id}}">
|
||||||
<input name="{{type}}Id" type="text" value="{{id}}" hidden="hidden" />
|
<input name="Id" type="text" value="{{id}}" hidden="hidden" />
|
||||||
<button id="{{id}}" style="text-align: right" class="btn btn-danger" type="submit"><i class="fa fa-plus"></i> Remove</button>
|
<input name="Type" type="text" value="{{type}}" hidden="hidden" />
|
||||||
|
<button id="{{id}}" style="text-align: right" class="btn btn-danger delete" type="submit"><i class="fa fa-plus"></i> Remove</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
</div>
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue