2023-08-29 11:56:24 +00:00
using LaaProductionSQL ;
using System ;
using System.ComponentModel.DataAnnotations ;
using System.Configuration ;
2021-10-01 09:09:20 +00:00
using System.Net ;
using System.Net.Http ;
using System.Text ;
using System.Threading.Tasks ;
using System.Web.Http ;
2022-09-23 11:52:57 +00:00
using Xylem.Common.Logic.ServiceCore ;
2021-10-01 09:09:20 +00:00
namespace Xylem.Common.Service.MeterProcessState.Controllers
{
[RoutePrefix("api/TestBench")]
public class TestBenchController : ApiController
{
public static class GlobalConfig
{
2023-08-29 11:56:24 +00:00
public static Lazy < String > ConnectionString = new Lazy < String > ( ( )
= > ConfigurationManager . ConnectionStrings [ "default" ] . ConnectionString ) ;
2021-10-01 09:09:20 +00:00
}
2022-04-06 08:42:16 +00:00
/// <summary>
/// SetMeterLogPathInfo
/// </summary>
/// <param name="SerialNumber">PcbID from Meter</param>
///
/// <returns></returns>
[Route("SetMeterLogPathInfo"), HttpGet]
2023-08-23 12:45:24 +00:00
public async Task < HttpResponseMessage > SetMeterLogPathInfo ( Int32 SerialNumber , Int32 ? TestRunId = null , Int32 ? CalibrationRunId = null , String BasePath = "" , String MainLogName = "" , String LEDName = "" )
2022-04-06 08:42:16 +00:00
{
try
{
return await Task . Run ( ( ) = >
{
2023-08-29 11:56:24 +00:00
using ( var dataacces = new SqlDataAccess ( GlobalConfig . ConnectionString . Value ) )
2022-04-06 08:42:16 +00:00
{
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 ( ) ) ;
2023-08-23 12:45:24 +00:00
return Request . CreateResponse ( HttpStatusCode . OK , "" ) ;
2022-04-06 08:42:16 +00:00
}
} ) ;
}
catch ( Exception ex )
{
return Request . CreateResponse ( HttpStatusCode . InternalServerError , ex ) ;
}
}
2021-10-01 09:09:20 +00:00
/// <summary>
/// Get SerialNumber from PcbID
/// </summary>
/// <param name="PcbID">PcbID from Meter</param>
/// <returns></returns>
[Route("GetMeterInfoForTestBench"), HttpGet]
2022-10-19 10:58:08 +00:00
public async Task < HttpResponseMessage > GetMeterInfoForTestBench ( String PcbID )
2021-10-01 09:09:20 +00:00
{
try
{
return await Task . Run ( ( ) = >
{
2023-08-29 11:56:24 +00:00
using ( var dataacces = new SqlDataAccess ( GlobalConfig . ConnectionString . Value ) )
2021-10-01 09:09:20 +00:00
{
StringBuilder sb = new StringBuilder ( ) ;
sb . AppendLine ( $" SELECT distinct [MapPcbIdToSerialNumber_SerialNumber], mapOrder.CordonelAssignedPicking_FertigungsAuftragsNr ,KundeneigeneSerienNr as CustomerSerialNr " ) ;
sb . AppendLine ( $" , meter.[Adresse] , Nennweite as Dn " ) ;
2022-06-21 10:54:26 +00:00
sb . AppendLine ( $" , (SELECT TOP(1) Dn_InternalId FROM CordonelMeterSizes where Dn_VakoID = substring(Identnr.VakoCode, 4, 2)) as NewNennweiteID " ) ;
2023-08-23 12:45:24 +00:00
2021-10-01 09:09:20 +00:00
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 " ) ;
2023-08-23 12:45:24 +00:00
sb . AppendLine ( $" , lut.FileCrc as LutCrc " ) ;
2021-10-01 09:09:20 +00:00
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 " ) ;
2023-08-23 12:45:24 +00:00
sb . AppendLine ( $" left outer join [Auftrag].[dbo].[Cordonel_Lut] lut on lut.MeterSize = (SELECT TOP(1) Dn_InternalId FROM CordonelMeterSizes where Dn_VakoID = substring(Identnr.VakoCode, 4, 2)) and lut.CurrentVersionForProd = 1 " ) ;
2021-10-01 09:09:20 +00:00
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");
}
2023-08-23 12:45:24 +00:00
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 ( ) , MapData . Rows [ 0 ] [ "NewNennweiteID" ] . ToString ( ) , MapData . Rows [ 0 ] [ "LutCrc" ] . ToString ( ) } ;
2021-10-01 09:09:20 +00:00
return Request . CreateResponse ( HttpStatusCode . OK , ret ) ;
}
} ) ;
}
catch ( Exception ex )
{
return Request . CreateResponse ( HttpStatusCode . InternalServerError , ex ) ;
}
}
2023-08-29 11:56:24 +00:00
[HttpGet]
[Route("GetOffsetCalibration/{pcbId}")]
public IHttpActionResult GetOffsetCalibration ( int pcbId )
{
var offset = SQLConnection
. CreateSQLConnection ( GlobalConfig . ConnectionString . Value )
. CreateCommand ( $ @ "
SELECT [ PcbId ]
, [ TestRunNr ]
, [ Offset ]
FROM [ Cordonel_Calibrations ]
WHERE [ PcbId ] = @ { nameof ( pcbId ) } ")
. SetParameter ( nameof ( pcbId ) , pcbId )
. FirstOrDefault ( x = > new CordonelCalibration
{
PcbId = x . GetInt ( ) ,
TestRunNr = x . GetInt ( ) ,
Offset = x . GetValue < double > ( )
} ) ;
return this . Json ( offset ) ;
}
[HttpPost]
public IHttpActionResult AddOffsetCalibration ( [ FromBody ] CordonelCalibration model )
{
var rowsAffected = SQLConnection
. CreateSQLConnection ( GlobalConfig . ConnectionString . Value )
. CreateCommand ( $ @ "
INSERT
INTO [ Cordonel_Calibrations ]
( [ PcbId ]
, [ TestRunNr ]
, [ Offset ] )
VALUES ( @ { nameof ( CordonelCalibration . PcbId ) }
, @ { nameof ( CordonelCalibration . TestRunNr ) }
, @ { nameof ( CordonelCalibration . Offset ) } ) ")
. SetParameter ( nameof ( CordonelCalibration . PcbId ) , model . PcbId )
. SetParameter ( nameof ( CordonelCalibration . TestRunNr ) , model . TestRunNr )
. SetParameter ( nameof ( CordonelCalibration . Offset ) , model . Offset )
. ExecuteNonQuery ( ) ;
if ( rowsAffected = = 1 )
{
return this . Ok ( ) ;
}
return this . BadRequest ( "Invalid data." ) ;
}
[HttpPost]
public IHttpActionResult SetOffsetCalibration ( [ FromBody ] CordonelCalibration model )
{
var rowsAffected = SQLConnection
. CreateSQLConnection ( GlobalConfig . ConnectionString . Value )
. CreateCommand ( $ @ "
UPDATE [ Cordonel_Calibrations ]
SET [ TestRunNr ] = @ { nameof ( CordonelCalibration . TestRunNr ) }
, [ Offset ] = @ { nameof ( CordonelCalibration . Offset ) }
WHERE [ PcbId ] = @ { nameof ( CordonelCalibration . PcbId ) } ")
. SetParameter ( nameof ( CordonelCalibration . TestRunNr ) , model . TestRunNr )
. SetParameter ( nameof ( CordonelCalibration . Offset ) , model . Offset )
. SetParameter ( nameof ( CordonelCalibration . PcbId ) , model . PcbId )
. ExecuteNonQuery ( ) ;
if ( rowsAffected = = 1 )
{
return this . Ok ( ) ;
}
return this . BadRequest ( "Invalid data." ) ;
}
public class CordonelCalibration
{
public int PcbId { get ; set ; }
public int TestRunNr { get ; set ; }
public double Offset { get ; set ; }
}
2021-10-01 09:09:20 +00:00
}
}