95 lines
2.3 KiB
C#
95 lines
2.3 KiB
C#
using System.Linq;
|
|
using System.Web.Mvc;
|
|
using LeafWeb.Core.Entities;
|
|
using LeafWeb.Core.Utility;
|
|
using LeafWeb.WebCms.Models;
|
|
|
|
namespace LeafWeb.WebCms.Controllers
|
|
{
|
|
public class QueueController : BaseController
|
|
{
|
|
public ActionResult Index()
|
|
{
|
|
var viewModel =
|
|
DataService.GetLeafInputs()
|
|
.OrderByDescending(f => f.Id)
|
|
.ToList()
|
|
.Select(leafInput => new ResultStatusViewModel(leafInput));
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ActionResult Details(int id)
|
|
{
|
|
var leafInput = DataService.GetLeafInput(id);
|
|
var viewModel = new LeafInputDetails(leafInput);
|
|
return View(viewModel);
|
|
}
|
|
|
|
public ActionResult DownloadInput(int id)
|
|
{
|
|
return GetInputZip(id);
|
|
}
|
|
|
|
public ActionResult DownloadOutputToUser(int id)
|
|
{
|
|
return GetOutputZip(id, LeafOutputFileType.ToUser);
|
|
}
|
|
|
|
public ActionResult DownloadOutputNotToUser(int id)
|
|
{
|
|
return GetOutputZip(id, LeafOutputFileType.NotToUser);
|
|
}
|
|
|
|
public ActionResult DownloadOutputCleanedInput(int id)
|
|
{
|
|
return GetOutputZip(id, LeafOutputFileType.CleanedInput);
|
|
}
|
|
|
|
private ActionResult GetOutputZip(int id, LeafOutputFileType type)
|
|
{
|
|
var leafInput = DataService.GetLeafInput(id);
|
|
|
|
if (leafInput == null)
|
|
return View("DownloadNotFound");
|
|
|
|
var zip = leafInput.GetOutputFileZip(type);
|
|
|
|
var filename = $"{leafInput.Identifier.FilterValidFilename()}_{type}.zip";
|
|
|
|
return new FileContentResult(zip, "application/zip") { FileDownloadName = filename };
|
|
}
|
|
|
|
private ActionResult GetInputZip(int id)
|
|
{
|
|
var leafInput = DataService.GetLeafInput(id);
|
|
|
|
if (leafInput == null)
|
|
return View("DownloadNotFound");
|
|
|
|
var zip = leafInput.GetInputFileZip();
|
|
|
|
var filename = $"{leafInput.Identifier.FilterValidFilename()}_Input.zip";
|
|
|
|
return new FileContentResult(zip, "application/zip") { FileDownloadName = filename };
|
|
}
|
|
|
|
public ActionResult Delete(int id)
|
|
{
|
|
var leafInput = DataService.GetLeafInput(id);
|
|
var viewModel = new LeafInputCreate();
|
|
return View(viewModel);
|
|
}
|
|
|
|
[HttpPost, ActionName("Delete")]
|
|
[ActionLog]
|
|
public ActionResult DeleteConfirmed(int id)
|
|
{
|
|
// TODO: don't allow currently running LeafInput to be deleted
|
|
var leafInput = DataService.GetLeafInput(id);
|
|
DataService.DeleteLeafInput(leafInput);
|
|
|
|
SetStatusMessage($"LeafInput '{leafInput.Identifier}' deleted");
|
|
return RedirectToAction("Index");
|
|
}
|
|
}
|
|
} |