Bläddra i källkod

Separated Logikal BOM and Elevation Requests

Frank van den Bos 8 månader sedan
förälder
incheckning
4a2725852b

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

@@ -13,8 +13,6 @@ namespace InABox.Logikal
         string Size { get; set; }
 
         byte[] Thumbnail { get; set; }
-        
-        byte[] Drawing { get; set; }
-        
+   
     }
 }

+ 6 - 4
InABox.Logikal/LogikalMethod.cs

@@ -7,10 +7,12 @@ namespace InABox.Logikal
         Login = 1,
         ProjectCentres = 2,
         Projects = 3,
-        Phases = 4,
-        Elevations = 5,
-        BOM = 6,
+        Project = 4,
+        Phases = 5,
+        Elevations = 6,
+        BOM = 7,
+        Elevation = 8,
         Logout = 998,
-        Disconnect = 999,
+        Disconnect = 999
     }
 }

+ 33 - 0
InABox.Logikal/Requests/AbstractLogikalPartsRequest.cs

@@ -0,0 +1,33 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public abstract class AbstractLogikalPartsRequest : LogikalRequest
+    {
+       
+        public Guid ProjectID { 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; }
+
+        protected AbstractLogikalPartsRequest(Guid projectid, string profileQuery, string componentQuery, string glassQuery, string labourQuery, bool includeExcelData)
+        {
+            ProjectID = projectid;
+            ProfileQuery = profileQuery;
+            ComponentQuery = componentQuery;
+            GlassQuery = glassQuery;
+            LabourQuery = labourQuery;
+            IncludeExcelData = includeExcelData;
+        }
+        
+    }
+
+
+}

+ 24 - 0
InABox.Logikal/Requests/AbstractLogikalPartsResponse.cs

@@ -0,0 +1,24 @@
+namespace InABox.Logikal
+{
+    public abstract class AbstractLogikalPartsResponse<TProfile, TComponent, TGlass, TLabour> : LogikalResponse
+        where TProfile : ILogikalProfile
+        where TComponent : ILogikalComponent
+        where TGlass : ILogikalGlass
+        where TLabour : ILogikalLabour
+    {
+       
+        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";
+    }
+
+
+}

+ 10 - 24
InABox.Logikal/Requests/LogikalBOMRequest.cs

@@ -2,34 +2,20 @@ 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 class LogikalBOMRequest : AbstractLogikalPartsRequest
+    {
 
-        public string ComponentQuery { get; private set; }
-        
-        public string GlassQuery { get; private set; }
-        
-        public string LabourQuery { get; private set; }
+        public override LogikalMethod Method() => LogikalMethod.BOM;
 
-        public bool IncludeExcelData { get; private set; }
+        public Guid[] ElevationIDs { 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;
+        public LogikalBOMRequest(Guid projectid, Guid[] elevationids, string profileQuery, string componentQuery, string glassQuery, string labourQuery, bool includeExcelData)
+        : base(projectid, profileQuery, componentQuery, glassQuery, labourQuery, includeExcelData)
+        { 
+            ElevationIDs = elevationids;
         }
-        
     }
+
+
 }

+ 3 - 12
InABox.Logikal/Requests/LogikalBOMResponse.cs

@@ -1,23 +1,14 @@
 namespace InABox.Logikal
 {
-    public class LogikalBOMResponse<TProfile, TComponent, TGlass, TLabour> : LogikalResponse
+
+    public class LogikalBOMResponse<TProfile, TComponent, TGlass, TLabour> : AbstractLogikalPartsResponse<TProfile, TComponent, TGlass, TLabour>
         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";
-    }
 }

+ 19 - 0
InABox.Logikal/Requests/LogikalElevationRequest.cs

@@ -0,0 +1,19 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public class LogikalElevationRequest : AbstractLogikalPartsRequest
+    {
+
+        public override LogikalMethod Method() => LogikalMethod.Elevation;
+
+        public Guid ElevationID { get; private set; }
+
+        public LogikalElevationRequest(Guid projectid, Guid elevationid, string profileQuery, string componentQuery, string glassQuery, string labourQuery, bool includeExcelData)
+        : base(projectid, profileQuery, componentQuery, glassQuery, labourQuery, includeExcelData)
+        {
+            ElevationID = elevationid;
+        }
+    }
+
+}

+ 29 - 0
InABox.Logikal/Requests/LogikalElevationResponse.cs

@@ -0,0 +1,29 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public class LogikalElevationResponse<TProfile, TComponent, TGlass, TLabour> 
+        : AbstractLogikalPartsResponse<TProfile, TComponent, TGlass, TLabour>, ILogikalElevation
+        where TProfile : ILogikalProfile
+        where TComponent : ILogikalComponent
+        where TGlass : ILogikalGlass
+        where TLabour : ILogikalLabour
+    {
+
+        public override LogikalMethod Method() => LogikalMethod.Elevation;
+
+        public Guid ID { get; set; }
+
+        public string Name { get; set; }
+
+        public string Description { get; set; }
+
+        public string Size { get; set; }
+
+        public byte[] Thumbnail { get; set; }
+
+        public byte[] Drawing { get; set; }
+    }
+
+
+}

+ 16 - 0
InABox.Logikal/Requests/LogikalProjectRequest.cs

@@ -0,0 +1,16 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public class LogikalProjectRequest : LogikalRequest
+    {
+        public override LogikalMethod Method() => LogikalMethod.Project;
+
+        public Guid ProjectID { get; private set; }
+
+        public LogikalProjectRequest(Guid projectid)
+        {
+            ProjectID = projectid;
+        }
+    }
+}

+ 30 - 0
InABox.Logikal/Requests/LogikalProjectResponse.cs

@@ -0,0 +1,30 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public class LogikalProjectResponse : LogikalResponse, ILogikalProject 
+    {
+
+        public override LogikalMethod Method() => LogikalMethod.Project;
+
+        public Guid ID { get; set; }
+
+        public string Name { get; set; }
+
+        public string PersonInCharge { get; set; }
+
+        public string Path { get; set; }
+
+        public DateTime Created { get; set; }
+
+        public DateTime LastUpdated { get; set; }
+
+        public string JobNumber { get; set; }
+
+        public string OfferNumber { get; set; }
+
+        public override string ToString() => $"Found Project [{ID}]: [{Name}]";
+
+
+    }
+}