mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-10 15:32:37 -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)
|
||||
{
|
||||
|
||||
container.Register<IUserMapper, UserMapper>();
|
||||
base.ConfigureRequestContainer(container, context);
|
||||
|
||||
container.Register<ISqliteConfiguration, DbConfiguration>(new DbConfiguration(new SqliteFactory()));
|
||||
|
||||
container.Register<ISettingsRepository, JsonRepository>();
|
||||
container.Register<ICacheProvider, MemoryCacheProvider>();
|
||||
|
||||
|
||||
container.Register<ISettingsService<RequestPlexSettings>, SettingsServiceV2<RequestPlexSettings>>();
|
||||
container.Register<ISettingsService<CouchPotatoSettings>, SettingsServiceV2<CouchPotatoSettings>>();
|
||||
container.Register<IRepository<RequestedModel>, GenericRepository<RequestedModel>>();
|
||||
|
||||
base.ConfigureRequestContainer(container, context);
|
||||
}
|
||||
|
||||
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
|
||||
|
|
|
@ -13,6 +13,34 @@ var tvimer = 0;
|
|||
movieLoad();
|
||||
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() {
|
||||
$("#movieList").html("");
|
||||
|
|
|
@ -21,17 +21,16 @@ $("#tvSearchContent").keypress(function (e) {
|
|||
if (tvimer) {
|
||||
clearTimeout(tvimer);
|
||||
}
|
||||
tvimer = setTimeout(tvSearch(), 400);
|
||||
tvimer = setTimeout(tvSearch, 400);
|
||||
});
|
||||
|
||||
// Click TV dropdown option
|
||||
$(document).on("click", ".dropdownTv", function (e) {
|
||||
|
||||
e.preventDefault();
|
||||
console.log(e.target.id);
|
||||
var $form = $('#form'+e.target.id);
|
||||
var buttonId = e.target.id;
|
||||
var $form = $('#form' + buttonId);
|
||||
var data = $form.serialize();
|
||||
var seasons = $(this).attr("season-select");
|
||||
console.log(data);
|
||||
if (seasons === "1") {
|
||||
data = data + "&latest=true";
|
||||
}
|
||||
|
@ -45,6 +44,10 @@ $(document).on("click", ".dropdownTv", function (e) {
|
|||
console.log(response);
|
||||
if (response.result === true) {
|
||||
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 {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
|
@ -57,10 +60,11 @@ $(document).on("click", ".dropdownTv", function (e) {
|
|||
|
||||
});
|
||||
|
||||
// Click Request for movie
|
||||
$(document).on("click", ".requestMovie", function (e) {
|
||||
e.preventDefault();
|
||||
console.log(e.target.id);
|
||||
var $form = $('#form' + e.target.id);
|
||||
var buttonId = e.target.id;
|
||||
var $form = $('#form' + buttonId);
|
||||
|
||||
$.ajax({
|
||||
type: $form.prop('method'),
|
||||
|
@ -71,6 +75,10 @@ $(document).on("click", ".requestMovie", function (e) {
|
|||
console.log(response);
|
||||
if (response.result === true) {
|
||||
generateNotify("Success!", "success");
|
||||
|
||||
$('#' + buttonId).html("<i class='fa fa-check'></i> Requested");
|
||||
$('#' + buttonId).removeClass("btn-primary");
|
||||
$('#' + buttonId).addClass("btn-success");
|
||||
} else {
|
||||
generateNotify(response.message, "warning");
|
||||
}
|
||||
|
|
|
@ -13,13 +13,18 @@ namespace RequestPlex.UI.Modules
|
|||
public class RequestsModule : NancyModule
|
||||
{
|
||||
private IRepository<RequestedModel> Service { get; set; }
|
||||
public RequestsModule(IRepository<RequestedModel> service)
|
||||
public RequestsModule(IRepository<RequestedModel> service) : base("requests")
|
||||
{
|
||||
Service = service;
|
||||
|
||||
Get["requests/"] = _ => LoadRequests();
|
||||
Get["requests/movies"] = _ => GetMovies();
|
||||
Get["requests/tvshows"] = _ => GetTvShows();
|
||||
Get["/"] = _ => LoadRequests();
|
||||
Get["/movies"] = _ => GetMovies();
|
||||
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);
|
||||
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 SearchModule()
|
||||
public SearchModule() : base("search")
|
||||
{
|
||||
Get["search/"] = parameters => RequestLoad();
|
||||
Api = new TheMovieDbApi();
|
||||
Get["/"] = parameters => RequestLoad();
|
||||
|
||||
Get["search/movie/{searchTerm}"] = parameters =>
|
||||
{
|
||||
var search = (string)parameters.searchTerm;
|
||||
return SearchMovie(search);
|
||||
};
|
||||
Get["movie/{searchTerm}"] = parameters => SearchMovie((string)parameters.searchTerm);
|
||||
Get["tv/{searchTerm}"] = parameters => SearchTvShow((string)parameters.searchTerm);
|
||||
|
||||
Get["search/tv/{searchTerm}"] = parameters =>
|
||||
{
|
||||
var search = (string)parameters.searchTerm;
|
||||
return SearchTvShow(search);
|
||||
};
|
||||
Get["movie/upcoming"] = parameters => UpcomingMovies();
|
||||
Get["movie/playing"] = parameters => CurrentlyPlayingMovies();
|
||||
|
||||
Get["search/movie/upcoming"] = parameters => UpcomingMovies();
|
||||
Get["search/movie/playing"] = parameters => CurrentlyPlayingMovies();
|
||||
|
||||
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);
|
||||
};
|
||||
Post["request/movie"] = parameters => RequestMovie((int)Request.Form.movieId);
|
||||
Post["request/tv"] = parameters => RequestTvShow((int)Request.Form.tvId, (bool)Request.Form.latest);
|
||||
}
|
||||
private TheMovieDbApi Api { get; }
|
||||
|
||||
private Negotiator RequestLoad()
|
||||
{
|
||||
|
@ -49,32 +32,28 @@ namespace RequestPlex.UI.Modules
|
|||
|
||||
private Response SearchMovie(string searchTerm)
|
||||
{
|
||||
var api = new TheMovieDbApi();
|
||||
var movies = api.SearchMovie(searchTerm);
|
||||
var movies = Api.SearchMovie(searchTerm);
|
||||
var result = movies.Result;
|
||||
return Response.AsJson(result);
|
||||
}
|
||||
|
||||
private Response SearchTvShow(string searchTerm)
|
||||
{
|
||||
var api = new TheMovieDbApi();
|
||||
var tvShow = api.SearchTv(searchTerm);
|
||||
var tvShow = Api.SearchTv(searchTerm);
|
||||
var result = tvShow.Result;
|
||||
return Response.AsJson(result);
|
||||
}
|
||||
|
||||
private Response UpcomingMovies()
|
||||
{
|
||||
var api = new TheMovieDbApi();
|
||||
var movies = api.GetUpcomingMovies();
|
||||
var movies = Api.GetUpcomingMovies();
|
||||
var result = movies.Result;
|
||||
return Response.AsJson(result);
|
||||
}
|
||||
|
||||
private Response CurrentlyPlayingMovies()
|
||||
{
|
||||
var api = new TheMovieDbApi();
|
||||
var movies = api.GetCurrentPlayingMovies();
|
||||
var movies = Api.GetCurrentPlayingMovies();
|
||||
var result = movies.Result;
|
||||
return Response.AsJson(result);
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
|
||||
|
||||
<script id="search-template" type="text/x-handlebars-template">
|
||||
<div id="{{id}}Template">
|
||||
<div class="row">
|
||||
<div class="col-sm-2">
|
||||
{{#if posterPath}}
|
||||
|
@ -51,14 +52,16 @@
|
|||
<span class="label label-success">{{status}}</span>
|
||||
<br />
|
||||
<br />
|
||||
<form method="POST" action="/search/request/{{type}}" id="form{{id}}">
|
||||
<input name="{{type}}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>
|
||||
<form method="POST" action="/requests/delete" id="form{{id}}">
|
||||
<input name="Id" type="text" value="{{id}}" hidden="hidden" />
|
||||
<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>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<hr />
|
||||
</div>
|
||||
</script>
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue