Browse Source

Working on Logikal BOM Imports

Frank van den Bos 8 months ago
parent
commit
fbb0e48422

+ 19 - 0
InABox.Logikal/Classes/ILogikalBOMItem.cs

@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace InABox.Logikal
+{
+    public interface ILogikalBOMItem
+    {
+
+        string Code { get; set; }
+
+        string Description { get; set; }
+
+        double Quantity { get; set; }
+
+        double Cost { get; set; }
+
+    }
+}

+ 8 - 0
InABox.Logikal/Classes/ILogikalComponent.cs

@@ -0,0 +1,8 @@
+namespace InABox.Logikal
+{
+    public interface ILogikalComponent : ILogikalBOMItem
+    {
+
+        double PackSize { get; set; }
+    }
+}

+ 5 - 1
InABox.Logikal/Classes/ILogikalElevation.cs

@@ -7,7 +7,11 @@ namespace InABox.Logikal
         Guid ID { get; set; }
         
         string Name { get; set; }
-        
+
+        string Description { get; set; }
+
+        string Size { get; set; }
+
         byte[] Thumbnail { get; set; }
         
         byte[] Drawing { get; set; }

+ 10 - 0
InABox.Logikal/Classes/ILogikalGlass.cs

@@ -0,0 +1,10 @@
+namespace InABox.Logikal
+{
+    public interface ILogikalGlass : ILogikalBOMItem
+    {
+        string Treatment { get; set; }
+        double Height { get; set; }
+        double Width { get; set; }
+        string Location { get; set; }
+    }
+}

+ 6 - 0
InABox.Logikal/Classes/ILogikalLabour.cs

@@ -0,0 +1,6 @@
+namespace InABox.Logikal
+{
+    public interface ILogikalLabour : ILogikalBOMItem
+    {
+    }
+}

+ 0 - 6
InABox.Logikal/Classes/ILogikalPart.cs

@@ -1,6 +0,0 @@
-namespace InABox.Logikal
-{
-    public interface ILogikalPart
-    {
-    }
-}

+ 1 - 1
InABox.Logikal/Classes/ILogikalPhase.cs

@@ -4,7 +4,7 @@ namespace InABox.Logikal
 {
     public interface ILogikalPhase
     {
-        Guid ID { get; set; }
+        string ID { get; set; }
         string Name { get; set; }
     }
 }

+ 11 - 0
InABox.Logikal/Classes/ILogikalProfile.cs

@@ -0,0 +1,11 @@
+namespace InABox.Logikal
+{
+    public interface ILogikalProfile : ILogikalBOMItem
+    {
+
+        string Finish { get; set; }
+
+        double Length { get; set; }
+
+    }
+}

+ 2 - 0
InABox.Logikal/Classes/ILogikalProject.cs

@@ -10,5 +10,7 @@ namespace InABox.Logikal
         string Path { get; set; }
         DateTime Created { get; set; }
         DateTime LastUpdated { get; set; }
+        String JobNumber { get; set; }
+        String OfferNumber { get; set; }
     }
 }

+ 3 - 2
InABox.Logikal/Classes/ILogikalProjectCentre.cs

@@ -2,10 +2,11 @@ using System;
 
 namespace InABox.Logikal
 {
-    public interface ILogikalProjectCentre
+    public interface ILogikalProjectCentre<TProject> where TProject : ILogikalProject
     {
+        Guid ParentID { get; set; }
         Guid ID { get; set; }
         string Name { get; set; }
-        Guid ParentID { get; set; }
+        TProject[] Projects { get; set; }
     }
 }

+ 1 - 1
InABox.Logikal/LogikalMethod.cs

@@ -9,7 +9,7 @@ namespace InABox.Logikal
         Projects = 3,
         Phases = 4,
         Elevations = 5,
-        Parts = 6,
+        BOM = 6,
         Logout = 998,
         Disconnect = 999,
     }

+ 35 - 0
InABox.Logikal/Requests/LogikalBOMRequest.cs

@@ -0,0 +1,35 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public class LogikalBOMRequest : LogikalRequest
+    {
+        public override LogikalMethod Method() => LogikalMethod.BOM;
+        
+        public Guid ProjectID { get; private set; }
+               
+        public Guid ElevationID { get; private set; }
+
+        public string ProfileQuery { get; private set; }
+
+        public string ComponentQuery { get; private set; }
+        
+        public string GlassQuery { get; private set; }
+        
+        public string LabourQuery { get; private set; }
+
+        public bool IncludeExcelData { get; private set; }
+
+        public LogikalBOMRequest(Guid projectid, Guid elevationid, string profileQuery, string componentQuery, string glassQuery, string labourQuery, bool includeExcelData)
+        {
+            ProjectID = projectid;
+            ElevationID = elevationid;
+            ProfileQuery = profileQuery;
+            ComponentQuery = componentQuery;
+            GlassQuery = glassQuery;
+            LabourQuery = labourQuery;
+            IncludeExcelData = includeExcelData;
+        }
+        
+    }
+}

+ 23 - 0
InABox.Logikal/Requests/LogikalBOMResponse.cs

@@ -0,0 +1,23 @@
+namespace InABox.Logikal
+{
+    public class LogikalBOMResponse<TProfile, TComponent, TGlass, TLabour> : LogikalResponse
+        where TProfile : ILogikalProfile
+        where TComponent : ILogikalComponent
+        where TGlass : ILogikalGlass
+        where TLabour : ILogikalLabour
+    {
+        public override LogikalMethod Method() => LogikalMethod.BOM;
+
+        public TProfile[] Profiles { get; set; }
+
+        public TComponent[] Components { get; set; }
+
+        public TGlass[] Glass { get; set; }
+
+        public TLabour[] Labour { get; set; }
+
+        public byte[] ExcelData { get; set; }
+
+        public override string ToString() => $"{Profiles?.Length ?? 0} Profiles / {Components?.Length ?? 0} Components found";
+    }
+}

+ 3 - 3
InABox.Logikal/Requests/LogikalElevationsRequest.cs

@@ -8,12 +8,12 @@ namespace InABox.Logikal
         
         public Guid ProjectID { get; private set; }
         
-        public Guid PhaseID { get; private set; }
+        public String Phase { get; private set; }
         
-        public LogikalElevationsRequest(Guid projectid, Guid phaseid)
+        public LogikalElevationsRequest(Guid projectid, string phase)
         {
             ProjectID = projectid;
-            PhaseID = phaseid;
+            Phase = phase;
         }
         
     }

+ 0 - 23
InABox.Logikal/Requests/LogikalPartsRequest.cs

@@ -1,23 +0,0 @@
-using System;
-
-namespace InABox.Logikal
-{
-    public class LogikalPartsRequest : LogikalRequest
-    {
-        public override LogikalMethod Method() => LogikalMethod.Parts;
-        
-        public Guid ProjectID { get; private set; }
-        
-        public Guid PhaseID { get; private set; }
-        
-        public Guid ElevationID { get; private set; }
-        
-        public LogikalPartsRequest(Guid projectid, Guid phaseid, Guid elevationid)
-        {
-            ProjectID = projectid;
-            PhaseID = phaseid;
-            ElevationID = elevationid;
-        }
-        
-    }
-}

+ 0 - 12
InABox.Logikal/Requests/LogikalPartsResponse.cs

@@ -1,12 +0,0 @@
-namespace InABox.Logikal
-{
-    public class LogikalPartsResponse<TPart> : LogikalResponse
-        where TPart : ILogikalPart
-    {
-        public override LogikalMethod Method() => LogikalMethod.Parts;
-
-        public TPart[] Parts { get; set; }
-
-        public override string ToString() => $"{Parts?.Length ?? 0} Parts found";
-    }
-}

+ 3 - 1
InABox.Logikal/Requests/LogikalProjectCentresResponse.cs

@@ -1,6 +1,8 @@
 namespace InABox.Logikal
 {
-    public class LogikalProjectCentresResponse<TProjectCentre> : LogikalResponse where TProjectCentre : ILogikalProjectCentre
+    public class LogikalProjectCentresResponse<TProjectCentre,TProject> : LogikalResponse         
+        where TProjectCentre : ILogikalProjectCentre<TProject>
+        where TProject : ILogikalProject
     {
         public override LogikalMethod Method() => LogikalMethod.ProjectCentres;
 

+ 3 - 3
InABox.Logikal/Requests/LogikalProjectsRequest.cs

@@ -6,11 +6,11 @@ namespace InABox.Logikal
     {
         public override LogikalMethod Method() => LogikalMethod.Projects;
         
-        public Guid ProjectCentreID { get; private set; }
+        public String JobNumber { get; private set; }
 
-        public LogikalProjectsRequest(Guid projectcentreid)
+        public LogikalProjectsRequest(String jobnumber)
         {
-            ProjectCentreID = projectcentreid;
+            JobNumber = jobnumber;
         }
     }
 }