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.
This commit is contained in:
+219
@@ -0,0 +1,219 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using Dapper;
|
||||
using DataModel.Helpers;
|
||||
using DataModel.Models;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace DataModel.Process
|
||||
{
|
||||
/// <summary>
|
||||
/// Search management functionality of LotFinderDB interface
|
||||
/// </summary>
|
||||
public partial class LotFinderDB
|
||||
{
|
||||
/// <summary>
|
||||
/// Query to get user's searches
|
||||
/// </summary>
|
||||
private const string SQL_GET_USER_SEARCHES = @"
|
||||
SELECT s.ID,
|
||||
s.Name,
|
||||
s.Status,
|
||||
s.SubmitDT,
|
||||
s.StartDT,
|
||||
s.EndDT
|
||||
FROM dbo.Search s
|
||||
WHERE s.UserName = @userName
|
||||
ORDER BY s.SubmitDT";
|
||||
|
||||
/// <summary>
|
||||
/// Gets user's searches
|
||||
/// </summary>
|
||||
/// <param name="userName">User name to match</param>
|
||||
/// <returns>List of user's searches</returns>
|
||||
public static List<Search> GetUserSearches(string userName)
|
||||
{
|
||||
List<Search> results = new List<Search>();
|
||||
|
||||
try
|
||||
{
|
||||
using (SqlConnection connection = GetConnection())
|
||||
{
|
||||
results.AddRange(connection.Query<Search>(SQL_GET_USER_SEARCHES, new {userName}));
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
//Log but do not forward error
|
||||
logger.Error("GetUserSearches: failed to get searches for user '{0}': {1}.", userName, error.Message);
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Query to get queued searches
|
||||
/// </summary>
|
||||
private const string SQL_GET_QUEUED_SEARCHES = @"
|
||||
SELECT s.ID,
|
||||
s.UserName,
|
||||
s.Name,
|
||||
s.Status,
|
||||
s.SubmitDT,
|
||||
s.StartDT,
|
||||
s.EndDT
|
||||
FROM dbo.Search s
|
||||
WHERE s.Status < 3
|
||||
ORDER BY s.SubmitDT";
|
||||
|
||||
/// <summary>
|
||||
/// Gets queued searches
|
||||
/// </summary>
|
||||
/// <returns>List of searches that have been submitted but not completed</returns>
|
||||
public static List<Search> GetQueuedSearches()
|
||||
{
|
||||
List<Search> results = new List<Search>();
|
||||
|
||||
try
|
||||
{
|
||||
using (SqlConnection connection = GetConnection())
|
||||
{
|
||||
results.AddRange(connection.Query<Search>(SQL_GET_QUEUED_SEARCHES));
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
//Log but do not forward error
|
||||
logger.Error("GetQueuedSearches: failed to get queued searches: {0}.", error.Message);
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Query to get search with matching ID
|
||||
/// </summary>
|
||||
private const string SQL_GET_SEARCH = @"
|
||||
SELECT s.UserName,
|
||||
s.Name,
|
||||
s.Status,
|
||||
s.SubmitDT,
|
||||
s.StartDT,
|
||||
s.EndDT,
|
||||
s.Criteria as CriteriaJSON
|
||||
FROM dbo.Search s
|
||||
WHERE s.ID = @id";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the search with matching ID
|
||||
/// </summary>
|
||||
/// <param name="id">Search ID to match</param>
|
||||
/// <returns>Search with matching ID</returns>
|
||||
public static Search GetSearch(int id)
|
||||
{
|
||||
Search result = null;
|
||||
|
||||
try
|
||||
{
|
||||
using (SqlConnection connection = GetConnection())
|
||||
{
|
||||
result = connection.QueryFirstOrDefault<Search>(SQL_GET_SEARCH, new {id});
|
||||
|
||||
if (result != null && !string.IsNullOrEmpty(result.CriteriaJSON))
|
||||
{
|
||||
result.ID = id;
|
||||
result.Criteria = JsonConvert.DeserializeObject<SearchCriteria>(result.CriteriaJSON);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
//Log but do not forward error
|
||||
logger.Error("GetSearch: failed to get search with ID '{0}': {1}.", id, error.Message);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Query to get the saved results for the search with matching ID
|
||||
/// </summary>
|
||||
private const string SQL_GET_SEARCH_RESULTS = @"
|
||||
SELECT s.Results
|
||||
FROM dbo.Search AS s
|
||||
WHERE s.ID = @id";
|
||||
|
||||
/// <summary>
|
||||
/// Gets the saved results for the search with matching ID
|
||||
/// </summary>
|
||||
/// <param name="id">Search ID to match</param>
|
||||
/// <returns>Raw data for saved search results</returns>
|
||||
public static byte[] GetSearchResults(int id)
|
||||
{
|
||||
byte[] result = null;
|
||||
|
||||
try
|
||||
{
|
||||
using (SqlConnection connection = GetConnection())
|
||||
{
|
||||
result = connection.Query<byte[]>(SQL_GET_SEARCH_RESULTS, new {id}).FirstOrDefault();
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
//Log but do not forward error
|
||||
logger.Error("GetSearchResults: failed to get results for search with ID '{0}': {1}.", id, error.Message);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Saves the search to the database
|
||||
/// </summary>
|
||||
/// <param name="search">Search to submit</param>
|
||||
/// <returns>PK ID of search record generated</returns>
|
||||
public static int SubmitSearch(Search search)
|
||||
{
|
||||
int searchID = -1;
|
||||
|
||||
try
|
||||
{
|
||||
search.Status = SearchStatus.Submitted;
|
||||
search.SubmitDT = DateTime.Now;
|
||||
|
||||
using (SqlConnection connection = GetConnection())
|
||||
{
|
||||
using (SqlCommand command = new SqlCommand("SubmitSearch", connection))
|
||||
{
|
||||
command.CommandType = CommandType.StoredProcedure;
|
||||
|
||||
//Bind parameters
|
||||
command.Bind("p_UserName", search.UserName);
|
||||
command.Bind("p_Name", search.Name);
|
||||
command.Bind("p_Criteria", search.Criteria.ToJSON());
|
||||
SqlParameter searchIDParameter = new SqlParameter("o_SearchID", SqlDbType.Int)
|
||||
{
|
||||
Direction = ParameterDirection.Output
|
||||
};
|
||||
command.Parameters.Add(searchIDParameter);
|
||||
|
||||
//Execute procedure and extract values
|
||||
command.ExecuteNonQuery();
|
||||
searchID = Convert.ToInt32(searchIDParameter.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
//Log but do not forward error
|
||||
logger.Error("SubmitSearch: failed to get submit search: {0}.", error.Message);
|
||||
}
|
||||
|
||||
return searchID;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user