Sonarr/NzbDrone.Services/NzbDrone.Services.Service/Controllers/SceneMappingController.cs

92 lines
2.7 KiB
C#

using System;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using NzbDrone.Services.Service.Providers;
using NzbDrone.Services.Service.Repository;
namespace NzbDrone.Services.Service.Controllers
{
public class SceneMappingController : Controller
{
private readonly SceneMappingProvider _sceneMappingProvider;
public SceneMappingController(SceneMappingProvider sceneMappingProvider)
{
_sceneMappingProvider = sceneMappingProvider;
}
[HttpGet]
[OutputCache(CacheProfile = "Cache1Hour")]
public JsonResult Active()
{
var mappings = _sceneMappingProvider.AllLive();
return Json(mappings, JsonRequestBehavior.AllowGet);
}
[HttpGet]
[Authorize(Roles = "Users")]
public ActionResult Pending()
{
var mappings = _sceneMappingProvider.AllPending();
var serialized = JsonConvert.SerializeObject(mappings);
return View((object)serialized);
}
[HttpPost]
[Authorize(Roles = "Users")]
public string UpdatePending(int id, string value, int columnId)
{
var mapping = _sceneMappingProvider.GetPending(id);
if (columnId == 0)
mapping.CleanTitle = value.Trim();
if (columnId == 1)
mapping.Id = Int32.Parse(value);
if (columnId == 2)
mapping.Title = value.Trim();
_sceneMappingProvider.Update(mapping);
return value;
}
[HttpPost]
public JsonResult AddPending(string cleanTitle, int id, string title)
{
_sceneMappingProvider.Insert(new PendingSceneMapping { CleanTitle = cleanTitle, Id = id, Title = title });
return Json("Ok", JsonRequestBehavior.AllowGet);
}
[Authorize(Roles = "Users")]
public JsonResult Promote(int mappingId)
{
_sceneMappingProvider.Promote(mappingId);
HttpResponse.RemoveOutputCacheItem(VirtualPathUtility.ToAbsolute("~/SceneMapping/Active"));
return Json("Ok", JsonRequestBehavior.AllowGet);
}
[Authorize(Roles = "Users")]
public JsonResult PromoteAll()
{
_sceneMappingProvider.PromoteAll();
return Json("Ok", JsonRequestBehavior.AllowGet);
}
[Authorize(Roles = "Users")]
public JsonResult Delete(int mappingId)
{
_sceneMappingProvider.DeletePending(mappingId);
HttpResponse.RemoveOutputCacheItem(VirtualPathUtility.ToAbsolute("~/SceneMapping/Active"));
return Json("Ok", JsonRequestBehavior.AllowGet);
}
}
}