using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using Dapper; using DataModel.Models; namespace DataModel.Process { /// /// Workorder tracking functions for LotFinderDB interface /// public partial class LotFinderDB { /// /// Query to find work orders with matching work order numbers /// private const string SQL_LOOKUP_WORKORDERS = @" SELECT * FROM dbo.WorkOrder AS wo INNER JOIN @workOrderNumbers wo2 ON (wo.WorkOrderNumber = wo2.WorkOrderNumber)"; /// /// Finds work orders with matching work order numbers /// /// Workorder numbers to match /// List of matching workorders public static List LookupWorkorders(List workorderNumbers) { List results = new List(); try { //Create search filter parameter DataTable dataTable = new DataTable(); dataTable.Columns.Add("WorkOrderNumber", typeof(long)); foreach (long workOrderNumber in workorderNumbers) { dataTable.Rows.Add(workOrderNumber); } using (SqlConnection connection = GetConnection()) { results = connection.Query(SQL_LOOKUP_WORKORDERS, new { workOrderNumbers = dataTable.AsTableValuedParameter("WorkOrderFilterParameter") }).ToList(); } } catch (Exception error) { //Log and forward exception logger.Error("LookupWorkorders: failed to find matching workorders: {0}.", error.Message); throw new Exception("LookupWorkorders: failed to find matching workorders in LotFinderDB.", error); } return results; } } }