laatzen/Common/Service/MeterProcessState/Controllers/EasyAccessControler.cs

169 lines
8.0 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
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/EasyAccess")]
public class EasyAccessController : ApiController
{
public static class GlobalConfig
{
public static Lazy<String> connectionString = new Lazy<String>(()
=>
System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString
);
}
[Route("GetLeakDataFull")]
public async Task<HttpResponseMessage> GetLeakDataFull(String PcbId = "" , string Auftrag = "")
{
try
{
var returnPw = "Not assigned";
var resDic = new List<Tuple<string, string>>();
using (var dataAccess = new SqlDataAccess(GlobalConfig.connectionString.Value))
{
StringBuilder query = new StringBuilder();
query.AppendLine("SELECT * ");
query.AppendLine(" FROM [Auftrag].[dbo].[Cordonel_PressureTest] pt ");
query.AppendLine(" inner join Cordonel_PressureTest_He he on pt.CordonelPressureTest_Id = he.CordonelPressureTestHe_TestID ");
query.AppendLine(" left outer join Druckpruefung c on pt.[CordonelPressureTest_PcbId] = c.FabNr ");
query.AppendLine(" where 1 = 1 ");
if (!string.IsNullOrEmpty(PcbId))
{
query.AppendLine($" and pt.[CordonelPressureTest_PcbId] = {PcbId} ");
}
if (!string.IsNullOrEmpty(Auftrag))
{
query.AppendLine($" and pt.[CordonelPressureTest_FertigungsAuftragsNr] = {Auftrag} ");
}
query.AppendLine(" order by 1 desc ");
var retDic = new List<Tuple<string, string>>();
var dt = dataAccess.ExecuteQuery(query.ToString());
foreach (var item in dt.Select())
{
var sb = new StringBuilder();
try
{
sb.Append(item["CordonelPressureTest_Id"]).Append(";");
sb.Append(item["CordonelPressureTest_PcbId"]).Append(";");
sb.Append(item["CordonelPressureTest_FertigungsAuftragsNr"]).Append(";");
sb.Append(item["CordonelPressureTest_Date"]).Append(";");
sb.Append(item["CordonelPressureTest_Valid"]).Append(";");
sb.Append(item["CordonelPressureTest_IsDeleted"]).Append(";");
sb.Append(item["CordonelPressureTest_Text"]).Append(";");
sb.Append(item["CordonelPressureTestHe_LeakRate"]).Append(";");
sb.Append(item["CordonelPressureTestHe_TestPressure"]).Append(";");
sb.Append(item["CordonelPressureTestHe_TesterName"]).Append(";");
if (item["Pruefgang"] != DBNull.Value)
{
sb.Append(item["Pruefgang"]).Append(";");
sb.Append(item["Datum"]).Append(";");
sb.Append(item["StartDruck"]).Append(";");
sb.Append(item["EndDruck"]).Append(";");
sb.Append(item["Pruefzeit"]).Append(";");
sb.Append(item["Pruefer"]).Append(";");
sb.Append(item["Dicht"]).Append(";");
}
else
{
sb.Append("keine Kottmann Prüfung gefunden;;;;;;;");
}
retDic.Add( new Tuple<string,string>(item["CordonelPressureTest_Id"].ToString(), sb.ToString()));
}
catch (Exception ex)
{
throw;
}
}
var sbRet = new StringBuilder();
sbRet.Append("CordonelPressureTest_Id").Append(";");
sbRet.Append("CordonelPressureTest_PcbId").Append(";");
sbRet.Append("CordonelPressureTest_FertigungsAuftragsNr").Append(";");
sbRet.Append("CordonelPressureTest_Date").Append(";");
sbRet.Append("CordonelPressureTest_Valid").Append(";");
sbRet.Append("CordonelPressureTest_IsDeleted").Append(";");
sbRet.Append("CordonelPressureTest_Text").Append(";");
sbRet.Append("CordonelPressureTestHe_LeakRate").Append(";");
sbRet.Append("CordonelPressureTestHe_TestPressure").Append(";");
sbRet.Append("CordonelPressureTestHe_TesterName").Append(";");
sbRet.Append("Pruefgang").Append(";");
sbRet.Append("Datum").Append(";");
sbRet.Append("StartDruck").Append(";");
sbRet.Append("EndDruck").Append(";");
sbRet.Append("Pruefzeit").Append(";");
sbRet.Append("Pruefer").Append(";");
sbRet.Append("Dicht").Append(";");
sbRet.Append("HE_TestPoints").Append(";");
sbRet.AppendLine();
foreach (var item in retDic)
{
dt = dataAccess.ExecuteQuery($" select * from Cordonel_PressureTest_TestPoints where CordonelPressureTest_Id = {item.Item1} order by CordonelPressureTest_TestPointNr ASC");
var sbTp = new StringBuilder();
foreach (var itemTP in dt.Select())
{
sbTp.Append("Nr ");
sbTp.Append(itemTP["CordonelPressureTest_TestPointNr"]);
sbTp.Append("= ");
sbTp.Append(itemTP["CordonelPressureTest_TestPointResult"]);
sbTp.Append(" and ");
}
sbRet.Append(item.Item2);
sbRet.Append(sbTp.ToString());
sbRet.AppendLine(";");
}
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StringContent(sbRet.ToString());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.ms-excel");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); //attachment will force download
result.Content.Headers.ContentDisposition.FileName = "RecordExport.csv";
return result;
}
}
catch (Exception ex)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString() + "<br >" + ex.InnerException.ToString());
}
}
}
}