ソースを参照

Improvements to Logikal interface

frogsoftware 10 ヶ月 前
コミット
7eaf0213d3

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

@@ -2,14 +2,15 @@ using System;
 
 namespace InABox.Logikal
 {
-    public interface ILogikalElevation<T> where T : ILogikalPart
+    public interface ILogikalElevation
     {
         Guid ID { get; set; }
+        
         string Name { get; set; }
-        string Phase { get; set; }
+        
         byte[] Thumbnail { get; set; }
+        
         byte[] Drawing { get; set; }
         
-        T[] Parts { get; set; }
     }
 }

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

@@ -0,0 +1,10 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public interface ILogikalPhase
+    {
+        Guid ID { get; set; }
+        string Name { get; set; }
+    }
+}

+ 1 - 4
InABox.Logikal/Classes/ILogikalProject.cs

@@ -2,9 +2,7 @@ using System;
 
 namespace InABox.Logikal
 {
-    public interface ILogikalProject<TElevation,TPart> 
-        where TElevation : ILogikalElevation<TPart>
-        where TPart : ILogikalPart
+    public interface ILogikalProject
     {
         Guid ID { get; set; }
         string Name { get; set; }
@@ -12,6 +10,5 @@ namespace InABox.Logikal
         string Path { get; set; }
         DateTime Created { get; set; }
         DateTime LastUpdated { get; set; }
-        TElevation[] Elevations { get; set; }
     }
 }

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

@@ -0,0 +1,11 @@
+using System;
+
+namespace InABox.Logikal
+{
+    public interface ILogikalProjectCentre
+    {
+        Guid ID { get; set; }
+        string Name { get; set; }
+        Guid ParentID { get; set; }
+    }
+}

+ 6 - 4
InABox.Logikal/LogikalMethod.cs

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

+ 2 - 1
InABox.Logikal/LogikalStatus.cs

@@ -19,7 +19,8 @@ namespace InABox.Logikal
         NotLoggedIn = 512,
         InvalidProjectID = 1024,
         InvalidElevationID = 2048,
-        ElevationNotFound = 4096,
+        InvalidPhaseID = 4096,
+        ElevationNotFound = 8192,
 
         IsError = ~Ok,
 

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

@@ -1,10 +0,0 @@
-using System;
-
-namespace InABox.Logikal
-{
-    public class LogikalElevationRequest : LogikalRequest
-    {
-        public override LogikalMethod Method() => LogikalMethod.Elevation;
-        public Guid ID { get; set; }
-    }
-}

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

@@ -1,13 +0,0 @@
-namespace InABox.Logikal
-{
-    public class LogikalElevationResponse<TElevation, TPart> : LogikalResponse
-        where TElevation : ILogikalElevation<TPart>
-        where TPart : ILogikalPart
-    {
-        public override LogikalMethod Method() => LogikalMethod.Elevation;
-        
-        public TElevation Elevation { get; set; }
-
-        public override string ToString() => Elevation?.Name ?? "";
-    }
-}

+ 20 - 0
InABox.Logikal/Requests/LogikalElevationsRequest.cs

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

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

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

+ 10 - 0
InABox.Logikal/Requests/LogikalErrorRequest.cs

@@ -11,6 +11,16 @@ namespace InABox.Logikal
 
         public override string ToString() => $"{Status}: {Message}";
 
+        public LogikalErrorRequest()
+        {
+        }
+        
+        public LogikalErrorRequest(LogikalStatus status, string message)
+        {
+            Status = status;
+            Message = message;
+        }
+
     }
 
 

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

@@ -0,0 +1,23 @@
+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;
+        }
+        
+    }
+}

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

@@ -0,0 +1,12 @@
+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";
+    }
+}

+ 17 - 0
InABox.Logikal/Requests/LogikalPhasesRequest.cs

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

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

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

+ 7 - 0
InABox.Logikal/Requests/LogikalProjectCentresRequest.cs

@@ -0,0 +1,7 @@
+namespace InABox.Logikal
+{
+    public class LogikalProjectCentresRequest : LogikalRequest
+    {
+        public override LogikalMethod Method() => LogikalMethod.ProjectCentres;
+    }
+}

+ 11 - 0
InABox.Logikal/Requests/LogikalProjectCentresResponse.cs

@@ -0,0 +1,11 @@
+namespace InABox.Logikal
+{
+    public class LogikalProjectCentresResponse<TProjectCentre> : LogikalResponse where TProjectCentre : ILogikalProjectCentre
+    {
+        public override LogikalMethod Method() => LogikalMethod.ProjectCentres;
+
+        public TProjectCentre[] ProjectCentres { get; set; }
+
+        public override string ToString() => $"{ProjectCentres?.Length ?? 0} Project Centres found";
+    }
+}

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

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

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

@@ -1,14 +0,0 @@
-namespace InABox.Logikal
-{
-    public class LogikalProjectResponse<TProject, TElevation, TPart> : LogikalResponse
-        where TProject : ILogikalProject<TElevation, TPart>
-        where TElevation : ILogikalElevation<TPart>
-        where TPart : ILogikalPart
-    {
-        public override LogikalMethod Method() => LogikalMethod.Project;
-        
-        public TProject Project { get; set; }
-
-        public override string ToString() => Project.Name ?? "";
-    }
-}

+ 6 - 0
InABox.Logikal/Requests/LogikalProjectsRequest.cs

@@ -5,6 +5,12 @@ namespace InABox.Logikal
     public class LogikalProjectsRequest : LogikalRequest
     {
         public override LogikalMethod Method() => LogikalMethod.Projects;
+        
+        public Guid ProjectCentreID { get; private set; }
 
+        public LogikalProjectsRequest(Guid projectcentreid)
+        {
+            ProjectCentreID = projectcentreid;
+        }
     }
 }

+ 1 - 5
InABox.Logikal/Requests/LogikalProjectsResponse.cs

@@ -3,10 +3,7 @@ using Newtonsoft.Json;
 
 namespace InABox.Logikal
 {
-    public class LogikalProjectsResponse<TProject,TElevation,TPart> : LogikalResponse
-        where TProject : ILogikalProject<TElevation,TPart>
-        where TElevation : ILogikalElevation<TPart>
-        where TPart : ILogikalPart
+    public class LogikalProjectsResponse<TProject> : LogikalResponse where TProject : ILogikalProject
     {
         public override LogikalMethod Method() => LogikalMethod.Projects;
 
@@ -14,5 +11,4 @@ namespace InABox.Logikal
 
         public override string ToString() => $"{Projects?.Length ?? 0} Projects found";
     }
-
 }