using Adaptation.Shared; using Adaptation.Shared.Metrology; using Adaptation.Shared.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text.Json; namespace Adaptation.FileHandlers.OpenInsightMetrologyViewer; public class WSRequest { public bool SentToMetrology { get; set; } public bool SentToSPC { get; set; } // public long Id { get; set; } public string CellName { get; set; } public string Date { get; set; } public string FilePath { get; set; } public string Layer { get; set; } public string Operator { get; set; } public string PSN { get; set; } public string RDS { get; set; } public string Reactor { get; set; } public string Recipe { get; set; } public string Title { get; set; } public string UniqueId { get; set; } public string Zone { get; set; } public string SineBevelAngle { get; set; } public string XStep { get; set; } public List Details { get; protected set; } public string ProcessDataStandardFormat { get; set; } [Obsolete("For json")] public WSRequest() { } #pragma warning disable IDE0060 internal WSRequest(IFileRead fileRead, Logistics logistics, List descriptions, string processDataStandardFormat = null) #pragma warning restore IDE0060 { ProcessDataStandardFormat = processDataStandardFormat; Id = 0; FilePath = string.Empty; CellName = logistics.MesEntity; if (descriptions[0] is not json.Description x) throw new Exception(); Details = new List(); //Header { Date = x.Date; Layer = x.Layer; Operator = x.Employee; PSN = x.PSN; RDS = x.RDS; Reactor = x.Reactor; Recipe = x.Recipe; UniqueId = x.UniqueId; Zone = x.Zone; SineBevelAngle = x.SineBevelAngle; XStep = x.XStep; } json.Detail detail; foreach (json.Description description in descriptions) { detail = new json.Detail { HeaderUniqueId = description.HeaderUniqueId, UniqueId = description.UniqueId, Depth = description.Depth, Raw = description.Raw, Edited = description.Edited, Resistivity = description.Resistivity, CD = description.CD, }; Details.Add(detail); } Date ??= logistics.DateTimeFromSequence.ToString(); if (UniqueId is null && Details.Any()) throw new Exception(); } #pragma warning disable IDE0060 internal static void PostOpenInsightMetrologyViewerAttachments(IFileRead fileRead, Logistics logistics, string openInsightMetrologyViewerAPI, DateTime dateTime, string json, List descriptions, string matchDirectory) #pragma warning restore IDE0060 { if (string.IsNullOrEmpty(json)) { WSRequest wsRequest = new(fileRead, logistics, descriptions); (json, WS.Results wsResults) = WS.SendData(openInsightMetrologyViewerAPI, wsRequest); if (!wsResults.Success) throw new Exception(wsResults.ToString()); } WS.Results metrologyWSRequest = JsonSerializer.Deserialize(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); long wsResultsHeaderID = metrologyWSRequest.HeaderID; string[] jsonFiles = Directory.GetFiles(matchDirectory, "*.json", SearchOption.TopDirectoryOnly); if (jsonFiles.Length != 1) throw new Exception($"Invalid source file count for <{wsResultsHeaderID}>!{Environment.NewLine}{json}"); List headerAttachments = new() { new WS.Attachment(descriptions[0].HeaderUniqueId, "Data.json", jsonFiles.First()) }; WS.AttachFiles(openInsightMetrologyViewerAPI, wsResultsHeaderID, headerAttachments, dataAttachments: null); } }