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 connectionString = new Lazy(() => System.Configuration.ConfigurationManager.ConnectionStrings["default"].ConnectionString ); } [Route("GetLeakDataFull")] public async Task GetLeakDataFull(String PcbId = "" , string Auftrag = "") { try { var returnPw = "Not assigned"; var resDic = new List>(); 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>(); 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(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() + "
" + ex.InnerException.ToString()); } } } }