84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using PlotLine.Models;
|
|
using PlotLine.Services;
|
|
using PlotLine.ViewModels;
|
|
|
|
namespace PlotLine.Controllers;
|
|
|
|
[Authorize]
|
|
public sealed class ContinuityExplorerController(IStoryStateService storyState) : Controller
|
|
{
|
|
public async Task<IActionResult> Index([FromQuery] ContinuityFilter filter)
|
|
{
|
|
if (filter.ProjectID == 0)
|
|
{
|
|
return BadRequest("ProjectID is required.");
|
|
}
|
|
|
|
var model = await storyState.GetContinuityExplorerAsync(filter);
|
|
return model is null ? NotFound() : View(model);
|
|
}
|
|
|
|
[HttpPost]
|
|
[ValidateAntiForgeryToken]
|
|
public IActionResult ApplyFilters(ContinuityFilter filter)
|
|
{
|
|
return RedirectToAction(nameof(Index), filter);
|
|
}
|
|
|
|
[HttpPost]
|
|
[ValidateAntiForgeryToken]
|
|
public async Task<IActionResult> AcknowledgeWarning(
|
|
string warningType,
|
|
int? sceneId,
|
|
int? characterId,
|
|
int? assetId,
|
|
string? notes,
|
|
[Bind(Prefix = "ReturnFilter")] ContinuityFilter returnFilter)
|
|
{
|
|
if (returnFilter.ProjectID == 0 || string.IsNullOrWhiteSpace(warningType))
|
|
{
|
|
return BadRequest("Warning identity is required.");
|
|
}
|
|
|
|
await storyState.AcknowledgeWarningAsync(new ContinuityWarningAcknowledgement
|
|
{
|
|
ProjectID = returnFilter.ProjectID,
|
|
WarningType = warningType,
|
|
SceneID = sceneId,
|
|
CharacterID = characterId,
|
|
AssetID = assetId,
|
|
Notes = notes
|
|
});
|
|
|
|
return RedirectToAction(nameof(Index), returnFilter);
|
|
}
|
|
|
|
[HttpPost]
|
|
[ValidateAntiForgeryToken]
|
|
public async Task<IActionResult> RestoreWarning(
|
|
string warningType,
|
|
int? sceneId,
|
|
int? characterId,
|
|
int? assetId,
|
|
[Bind(Prefix = "ReturnFilter")] ContinuityFilter returnFilter)
|
|
{
|
|
if (returnFilter.ProjectID == 0 || string.IsNullOrWhiteSpace(warningType))
|
|
{
|
|
return BadRequest("Warning identity is required.");
|
|
}
|
|
|
|
await storyState.RestoreWarningAsync(new ContinuityWarningAcknowledgement
|
|
{
|
|
ProjectID = returnFilter.ProjectID,
|
|
WarningType = warningType,
|
|
SceneID = sceneId,
|
|
CharacterID = characterId,
|
|
AssetID = assetId
|
|
});
|
|
|
|
return RedirectToAction(nameof(Index), returnFilter);
|
|
}
|
|
}
|