laatzen/Common/Service/MeterProcessState/Controllers/TestBenchController.cs
2022-04-06 10:42:16 +02:00

124 lines
5.9 KiB
C#

using Service.Core;
using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
namespace Xylem.Common.Service.MeterProcessState.Controllers
{
[RoutePrefix("api/TestBench")]
public class TestBenchController : ApiController
{
public static class GlobalConfig
{
public static Lazy<string> connectionString = new Lazy<string>(()
=>
System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
);
}
/// <summary>
/// SetMeterLogPathInfo
/// </summary>
/// <param name="SerialNumber">PcbID from Meter</param>
///
/// <returns></returns>
[Route("SetMeterLogPathInfo"), HttpGet]
public async Task<HttpResponseMessage> SetMeterLogPathInfo(int SerialNumber, int? TestRunId =null, int? CalibrationRunId = null, string BasePath = "", string MainLogName = "", string LEDName = "" )
{
try
{
return await Task.Run(() =>
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
{
StringBuilder sb = new StringBuilder();
var TestRunIdStr = TestRunId.HasValue ? TestRunId.Value.ToString() : "null";
var CalibrationRunIdStr = CalibrationRunId.HasValue ? CalibrationRunId.Value.ToString() : "null";
sb.AppendLine($" Insert into [Auftrag].[dbo].[CordonelLogFiles] ");
sb.AppendLine($" select ");
sb.AppendLine($"{SerialNumber} , ");
sb.AppendLine($"{TestRunIdStr} , ");
sb.AppendLine($"{CalibrationRunIdStr} , ");
sb.AppendLine($"'{BasePath}' , ");
sb.AppendLine($"'{MainLogName}' , ");
sb.AppendLine($"'{LEDName}' ");
var MapData = dataacces.ExecuteQuery(sb.ToString());
return Request.CreateResponse(HttpStatusCode.OK,"");
}
});
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
}
}
/// <summary>
/// Get SerialNumber from PcbID
/// </summary>
/// <param name="PcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetMeterInfoForTestBench"), HttpGet]
public async Task<HttpResponseMessage> GetMeterInfoForTestBench(string PcbID)
{
try
{
return await Task.Run(() =>
{
using (var dataacces = new SqlDataAccess(GlobalConfig.connectionString.Value))
{
StringBuilder sb = new StringBuilder();
sb.AppendLine($" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber], mapOrder.CordonelAssignedPicking_FertigungsAuftragsNr ,KundeneigeneSerienNr as CustomerSerialNr ");
sb.AppendLine($" , meter.[Adresse] , Nennweite as Dn ");
sb.AppendLine($" , (select top 1 ID from[Auftrag].[dbo].[CordonelMeterCalibrationResults] where PcbId = '{PcbID}' order by date desc) as CalibrationRunID ");
sb.AppendLine($" , (select top 1 StatusFertigung from Auftrag.dbo.AuftragPositionSerienNr a where a.SerienNr = [MapPcbIdToSerialNumber_SerialNumber] order by AnlageDatum desc) as LastProcessState ");
sb.AppendLine($" FROM Auftrag.dbo.Cordonel_AssignedPicking mapOrder ");
sb.AppendLine($" left outer join [Auftrag].[dbo].[MapPcbIdToSerialNumber] map on mapOrder.CordonelAssignedPicking_PcbId = map.MapPcbIdToSerialNumber_PcbId and MapPcbIdToSerialNumber_Deleted = 0 ");
sb.AppendLine($" left outer join Auftrag.dbo.AuftragPositionSerienNr mapSrn on map.[MapPcbIdToSerialNumber_SerialNumber] = mapSrn.SerienNr and mapSrn.Pruefgangnr = 0 ");
sb.AppendLine($" left outer join Auftrag.dbo.AuftragPosition_gesamt auftraginfo on auftraginfo.AuftragNr = mapSrn.AuftragNr and auftraginfo.PositionNr = mapSrn.PositionNr ");
sb.AppendLine($" left outer join [Auftrag].[dbo].[Genesis_Meter] meter on meter.Seriennummer = MapPcbIdToSerialNumber_SerialNumber ");
sb.AppendLine($" left outer join Identnr on auftraginfo.Identnr = Identnr.IdentNr ");
sb.AppendLine($" where mapOrder.CordonelAssignedPicking_IsDeleted = 0 and mapOrder.CordonelAssignedPicking_PcbId = '{PcbID}'");
var MapData = dataacces.ExecuteQuery(sb.ToString());
if (MapData.Rows.Count != 1)
{
return Request.CreateResponse(HttpStatusCode.OK, new String[] { string.Empty, string.Empty, string.Empty });
//return Request.CreateResponse(HttpStatusCode.InternalServerError, "Can not find unique serial number for your request");
}
var ret = new String[] { MapData.Rows[0]["MapPcbIdToSerialNumber_SerialNumber"].ToString(), MapData.Rows[0]["CordonelAssignedPicking_FertigungsAuftragsNr"].ToString(), MapData.Rows[0]["Adresse"].ToString(), MapData.Rows[0]["CustomerSerialNr"].ToString(), MapData.Rows[0]["CalibrationRunID"].ToString(), MapData.Rows[0]["LastProcessState"].ToString(), MapData.Rows[0]["Dn"].ToString() };
return Request.CreateResponse(HttpStatusCode.OK, ret);
}
});
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex);
}
}
}
}