| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Drawing.Imaging;
 
- using System.IO;
 
- using System.Linq;
 
- using System.Text;
 
- using InABox.Core;
 
- using InABox.Dxf;
 
- namespace PRSDesktop.Integrations.V6
 
- {
 
-  
 
-     public class V6DrawingIndexEntry
 
-     {
 
-         public string FileName { get; set; }
 
-         public string FileType { get; set; }
 
-         public string NodeName { get; set; }
 
-         public string FaceIndex { get; set; }
 
-         public string CutDescriptor { get; set; }
 
-         public string CutLocation { get; set; }
 
-     }
 
-     
 
-     public class V6DrawingIndex
 
-     {
 
-         public V6DrawingIndexEntry[] Files { get; set; } = new V6DrawingIndexEntry[] { };
 
-     
 
-         public string? Version { get; set; }
 
-         
 
-     }
 
-     
 
-     public class V6Drawing
 
-     {
 
-         public string FileName { get; set; }
 
-         public V6DrawingIndexEntry Metadata { get; set; }
 
-         public byte[] Data { get; set; }
 
-     }
 
-     
 
-     public class V6Drawings : V6Object
 
-     {
 
-         public byte[] BinaryData { get; set; }
 
-         
 
-         public override void ValidateQuery(string sql, List<string> errors)
 
-         {
 
-             ValidateField(sql, nameof(BinaryData), errors);
 
-         }
 
-         
 
-         public List<V6Drawing> DecodeDrawings(string[]? filetypes)
 
-         {
 
-             string StreamToString(Stream stream)
 
-             {
 
-                 stream.Position = 0;
 
-                 using (StreamReader _reader = new StreamReader(stream, Encoding.UTF8))
 
-                     return _reader.ReadToEnd();
 
-             }
 
-             byte[] StreamToByteArray(Stream stream)
 
-             {
 
-                 using(var _memoryStream = new MemoryStream())
 
-                 {
 
-                     stream.Position = 0;
 
-                     stream.CopyTo(_memoryStream);
 
-                     return _memoryStream.ToArray();
 
-                 }
 
-             }
 
-             List<V6Drawing> _result = new();
 
-             if (BinaryData?.Any() == true)
 
-             {
 
-                 Syncfusion.Compression.Zip.ZipArchive _zip = new Syncfusion.Compression.Zip.ZipArchive();
 
-                 using (var _ms = new MemoryStream(BinaryData))
 
-                 {
 
-                     _zip.Open(_ms,false);
 
-                     var _descriptor = _zip.Items.FirstOrDefault(x =>
 
-                         string.Equals(x.ItemName, "descriptor.json", StringComparison.CurrentCultureIgnoreCase));
 
-                     if (_descriptor != null)
 
-                     {
 
-                         var _json = StreamToString(_descriptor.DataStream);
 
-                         var _drawings = Serialization.Deserialize<V6DrawingIndex>(_json) ?? new V6DrawingIndex();
 
-                         foreach (var _file in _drawings.Files)
 
-                         {
 
-                             if (filetypes == null || filetypes.Any(x =>
 
-                                     String.Equals(x, _file.FileType, StringComparison.CurrentCultureIgnoreCase)))
 
-                             {
 
-                                 var _frame = _zip.Items.FirstOrDefault(x =>
 
-                                     string.Equals(x.ItemName, _file.FileName, StringComparison.CurrentCultureIgnoreCase));
 
-                                 if (_frame != null)
 
-                                 {
 
-                                     //var _bmp = DxfUtils.ProcessImage(_frame.DataStream);
 
-                                     //using (var _bmpStream = new MemoryStream())
 
-                                     //{
 
-                                     //    _bmp.Save(_bmpStream, ImageFormat.Png);
 
-                                         var _drawing = new V6Drawing();
 
-                                         _drawing.Data = StreamToByteArray(_frame.DataStream);
 
-                                         _drawing.FileName = _file.FileName; //Path.ChangeExtension(_file.FileName, ".png");
 
-                                         _drawing.Metadata = _file;
 
-                                         _result.Add(_drawing);
 
-                                         //File.WriteAllBytes(System.IO.Path.Combine(@"c:\development\ecoview",_file.FileName),_file.Data);
 
-                                     //}
 
-                                 }
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             return _result;
 
-         }
 
-         public static string SQL = $@"select 
 
-     id.drawings as {nameof(BinaryData)} 
 
- from  
 
-     quote_item_drawings id  
 
- left outer join 
 
-     quote_item qi on qi.quote_item_id = id.quote_item_id
 
- left outer join
 
-     quote q on q.quote_id = qi.quote_id
 
- where
 
-     1=1
 
- and 
 
-     qi.quote_vers_start <= q.quote_vers and qi.quote_vers_stop >= q.quote_vers";
 
-         
 
-     }
 
- }
 
 
  |