26ff8d9b4f
Set up repository with legacy .NET Framework 4.8 source (OLD/), new .NET 10 Blazor solution (NEW/), OpenSpec specifications, documentation, and project configuration.
156 lines
4.4 KiB
C#
Executable File
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"
|
|
};
|
|
}
|
|
}
|
|
} |