Added in deletion of requests

pull/13/head
tidusjar 9 years ago
parent cedd58f372
commit 754ace42b0

@ -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 =>
{
var search = (string)parameters.searchTerm;
return SearchTvShow(search);
};
Get["search/movie/upcoming"] = parameters => UpcomingMovies(); Get["movie/upcoming"] = parameters => UpcomingMovies();
Get["search/movie/playing"] = parameters => CurrentlyPlayingMovies(); Get["movie/playing"] = parameters => CurrentlyPlayingMovies();
Post["search/request/movie"] = parameters => Post["request/movie"] = parameters => RequestMovie((int)Request.Form.movieId);
{ Post["request/tv"] = parameters => RequestTvShow((int)Request.Form.tvId, (bool)Request.Form.latest);
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);
} }

@ -10,11 +10,11 @@ namespace RequestPlex.UI
{ {
try try
{ {
app.UseNancy(); app.UseNancy();
} }
catch (Exception exception) catch (Exception exception)
{ {
Console.WriteLine(exception.Message); Console.WriteLine(exception.Message);
throw; throw;
} }

@ -12,7 +12,7 @@
<!-- Movie tab --> <!-- Movie tab -->
<div role="tabpanel" class="tab-pane active" id="MoviesTab"> <div role="tabpanel" class="tab-pane active" id="MoviesTab">
<br /> <br />
<br /> <br />
<!-- Movie content --> <!-- Movie content -->
<div id="movieList"> <div id="movieList">
@ -33,32 +33,35 @@
<script id="search-template" type="text/x-handlebars-template"> <script id="search-template" type="text/x-handlebars-template">
<div class="row"> <div id="{{id}}Template">
<div class="col-sm-2"> <div class="row">
{{#if posterPath}} <div class="col-sm-2">
<img src="http://image.tmdb.org/t/p/w150/{{posterPath}}" alt="poster"> {{#if posterPath}}
{{/if}} <img src="http://image.tmdb.org/t/p/w150/{{posterPath}}" alt="poster">
</div> {{/if}}
<div class="col-sm-5 "> </div>
<div> <div class="col-sm-5 ">
<a href="https://www.themoviedb.org/{{type}}/{{id}}"> <div>
<h4>{{title}} ({{year}})</h4> <a href="https://www.themoviedb.org/{{type}}/{{id}}">
</a> <h4>{{title}} ({{year}})</h4>
</a>
</div>
<p>{{overview}}</p>
</div>
<div class="col-sm-2 col-sm-push-3">
<span class="label label-success">{{status}}</span>
<br />
<br />
<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>
<p>{{overview}}</p>
</div>
<div class="col-sm-2 col-sm-push-3">
<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>
</div>
</div>
<hr />
</div> </div>
<hr />
</script> </script>

Loading…
Cancel
Save