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 ) ;
}
}
}