Files
jdescopingtool/OLD/WebInterface/Controllers/SearchController.cs
T
Joseph Doherty 26ff8d9b4f Initial commit: JDE Scoping Tool migration project
Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
2026-01-02 07:43:29 -05:00

156 lines
4.4 KiB
C#
Executable File

using System.IO;
using System.Linq;
using System.Web.Mvc;
using DataModel.Models;
using DataModel.Process;
using DataModel.ViewModels;
using WebInterface.Helpers;
using WebInterface.Hubs;
namespace WebInterface.Controllers
{
/// <summary>
/// JDE search controller
/// </summary>
[Authorize]
public class SearchController : CrudController
{
// GET: Search
public ActionResult Index()
{
return View();
}
// GET: Search/GetSearches
public JsonNetResult GetSearches()
{
return new JsonNetResult()
{
Data = LotFinderDB.GetUserSearches(CurrentUser.Username).OrderByDescending(s => s.StartDT),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
// GET: Search/Queue
public ActionResult Queue()
{
return View();
}
// GET: Search/GetQueue
public JsonNetResult GetQueue()
{
return new JsonNetResult()
{
Data = LotFinderDB.GetQueuedSearches(),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
// GET: Search/Create
public ActionResult Create()
{
return View();
}
// GET: Search/GetSearch/id
public JsonNetResult GetSearch(int? id)
{
SearchViewModel searchViewModel = null;
if (id.HasValue)
{
searchViewModel = new SearchViewModel(LotFinderDB.GetSearch(id.Value));
}
else
{
searchViewModel = new SearchViewModel()
{
UserName = CurrentUser.Username,
Status = SearchStatus.New
};
}
return new JsonNetResult()
{
Data = searchViewModel,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
// GET: Search/CopySearch/id
public JsonNetResult CopySearch(int? id)
{
SearchViewModel searchViewModel = null;
if (id.HasValue)
{
searchViewModel = new SearchViewModel(LotFinderDB.GetSearch(id.Value));
}
else
{
searchViewModel = new SearchViewModel()
{
UserName = CurrentUser.Username
};
}
searchViewModel.Status = SearchStatus.New;
searchViewModel.UserName = CurrentUser.Username;
searchViewModel.SubmitDT = null;
searchViewModel.StartDT = null;
searchViewModel.EndDT = null;
return new JsonNetResult()
{
Data = searchViewModel,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
// POST: Search/Save
[HttpPost]
public JsonNetResult Save(SearchViewModel viewModel)
{
//Convert view model to standard model
Search search = viewModel.ToModel();
//Save search details to DB
int searchID = LotFinderDB.SubmitSearch(search);
search.ID = searchID;
try
{
//Publish new search
SearchUpdate searchUpdate = new SearchUpdate(search);
StatusHub.ContextInstance.Value.Clients.All.searchUpdate(searchUpdate);
}
catch
{
//Do nothing
}
//Reload session details and return them
return new JsonNetResult()
{
Data = searchID
};
}
// GET: Search/GetResults/id
public FileStreamResult GetResults(int id)
{
//Load results from database
byte[] data = LotFinderDB.GetSearchResults(id);
//Convert results to in-memory stream
MemoryStream memoryStream = new MemoryStream(data);
//Return data
return new FileStreamResult(memoryStream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = "search_results.xlsx"
};
}
}
}