aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.CoatsCatalogImporter/Program.cs
blob: a0b828b71b01f2130da2ac63f399af9622869e6c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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<CatalogItem>("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<Rgb>();

                            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();
            }
        }
    }
}