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;
}
}
}