2025-08-29 12:05:15 +00:00
using LaaPackages.Features.Cordonel.Models ;
using System ;
2023-05-08 12:42:27 +00:00
using System.Collections.Generic ;
2025-08-29 12:05:15 +00:00
using System.Data ;
2025-09-02 13:43:39 +00:00
using System.Globalization ;
2023-05-08 12:42:27 +00:00
using System.Net ;
using System.Net.Http ;
using System.Net.Http.Headers ;
using System.Text ;
using System.Threading.Tasks ;
using System.Web.Http ;
using Xylem.Common.Logic.ServiceCore ;
namespace Xylem.Common.Service.MeterProcessState.Controllers
{
[RoutePrefix("api/PushData")]
public class PushDataController : ApiController
{
public static class GlobalConfig
{
public static Lazy < String > connectionString = new Lazy < String > ( ( )
= >
System . Configuration . ConfigurationManager . ConnectionStrings [ "default" ] . ConnectionString
) ;
}
[Route("SetOrderisFinish")]
public async Task < HttpResponseMessage > SetOrderisFinish ( int Auftrag , int Pos )
{
try
{
throw new NotImplementedException ( "TODO Roland" ) ;
}
catch ( Exception ex )
{
return Request . CreateResponse ( HttpStatusCode . InternalServerError , ex . ToString ( ) + "<br >" + ex . InnerException . ToString ( ) ) ;
}
}
2025-08-29 12:05:15 +00:00
public class retItem {
2023-05-08 12:42:27 +00:00
2025-09-02 13:43:39 +00:00
public int OrderNr { get ; internal set ; }
public int pos { get ; internal set ; }
public int Pcb { get ; internal set ; }
public DateTime kitronDate { get ; internal set ; }
2025-08-29 12:05:15 +00:00
public int SerienNr { get ; internal set ; }
}
[Route("GetOrderProductionDates")]
public async Task < HttpResponseMessage > GetOrderProductionDates ( int? Order = null , int? Pos = null , int? PcbId = null )
{
try
{
return Request . CreateResponse ( HttpStatusCode . OK , await Task . Run ( ( ) = >
{
var ret = new List < retItem > ( ) ;
using ( var dataacces = new SqlDataAccess ( GlobalConfig . connectionString . Value ) )
{
var sbq = new StringBuilder ( ) ;
sbq . AppendLine ( "select distinct AuftragNr, PositionNr, aps.SerienNr, map.MapPcbIdToSerialNumber_PcbId " +
"from Auftrag.dbo.AuftragPositionSerienNr aps " +
"inner join Auftrag.dbo.MapPcbIdToSerialNumber map " +
"on aps.SerienNr = map.MapPcbIdToSerialNumber_SerialNumber " +
"" +
"where Wiederholungen = -1 " ) ;
if ( PcbId . HasValue )
{
sbq . AppendLine ( $" and map.MapPcbIdToSerialNumber_PcbId = {PcbId.Value}" ) ;
}
else if ( Order . HasValue )
{
sbq . AppendLine ( $" and aps.AuftragNr = {Order.Value}" ) ;
if ( Pos . HasValue )
{
sbq . AppendLine ( $" and aps.PositionNr = {Pos.Value}" ) ;
}
}
else
{
return ret ;
}
var OrderRow = dataacces . ExecuteQuery ( sbq . ToString ( ) ) ;
foreach ( DataRow item in OrderRow . Rows )
{
2025-09-02 13:43:39 +00:00
try
2025-08-29 12:05:15 +00:00
{
2025-09-02 13:43:39 +00:00
var retC = new retItem ( ) ;
retC . OrderNr = ( Int32 ) item [ "AuftragNr" ] ;
retC . pos = ( short ) item [ "PositionNr" ] ;
//retC.SerienNr = (Int32)item["SerienNr"];
retC . Pcb = int . Parse ( item [ "MapPcbIdToSerialNumber_PcbId" ] . ToString ( ) ) ;
var dtPrdDate = dataacces . ExecuteQuery ( $"sELECT * FROM OPENQUERY(MyOraDB, ' SELECT JSON FROM DELTACHEF.GENESIS_PCBFUNCTIONALTEST_PD WHERE ID_PCB = ''{retC.Pcb}'' order by ID_TEST desc ');" ) ;
if ( dtPrdDate . Rows . Count > = 1 )
{
var St = dtPrdDate . Rows [ 0 ] [ "JSON" ] . ToString ( ) ;
var startInex = St . IndexOf ( "\"StartDT\":\"" ) + "\"StartDT\":\"" . Length ;
var datestring = St . Substring ( startInex , "29.07.2022 06:47:27" . Length ) ;
var olastProdDate = new DateTime ( ) ;
if ( DateTime . TryParse ( datestring , out olastProdDate ) )
{
retC . kitronDate = olastProdDate ;
}
else
{
2025-09-15 14:16:07 +00:00
retC . kitronDate = DateTime . ParseExact ( datestring , "dd.MM.yyyy HH:mm:ss" , CultureInfo . InvariantCulture ) ;
2025-09-02 13:43:39 +00:00
}
}
else
{
retC . kitronDate = DateTime . MinValue ;
}
ret . Add ( retC ) ;
2025-08-29 12:05:15 +00:00
}
2025-09-02 13:43:39 +00:00
catch ( Exception ex )
2025-08-29 12:05:15 +00:00
{
2025-09-02 13:43:39 +00:00
ret . Add ( new retItem ( ) { SerienNr = 1 , pos = 1 , OrderNr = 1 , kitronDate = DateTime . MinValue , Pcb = 1 } ) ;
2025-08-29 12:05:15 +00:00
}
2025-09-02 13:43:39 +00:00
2025-08-29 12:05:15 +00:00
}
}
return ret ;
} ) ) ;
}
catch ( Exception ex )
{
return Request . CreateResponse ( HttpStatusCode . InternalServerError , ex . ToString ( ) + "<br >" + ex . InnerException . ToString ( ) ) ;
}
}
2023-05-08 12:42:27 +00:00
}
}