using ColorMine.ColorSpaces; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core.Helpers; using Tango.Documents; namespace Tango.CoatsCatalogImporter { class Program { private class CatalogItem { public String ShadeName { get; set; } public int SerialNumber { get; set; } public String Strip { get; set; } public String ShadeCode { get; set; } public String Color { get; set; } public float L { get; set; } public float A { get; set; } public float B { get; set; } public int OutOfGamut { get; set; } public String Nothing { get; set; } public float DeltaE { get; set; } public String Flurecent { get; set; } public float Cyan { get; set; } public float Magenta { get; set; } public float Yellow { get; set; } public float Black { get; set; } public int GamutRegion { get; set; } } static void Main(string[] args) { ExcelReader reader = new ExcelReader(AssemblyHelper.GetCurrentAssemblyFolder() + "\\coats.xlsx"); var items = reader.GetDataByIndex("Volume 200%", 3); reader.Dispose(); Console.Write("Please enter the target RML name (press enter to target all): "); String rml_name = Console.ReadLine(); if (!String.IsNullOrWhiteSpace(rml_name)) { using (ObservablesContext db = ObservablesContext.CreateDefault(new Core.DataSource() { Address = "twine.database.windows.net", Catalog = "Tango", Type = Core.DataSourceType.SQLServer, UserName = "Roy", Password = "Aa123456", IntegratedSecurity = false, })) { var rml = db.Rmls.Single(x => x.Name == rml_name); var coats_color_space_guid = db.ColorSpaces.Single(x => (ColorSpaces)x.Code == ColorSpaces.Coats).Guid; foreach (var strip in items.GroupBy(x => x.Strip)) { foreach (var item in strip) { bool inserting = false; var catalogItem = db.ColorCatalogs.SingleOrDefault(x => x.RmlGuid == rml.Guid && x.ColorCode == item.SerialNumber && x.ColorSpaceGuid == coats_color_space_guid); if (catalogItem == null) { inserting = true; catalogItem = new ColorCatalog(); } catalogItem.ColorCode = item.SerialNumber; Lab lab = new Lab(item.L, item.A, item.B); Rgb rgb = lab.To(); catalogItem.L = lab.L; catalogItem.A = lab.A; catalogItem.B = lab.B; catalogItem.Red = (int)rgb.R; catalogItem.Green = (int)rgb.G; catalogItem.Blue = (int)rgb.B; catalogItem.Cyan = item.Cyan; catalogItem.Magenta = item.Magenta; catalogItem.Yellow = item.Yellow; catalogItem.Black = item.Black; catalogItem.L = item.L; catalogItem.A = item.A; catalogItem.B = item.B; catalogItem.ProcessParametersTableIndex = item.GamutRegion; catalogItem.ColorSpaceGuid = coats_color_space_guid; catalogItem.RmlGuid = rml.Guid; catalogItem.ColorGroup = "Strip " + item.Strip; catalogItem.Name = item.ShadeCode; if (inserting) { db.ColorCatalogs.Add(catalogItem); Console.WriteLine($"Added catalog item {catalogItem.Name}..."); } else { Console.WriteLine($"Updated catalog item {catalogItem.Name}..."); } } } db.SaveChanges(); Console.WriteLine("Done"); Console.ReadLine(); } } else { throw new NotImplementedException(); } } } }