git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 17 Aug 2018 13:23:41 +0000 (13:23 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Fri, 17 Aug 2018 13:23:41 +0000 (13:23 +0000)
12 files changed:
client/AudioRecorder/AudioRecorder.csproj
client/AudioRecorder/Configuration/audiorecorder.json
client/AudioRecorder/Configuration/audiorecorder.json1 [new file with mode: 0644]
client/MaestroShared/Configuration/ConfigurationInfo.cs
client/MetadataSelector/MetadataIDSelector.Designer.cs
client/MetadataSelector/MetadataIDSelector.cs
client/NativeOctopusClient/Model/Rundown.cs
client/NativeOctopusClient/Model/Story.cs
client/NativeOctopusClient/NativeOctopusAPI.cs
client/NativeOctopusClient/NativeOctopusIDSelector.Designer.cs
client/NativeOctopusClient/NativeOctopusIDSelector.cs
client/NativeOctopusClient/NativeOctopusParameters.cs

index 08654bc14082a616805db72fae6df907f6dffb34..aa4367631eeacc95520471cd6489a4f25030fba2 100644 (file)
       <Generator>ResXFileCodeGenerator</Generator>\r
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>\r
     </EmbeddedResource>\r
+    <None Include="Configuration\audiorecorder.json1">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
     <None Include="nlog.config">\r
       <SubType>Designer</SubType>\r
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>\r
index 8355ad25a3132eacb56fbeaab7289b2fd8b276f5..8cb6ec83aff8a5653a7e04ee5bf46d513e9d8312 100644 (file)
     }\r
   },\r
   "metadatas": [\r
-    {\r
-      "$type": "OctopusMetadata",\r
-      "disableStoryCheck": true,\r
-      "server": {\r
-        "address": "http://10.10.1.27/services/rest/octopus/",\r
-        "timeout": 1000\r
-      }\r
-    },\r
     {\r
       "$type": "NativeOctopusMetadata",\r
       "server": {\r
         "address": " http://10.10.1.11/api/v1/",\r
         "userName": "mam",\r
         "password": "fPLnV9N5gc7aC9ICvspjzJkGLnTWxAgEhwGOrXilAiD8+/IXviRlNJA0lrZ3ZX+7WG5EE3ZlaIitAhRGk+QIPGEOF3fEJCBJI2I9NN1e2JGi/my3WwXt0fu7dgbMxVid",\r
-        "timeout": 1000\r
+        "timeout": 3000\r
       }\r
     },\r
     {\r
diff --git a/client/AudioRecorder/Configuration/audiorecorder.json1 b/client/AudioRecorder/Configuration/audiorecorder.json1
new file mode 100644 (file)
index 0000000..c2cc507
--- /dev/null
@@ -0,0 +1,68 @@
+{\r
+  "deviceName": "",\r
+  "workingDirectory": "file://C:\\temp",\r
+  "peekMeterStep": 200,\r
+  "octopusTarget": {\r
+    "label": "Octopus mappába küldés",\r
+    "processor": "FTPTargetProcessor",\r
+    "tag": "Betöltés",\r
+    "outputFormat": "%ID%",\r
+    "subFolderFormat": "%IDROOT%-%TEXT%",\r
+    "killDateDays": 7,\r
+    "remote": {\r
+      "address": "ftp://10.10.1.100/OCTOPUS",\r
+      "userName": "mediacube",\r
+      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+      "timeout": 1000\r
+    }\r
+  },\r
+  "trafficTarget": {\r
+    "label": "Traffic mappába küldés",\r
+    "processor": "FTPTargetProcessor",\r
+    "tag": "Betöltés",\r
+    "outputFormat": "%ID%",\r
+    "subFolderFormat": "%IDROOT%-%TEXT%",\r
+    "killDateDays": 7,\r
+    "remote": {\r
+      "address": "ftp://10.10.1.100/PLAYOUT_NLE",\r
+      "userName": "mediacube",\r
+      "password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
+      "timeout": 1000\r
+    }\r
+  },\r
+  "metadatas": [\r
+    {\r
+      "$type": "OctopusMetadata",\r
+      "disableStoryCheck": true,\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/octopus/",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "NativeOctopusMetadata",\r
+      "server": {\r
+        "address": " http://10.10.1.11/api/v1/",\r
+        "userName": "mam",\r
+        "password": "fPLnV9N5gc7aC9ICvspjzJkGLnTWxAgEhwGOrXilAiD8+/IXviRlNJA0lrZ3ZX+7WG5EE3ZlaIitAhRGk+QIPGEOF3fEJCBJI2I9NN1e2JGi/my3WwXt0fu7dgbMxVid",\r
+        "timeout": 3000\r
+      }\r
+    },\r
+    {\r
+      "$type": "TrafficMetadata",\r
+      "server": {\r
+        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+        "userName": "MAM",\r
+        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+        "timeout": 1000\r
+      }\r
+    },\r
+    {\r
+      "$type": "MediaCubeMetadata",\r
+      "server": {\r
+        "address": "http://10.10.1.27/services/rest/jobengine/",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+  ]\r
+}
\ No newline at end of file
index f0826a55077d58b7c5342c7e4a943f6b61c2c795..67bee0e9b82d636b9cc78523e214529afa23f84e 100644 (file)
@@ -175,11 +175,11 @@ namespace MaestroShared.Configuration {
     public class OctopusMetadata : MetadataProvider {\r
         public bool DisablePlaceHolderCheck { get; set; }\r
         public bool DisableStoryCheck { get; set; }\r
-        public string RundownStoryFormat { get; set; }\r
         public ProjectSettings ProjectSettings { get; set; }\r
     }\r
 \r
-    public class NativeOctopusMetadata : OctopusMetadata {\r
+    public class NativeOctopusMetadata : MetadataProvider {\r
+        public ProjectSettings ProjectSettings { get; set; }\r
     }\r
 \r
     public class TrafficMetadata : MetadataProvider {\r
index b69fed4a1ec4bbc7f125f1ebe29add4024c9a2ed..dfa74a37dd329d863db1ba9d1dc329e5f3f0e8ac 100644 (file)
             this.tabMetadata = new System.Windows.Forms.TabControl();\r
             this.tpOctopus = new System.Windows.Forms.TabPage();\r
             this.octopusIDSelector = new OctopusClient.OctopusIDSelector();\r
+            this.tpNativeOctopus = new System.Windows.Forms.TabPage();\r
+            this.nativeOctopusIDSelector = new NativeOctopusClient.NativeOctopusIDSelector();\r
             this.tpTraffic = new System.Windows.Forms.TabPage();\r
             this.trafficIDSelector = new TrafficClient.TrafficIDSelector();\r
             this.pMetadataDisplay = new System.Windows.Forms.TableLayoutPanel();\r
             this.btnLookupMetadata = new System.Windows.Forms.Button();\r
             this.labelSelectedMetadata = new System.Windows.Forms.Label();\r
             this.textSelectedMetadata = new System.Windows.Forms.TextBox();\r
-            this.tpNativeOctopus = new System.Windows.Forms.TabPage();\r
-            this.nativeOctopusIDSelector = new NativeOctopusClient.NativeOctopusIDSelector();\r
             this.tabMetadata.SuspendLayout();\r
             this.tpOctopus.SuspendLayout();\r
+            this.tpNativeOctopus.SuspendLayout();\r
             this.tpTraffic.SuspendLayout();\r
             this.pMetadataDisplay.SuspendLayout();\r
-            this.tpNativeOctopus.SuspendLayout();\r
             this.SuspendLayout();\r
             // \r
             // tabMetadata\r
             this.octopusIDSelector.Size = new System.Drawing.Size(359, 422);\r
             this.octopusIDSelector.TabIndex = 0;\r
             // \r
+            // tpNativeOctopus\r
+            // \r
+            this.tpNativeOctopus.BackColor = System.Drawing.Color.Transparent;\r
+            this.tpNativeOctopus.Controls.Add(this.nativeOctopusIDSelector);\r
+            this.tpNativeOctopus.Location = new System.Drawing.Point(4, 24);\r
+            this.tpNativeOctopus.Name = "tpNativeOctopus";\r
+            this.tpNativeOctopus.Padding = new System.Windows.Forms.Padding(3);\r
+            this.tpNativeOctopus.Size = new System.Drawing.Size(365, 428);\r
+            this.tpNativeOctopus.TabIndex = 2;\r
+            this.tpNativeOctopus.Text = "Octopus";\r
+            // \r
+            // nativeOctopusIDSelector\r
+            // \r
+            this.nativeOctopusIDSelector.BackColor = System.Drawing.Color.Transparent;\r
+            this.nativeOctopusIDSelector.Dock = System.Windows.Forms.DockStyle.Fill;\r
+            this.nativeOctopusIDSelector.IDChangedEvent = null;\r
+            this.nativeOctopusIDSelector.Location = new System.Drawing.Point(3, 3);\r
+            this.nativeOctopusIDSelector.Name = "nativeOctopusIDSelector";\r
+            this.nativeOctopusIDSelector.Size = new System.Drawing.Size(359, 422);\r
+            this.nativeOctopusIDSelector.TabIndex = 0;\r
+            // \r
             // tpTraffic\r
             // \r
             this.tpTraffic.BackColor = System.Drawing.Color.Transparent;\r
             this.textSelectedMetadata.TextChanged += new System.EventHandler(this.OnSelectedMetadataIDChanged);\r
             this.textSelectedMetadata.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnSelectedMetadataIDKeyDown);\r
             // \r
-            // tpNativeOctopus\r
-            // \r
-            this.tpNativeOctopus.Controls.Add(this.nativeOctopusIDSelector);\r
-            this.tpNativeOctopus.Location = new System.Drawing.Point(4, 24);\r
-            this.tpNativeOctopus.Name = "tpNativeOctopus";\r
-            this.tpNativeOctopus.Padding = new System.Windows.Forms.Padding(3);\r
-            this.tpNativeOctopus.Size = new System.Drawing.Size(365, 428);\r
-            this.tpNativeOctopus.TabIndex = 2;\r
-            this.tpNativeOctopus.Text = "Octopus";\r
-            this.tpNativeOctopus.UseVisualStyleBackColor = true;\r
-            // \r
-            // nativeOctopusIDSelector\r
-            // \r
-            this.nativeOctopusIDSelector.BackColor = System.Drawing.Color.Transparent;\r
-            this.nativeOctopusIDSelector.Dock = System.Windows.Forms.DockStyle.Fill;\r
-            this.nativeOctopusIDSelector.IDChangedEvent = null;\r
-            this.nativeOctopusIDSelector.Location = new System.Drawing.Point(3, 3);\r
-            this.nativeOctopusIDSelector.Name = "nativeOctopusIDSelector";\r
-            this.nativeOctopusIDSelector.Size = new System.Drawing.Size(359, 422);\r
-            this.nativeOctopusIDSelector.TabIndex = 0;\r
-            // \r
             // MetadataIDSelector\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
             this.Size = new System.Drawing.Size(373, 513);\r
             this.tabMetadata.ResumeLayout(false);\r
             this.tpOctopus.ResumeLayout(false);\r
+            this.tpNativeOctopus.ResumeLayout(false);\r
             this.tpTraffic.ResumeLayout(false);\r
             this.tpTraffic.PerformLayout();\r
             this.pMetadataDisplay.ResumeLayout(false);\r
             this.pMetadataDisplay.PerformLayout();\r
-            this.tpNativeOctopus.ResumeLayout(false);\r
             this.ResumeLayout(false);\r
             this.PerformLayout();\r
 \r
index 0f6e5a7fa2e61a8c0c379e946646baa41eb204b2..a576628bf1b0ee4b33bc2ad1b8070af2ecb270a4 100644 (file)
@@ -124,36 +124,45 @@ namespace MaestroShared.Controls {
                     config = MetadataProvider.Get<TrafficMetadata>(Providers);\r
                     if (config == null)\r
                         return;\r
-                    tabMetadata.SelectedIndex = tabMetadata.TabCount > 1 ? 1 : 0;\r
+                    tabMetadata.SelectedTab =  tpTraffic;\r
                     trafficIDSelector.LookupByMaterialID(id);\r
                     break;\r
                 case MetadataType.TrafficPromo:\r
                     config = MetadataProvider.Get<TrafficMetadata>(Providers);\r
                     if (config == null)\r
                         return;\r
-                    tabMetadata.SelectedIndex = tabMetadata.TabCount > 1 ? 1 : 0;\r
+                    tabMetadata.SelectedTab = tpTraffic;\r
                     trafficIDSelector.LookupByPromoID(id);\r
                     break;\r
                 case MetadataType.TrafficAD:\r
                     config = MetadataProvider.Get<TrafficMetadata>(Providers);\r
                     if (config == null)\r
                         return;\r
-                    tabMetadata.SelectedIndex = tabMetadata.TabCount > 1 ? 1 : 0;\r
+                    tabMetadata.SelectedTab = tpTraffic;\r
                     trafficIDSelector.LookupByADID(id);\r
                     break;\r
                 case MetadataType.OctopusPlaceHolder:\r
                     config = MetadataProvider.Get<OctopusMetadata>(Providers);\r
                     if (config == null)\r
                         return;\r
-                    tabMetadata.SelectedIndex = 0;\r
+                    tabMetadata.SelectedTab = tpOctopus;\r
                     octopusIDSelector.LookupByPlaceHolder(id);\r
                     break;\r
                 case MetadataType.OctopusStory:\r
                     config = MetadataProvider.Get<OctopusMetadata>(Providers);\r
-                    if (config == null)\r
+                    if (config != null) {\r
+                        tabMetadata.SelectedTab = tpOctopus;\r
+                        octopusIDSelector.LookupByStory(id);\r
+                        return;\r
+                    }\r
+\r
+                    config = MetadataProvider.Get<NativeOctopusMetadata>(Providers);\r
+                    if (config != null) {\r
+                        tabMetadata.SelectedTab = tpNativeOctopus;\r
+                        nativeOctopusIDSelector.LookupByStory(id);\r
                         return;\r
-                    tabMetadata.SelectedIndex = 0;\r
-                    octopusIDSelector.LookupByStory(id);\r
+                    }\r
+\r
                     break;\r
             }\r
         }\r
index c1954dbc64d7dde90f1cdb6bc413dec30a6935dd..4951bbae4d5a64ba47c3a7a9e76f5df19612f448 100644 (file)
@@ -1,6 +1,5 @@
 using Newtonsoft.Json.Linq;\r
 using System;\r
-using System.Globalization;\r
 \r
 namespace NativeOctopusClient.Model {\r
     public class Rundown {\r
@@ -17,15 +16,17 @@ namespace NativeOctopusClient.Model {
 \r
         public static Rundown Create(JToken d) {\r
             String scheduledStart = d["scheduledStart"]?.ToString();\r
-            Rundown result = new Rundown {\r
+            Rundown result = null;\r
+            result = new Rundown {\r
                 ID = d["id"]?.ToString(),\r
                 Name = d["name"]?.ToString() ?? "unnamed",\r
-                Start = DateTime.Parse(scheduledStart.Length > 0 ? scheduledStart : DateTime.MinValue.ToString()),\r
+                Start = DateTime.Parse(scheduledStart != null && scheduledStart.Length > 0 ? scheduledStart : DateTime.MinValue.ToString()),\r
             };\r
             if (result.Start == null)\r
                 result.FormattedStart = "?";\r
             else\r
-                result.FormattedStart = result.Start.ToString("HH:mm:ss", new CultureInfo("hu-HU"));\r
+                result.FormattedStart = result.Start.ToString("HH:mm:ss");\r
+            //result.FormattedStart = result.Start.ToString("HH:mm:ss", new CultureInfo("hu-HU"));\r
             return result;\r
         }\r
     }\r
index d45d04a23c8f183c32a188707d621c9d47f40ef6..006d0f8721a81ecb0d377d99860e3b8ea93fd09e 100644 (file)
@@ -13,8 +13,7 @@ namespace NativeOctopusClient.Model {
         public string Format { get; set; }\r
         public int? Position { get; set; }\r
         public MosObject[] MosObjects { get; set; }\r
-        public StoryFolder[] StoryFolders { get; set; }\r
-        public Rundown[] Rundowns { get; set; }\r
+        public DateTime ScheduleFrom { get; set; }\r
 \r
         public override String ToString() {\r
             string displayName = Name?.ToString() ?? NativeOctopusAPI.UNNAMED;\r
@@ -28,12 +27,12 @@ namespace NativeOctopusClient.Model {
                 return null;\r
 \r
             mosObjects.ToList().ForEach(t => {\r
-                    var mosObject = MosObject.Create(t);\r
-                    if (mosObject != null) {\r
-                        if (result == null)\r
-                            result = new List<MosObject>();\r
-                        result.Add(mosObject);\r
-                    }\r
+                var mosObject = MosObject.Create(t);\r
+                if (mosObject != null) {\r
+                    if (result == null)\r
+                        result = new List<MosObject>();\r
+                    result.Add(mosObject);\r
+                }\r
             });\r
             return result;\r
         }\r
@@ -48,17 +47,23 @@ namespace NativeOctopusClient.Model {
         public static Story Create(JToken slug) {\r
             Story result = null;\r
             var story = JExtensions.ParseObject(slug, "story");\r
+            if (story == null)\r
+                story = slug as JObject;\r
             if (story != null) {\r
+                String scheduleFrom = story["scheduleFrom"]?.ToString();\r
                 result = new Story {\r
                     ID = story["id"]?.ToString(),\r
                     Name = story["name"]?.ToString() ?? "unnamed",\r
                     Format = story["format"]?.ToString(),\r
                     Position = slug["position"]?.Value<int?>(),\r
-                    ParentStoryID = GetParentStoryID(story),\r
-                    MosObjects = GetMosObjects(story)?.ToArray()\r
+                    //ParentStoryID = GetParentStoryID(story),\r
+                    //MosObjects = GetMosObjects(story)?.ToArray(),\r
+                    ScheduleFrom = DateTime.Parse(scheduleFrom != null && scheduleFrom.Length > 0 ? scheduleFrom : DateTime.MinValue.ToString()),\r
                 };\r
-                result.ParentStoryID = result.ParentStoryID ?? result.ID;\r
             }\r
+            //result.ParentStoryID = result.ParentStoryID ?? result.ID;\r
+            result.ParentStoryID = result.ID;\r
+\r
             return result;\r
         }\r
 \r
index 2c57c48025099f2b170d8d8ef93675d170ad7379..dd5a22b54f5e6df1539ff3b1230bb115c97a6132 100644 (file)
@@ -6,8 +6,8 @@ using RestSharp;
 using RestSharp.Authenticators;\r
 using System;\r
 using System.Collections.Generic;\r
-using System.Globalization;\r
 using System.Linq;\r
+using System.Net;\r
 \r
 namespace NativeOctopusClient {\r
 \r
@@ -19,7 +19,6 @@ namespace NativeOctopusClient {
         private string user;\r
         private string pwd;\r
         private IMessageBus messageBus;\r
-        private IEnumerable<Rundown> rundowns;\r
 \r
         public NativeOctopusAPI(string address, string user, string pwd, int timeout, IMessageBus messageBus) {\r
             this.user = user;\r
@@ -31,6 +30,135 @@ namespace NativeOctopusClient {
             this.messageBus = messageBus;\r
         }\r
 \r
+        private List<string> GetRundownStoryIDs(String id) {\r
+            List<string> result = null;\r
+            try {\r
+                var request = new RestRequest("Rundown/{id}", Method.GET);\r
+                request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+                request.AddParameter("fields", "id,slugs,Slug.storyId", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
+                var response = client.Execute<JsonArray>(request);\r
+                if (!CheckResponse(response))\r
+                    return null;\r
+                var resultObject = JExtensions.ParseObject(JExtensions.ParseObject(response.Content), "result");\r
+                if (resultObject == null)\r
+                    return null;\r
+                var resultList = JExtensions.ParseArray(resultObject, "slugs");\r
+                if (resultList == null)\r
+                    return null;\r
+\r
+                resultList.Children().ToList().ForEach(d => {\r
+                    var storyId = d["storyId"]?.ToString();\r
+                    if (storyId != null) {\r
+                        if (result == null)\r
+                            result = new List<string>();\r
+                        result.Add(storyId);\r
+                    }\r
+                });\r
+            } catch (Exception e) {\r
+                OnError(e);\r
+            }\r
+            return result;\r
+        }\r
+\r
+        public Rundown GetRundownByStoryID(String id) {\r
+            Rundown result = null;\r
+            try {\r
+                var request = new RestRequest("Rundown", Method.GET);\r
+                request.AddParameter("fields", "id,name,scheduledStart", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
+                var response = client.Execute<JsonArray>(request);\r
+                if (!CheckResponse(response))\r
+                    return null;\r
+                var resultList = JExtensions.ParseArray(JExtensions.ParseObject(response.Content), "result");\r
+                if (resultList == null)\r
+                    return null;\r
+                foreach (JObject d in resultList) {\r
+                    var rundownId = d["id"]?.ToString();\r
+                    if (rundownId == null)\r
+                        continue;\r
+                    //logger.Debug($"Checking rundown {rundownId}");\r
+                    List<string> ids = GetRundownStoryIDs(rundownId);\r
+                    if (ids == null || ids.Count == 0)\r
+                        continue;\r
+                    if (ids.Contains(id)) {\r
+                        result = Rundown.Create(d);\r
+                        break;\r
+                    }\r
+                }\r
+            } catch (Exception e) {\r
+                OnError(e);\r
+            }\r
+            return result;\r
+        }\r
+\r
+        private List<string> GetStoryFolderStoryIDs(String id) {\r
+            List<string> result = null;\r
+            try {\r
+                var request = new RestRequest("StoryFolder/{id}", Method.GET);\r
+                request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+                request.AddParameter("fields", "id,stories,Story.id", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
+                var response = client.Execute<JsonArray>(request);\r
+                if (!CheckResponse(response))\r
+                    return null;\r
+                var resultObject = JExtensions.ParseObject(JExtensions.ParseObject(response.Content), "result");\r
+                if (resultObject == null)\r
+                    return null;\r
+                var resultList = JExtensions.ParseArray(resultObject, "stories");\r
+                if (resultList == null)\r
+                    return null;\r
+\r
+                resultList.Children().ToList().ForEach(d => {\r
+                    var storyId = d["id"]?.ToString();\r
+                    if (storyId != null) {\r
+                        if (result == null)\r
+                            result = new List<string>();\r
+                        result.Add(storyId);\r
+                    }\r
+                });\r
+            } catch (Exception e) {\r
+                OnError(e);\r
+            }\r
+            return result;\r
+        }\r
+\r
+        public StoryFolder GetStoryFolderByStoryID(String id) {\r
+            StoryFolder result = null;\r
+            try {\r
+                var request = new RestRequest("StoryFolder", Method.GET);\r
+                request.AddParameter("fields", "id,name", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
+                var response = client.Execute<JsonArray>(request);\r
+                if (!CheckResponse(response))\r
+                    return null;\r
+                var resultList = JExtensions.ParseArray(JExtensions.ParseObject(response.Content), "result");\r
+                if (resultList == null)\r
+                    return null;\r
+                foreach (JObject d in resultList) {\r
+                    var storyFolderId = d["id"]?.ToString();\r
+                    if (storyFolderId == null)\r
+                        continue;\r
+                    \r
+                    logger.Debug($"Checking story folder {storyFolderId}");\r
+                    List<string> ids = GetStoryFolderStoryIDs(storyFolderId);\r
+                    if (ids == null || ids.Count == 0)\r
+                        continue;\r
+                    if (ids.Contains(id)) {\r
+                        result = StoryFolder.Create(d);\r
+                        break;\r
+                    }\r
+                }\r
+            } catch (Exception e) {\r
+                OnError(e);\r
+            }\r
+            return result;\r
+        }\r
+\r
         public List<Rundown> GetRundowns(DateTime scheduledDate) {\r
             List<Rundown> result = null;\r
             try {\r
@@ -44,11 +172,10 @@ namespace NativeOctopusClient {
                 var resultList = JExtensions.ParseArray(JExtensions.ParseObject(response.Content), "result");\r
                 if (resultList == null)\r
                     return null;\r
-                rundowns = resultList.Children().Select(d => Rundown.Create(d)).ToList();\r
+                List<Rundown> rundowns = resultList.Children().Select(d => Rundown.Create(d)).ToList();\r
                 DateTime end = scheduledDate + new TimeSpan(1, 0, 0, 0);\r
                 result = rundowns.Where(r => r.Start >= scheduledDate && r.Start < end).OrderBy(r => r.Start).ToList();\r
-            }\r
-            catch (Exception e) {\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
@@ -56,10 +183,11 @@ namespace NativeOctopusClient {
 \r
         public List<Story> GetRundownStories(string id) {\r
             List<Story> result = null;\r
+            logger.Info($"Selected rundown ID is {id}");\r
             try {\r
                 var request = new RestRequest("Rundown/{id}", Method.GET);\r
                 request.AddParameter(ID, id, ParameterType.UrlSegment);\r
-                request.AddParameter("fields", "slugs,Slug.story,Slug.position,Story.id,Story.name,Story.format,Story.mosObjects,Story.customColumns,CustomColumn.label,CustomColumn.value", ParameterType.QueryString);\r
+                request.AddParameter("fields", "slugs,Slug.story,Slug.position,Story.id,Story.name,Story.format,Story.scheduleFrom,Story.customColumns,CustomColumn.label,CustomColumn.value", ParameterType.QueryString);\r
                 request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
                 request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
                 var response = client.Execute<JsonArray>(request);\r
@@ -79,7 +207,7 @@ namespace NativeOctopusClient {
                     }\r
                 });\r
                 if (result != null)\r
-                    result = result.OrderBy(s=>s.Position).ToList();\r
+                    result = result.OrderBy(s => s.Position).ToList();\r
             } catch (Exception e) {\r
                 OnError(e);\r
             }\r
@@ -106,57 +234,52 @@ namespace NativeOctopusClient {
             return result;\r
         }\r
 \r
-        public List<Story> GetStoryFolderStories(string id) {\r
-            List<Story> result = null;\r
+        private Story GetStory(string id) {\r
+            Story result = null;\r
             try {\r
-                var request = new RestRequest("storyFolderStories/{id}", Method.GET);\r
+                var request = new RestRequest("Story/{id}", Method.GET);\r
                 request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+                request.AddParameter("fields", "id,name,format,scheduleFrom,customColumns,CustomColumn.label,CustomColumn.value", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
                 var response = client.Execute<JsonArray>(request);\r
                 if (!CheckResponse(response))\r
                     return null;\r
-                JArray resultObject = JArray.Parse(response.Content);\r
-                result = resultObject.Children().Select(d => {\r
-                    Story r = ToStoryFolderStory(d, id);\r
-                    //logger.Debug($"{r}");\r
-                    return r;\r
-                }).OrderBy(r => {\r
-                    return r.ID;\r
-                }).ToList();\r
+                var resultObject = JExtensions.ParseObject(JExtensions.ParseObject(response.Content), "result");\r
+                result = Story.Create(resultObject);\r
             } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
         }\r
 \r
-        public IEnumerable<Rundown> GetRundownsByParentStoryID(String id) {\r
-            IEnumerable<Rundown> result = null;\r
+        public List<Story> GetStoryFolderStories(string id) {\r
+            List<Story> result = null;\r
             try {\r
-                var request = new RestRequest("rundownsByParentStoryID/{id}", Method.GET);\r
+                var request = new RestRequest("StoryFolder/{id}", Method.GET);\r
                 request.AddParameter(ID, id, ParameterType.UrlSegment);\r
+                request.AddParameter("fields", "stories,Story.id,Story.name,Story.format,Story.scheduleFrom,Story.customColumns,CustomColumn.label,CustomColumn.value", ParameterType.QueryString);\r
+                request.AddParameter("Octopus-Device-Name", user, ParameterType.HttpHeader);\r
+                request.AddParameter("Octopus-Device-Id", pwd, ParameterType.HttpHeader);\r
                 var response = client.Execute<JsonArray>(request);\r
                 if (!CheckResponse(response))\r
                     return null;\r
-                JArray resultObject = JArray.Parse(response.Content);\r
-                //result = resultObject.Children().Select(d => ToRundown(d));\r
-            }\r
-            catch (Exception e) {\r
-                OnError(e);\r
-            }\r
-            return result;\r
-        }\r
-\r
-        public IEnumerable<Rundown> GetRundownsByPlaceHolderId(string id) {\r
-            IEnumerable<Rundown> result = null;\r
-            try {\r
-                var request = new RestRequest("rundownsByPlaceHolderID/{id}", Method.GET);\r
-                request.AddParameter(ID, id, ParameterType.UrlSegment);\r
-                var response = client.Execute<JsonArray>(request);\r
-                if (!CheckResponse(response))\r
+                var resultObject = JExtensions.ParseObject(JExtensions.ParseObject(response.Content), "result");\r
+                var resultList = JExtensions.ParseArray(resultObject, "stories");\r
+                if (resultList == null)\r
                     return null;\r
-                JArray resultObject = JArray.Parse(response.Content);\r
-                //result = resultObject.Children().Select(d => ToRundown(d));\r
-            }\r
-            catch (Exception e) {\r
+\r
+                resultList.Children().ToList().ForEach(d => {\r
+                    Story s = Story.Create(d);\r
+                    if (s != null) {\r
+                        if (result == null)\r
+                            result = new List<Story>();\r
+                        result.Add(s);\r
+                    }\r
+                });\r
+                if (result != null)\r
+                    result = result.OrderBy(s => s.ScheduleFrom).ToList();\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
@@ -171,15 +294,14 @@ namespace NativeOctopusClient {
                 if (!CheckResponse(response))\r
                     return null;\r
                 JArray resultObject = JArray.Parse(response.Content);\r
-                result = resultObject.Children().Select(d => {\r
-                    Story r = ToRundownStory(d, id);\r
-                    //logger.Debug($"{r}");\r
-                    return r;\r
-                }).OrderBy(r => {\r
-                    return r.ID;\r
-                });\r
-            }\r
-            catch (Exception e) {\r
+                //result = resultObject.Children().Select(d => {\r
+                //    //Story r = ToRundownStory(d, id);\r
+                //    //logger.Debug($"{r}");\r
+                //    return null;\r
+                //}).OrderBy(r => {\r
+                //    return r.ID;\r
+                //});\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
@@ -199,8 +321,7 @@ namespace NativeOctopusClient {
                     //logger.Debug($"{r}");\r
                     return r;\r
                 });\r
-            }\r
-            catch (Exception e) {\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
@@ -222,8 +343,7 @@ namespace NativeOctopusClient {
                 }).OrderBy(r => {\r
                     return r.ID;\r
                 });\r
-            }\r
-            catch (Exception e) {\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
@@ -243,46 +363,19 @@ namespace NativeOctopusClient {
                     //logger.Debug($"{r}");\r
                     return r;\r
                 });\r
-            }\r
-            catch (Exception e) {\r
-                OnError(e);\r
-            }\r
-            return result;\r
-        }\r
-\r
-        public IEnumerable<StoryFolder> GetStoryFoldersByParentStoryID(String id) {\r
-            IEnumerable<StoryFolder> result = null;\r
-            try {\r
-                var request = new RestRequest("storyFoldersByParentStoryID/{id}", Method.GET);\r
-                request.AddParameter(ID, id, ParameterType.UrlSegment);\r
-                var response = client.Execute<JsonArray>(request);\r
-                if (!CheckResponse(response))\r
-                    return null;\r
-                JArray resultObject = JArray.Parse(response.Content);\r
-                result = resultObject.Children().Select(d => {\r
-                    StoryFolder r = new StoryFolder {\r
-                        ID = d[ID].ToString(),\r
-                        Name = String.IsNullOrEmpty(d["name"].ToString()) ? NativeOctopusAPI.UNNAMED : d["name"].ToString()\r
-                    };\r
-\r
-                    //logger.Debug($"{r}");\r
-                    return r;\r
-                });\r
-            }\r
-            catch (Exception e) {\r
+            } catch (Exception e) {\r
                 OnError(e);\r
             }\r
             return result;\r
         }\r
 \r
         private bool CheckResponse(IRestResponse<JsonArray> response) {\r
+            if (response.StatusCode == HttpStatusCode.NotFound || response.ErrorException != null)\r
+                throw new Exception(response.ErrorMessage);\r
             if (String.IsNullOrEmpty(response.Content))\r
                 return false;\r
-            //if (response.ContentLength != 0)\r
-            //    return false;\r
-            if (response.ErrorException != null)\r
-                throw new Exception(response.ErrorMessage);\r
-            else return true;\r
+            else\r
+                return true;\r
         }\r
 \r
         private void OnError(Exception e) {\r
@@ -291,66 +384,6 @@ namespace NativeOctopusClient {
                 messageBus.Send(new NativeOctopusAPIMessage("Sikertelen OCTOPUS lekérdezés. Rendszerüzenet: " + e.Message));\r
         }\r
 \r
-\r
-        private IEnumerable<StoryFolder> GetPartialStoryFolderFromStory(JToken d) {\r
-            return d["story_folder"]?.Select(t => ToPartialStoryFolder(t));\r
-        }\r
-\r
-        private IEnumerable<Rundown> GetPartialRundownFromStory(JToken d) {\r
-            return d["rundown"]?.Select(t => ToPartialRundown(t));\r
-        }\r
-\r
-        private IEnumerable<StoryFolder> GetStoryFolderFromStory(JToken d) {\r
-            return d["story_folder"]?.Select(t => StoryFolder.Create(t));\r
-        }\r
-\r
-        private IEnumerable<Rundown> GetRundownFromStory(JToken d) {\r
-            return d["rundown"]?.Select(t => Rundown.Create(t));\r
-        }\r
-\r
-        private StoryFolder ToPartialStoryFolder(JToken d) {\r
-            return new StoryFolder() {\r
-                ID = d.Value<string>(ID),\r
-                StoryPosition = d.Value<int>("position")\r
-            };\r
-        }\r
-\r
-        private Rundown ToPartialRundown(JToken d) {\r
-            return new Rundown() {\r
-                ID = d.Value<string>(ID),\r
-                StoryPosition = d.Value<int>("position")\r
-            };\r
-        }\r
-\r
-        private Story ToRundownStory(JToken d, string id) {\r
-            Story result = Story.Create(d);\r
-            result.Position = result.Rundowns.Where(r => id.Equals(r.ID)).FirstOrDefault()?.StoryPosition;\r
-            return result;\r
-        }\r
-\r
-        private Story ToStoryFolderStory(JToken d, string id) {\r
-            Story result = Story.Create(d);\r
-            result.Position = result.StoryFolders.Where(r => id.Equals(r.ID)).FirstOrDefault()?.StoryPosition;\r
-            return result;\r
-        }\r
-\r
-        //private Story ToStory(JToken d) {\r
-        //    Story result = new Story {\r
-        //        ID = d[ID]?.ToString(),\r
-        //        ParentStoryID = d["parentStoryId"]?.ToString(),\r
-        //        Name = d["name"]?.ToString() ?? UNNAMED,\r
-        //        Format = d["format"]?.ToString(),\r
-        //        Script = d["script"]?.ToString(),\r
-        //        ScriptContent = d["script_content"]?.ToString(),\r
-        //        MosObjects = GetMosObjectsFromStory(d)?.ToArray(),\r
-        //        StoryFolders = GetStoryFolderFromStory(d)?.ToArray(),\r
-        //        Rundowns = GetRundownFromStory(d)?.ToArray()\r
-        //    };\r
-        //    return result;\r
-        //}\r
-\r
-\r
-\r
     }\r
 \r
     public static class JExtensions {\r
index 961235ec6b0ac56a3e64227b3c672abcb57cafbb..54d021ebc9f13a8f90372f3760b8309e81daf226 100644 (file)
@@ -34,7 +34,7 @@ namespace NativeOctopusClient {
             this.rbStoryFolder = new System.Windows.Forms.RadioButton();\r
             this.txtFilter = new System.Windows.Forms.TextBox();\r
             this.noFocusCueButton1 = new MaestroShared.Controls.NoFocusCueButton();\r
-            this.treeOctopus = new CheckableTreeView();\r
+            this.treeOctopus = new MaestroShared.Controls.CheckableTreeView();\r
             this.pSearch.SuspendLayout();\r
             this.pFolderType.SuspendLayout();\r
             this.SuspendLayout();\r
@@ -171,6 +171,7 @@ namespace NativeOctopusClient {
             this.treeOctopus.BackColor = System.Drawing.Color.White;\r
             this.treeOctopus.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
             this.treeOctopus.CheckBoxes = true;\r
+            this.treeOctopus.DisableCheckBoxLevels = null;\r
             this.treeOctopus.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.treeOctopus.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawText;\r
             this.treeOctopus.Location = new System.Drawing.Point(0, 77);\r
@@ -182,7 +183,7 @@ namespace NativeOctopusClient {
             this.treeOctopus.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeOctopus_NodeMouseDoubleClick);\r
             this.treeOctopus.KeyDown += new System.Windows.Forms.KeyEventHandler(this.treeContent_KeyDown);\r
             // \r
-            // OctopusIDSelector\r
+            // NativeOctopusIDSelector\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
@@ -190,7 +191,7 @@ namespace NativeOctopusClient {
             this.Controls.Add(this.treeOctopus);\r
             this.Controls.Add(this.pSeparator);\r
             this.Controls.Add(this.pSearch);\r
-            this.Name = "OctopusIDSelector";\r
+            this.Name = "NativeOctopusIDSelector";\r
             this.Size = new System.Drawing.Size(300, 400);\r
             this.pSearch.ResumeLayout(false);\r
             this.pSearch.PerformLayout();\r
index 1e5b688f32d07feb1b4ce50ea2a6bdd468255e64..a26c8686c4f2391cb00afcff5192dd1dd2c10234 100644 (file)
@@ -26,7 +26,6 @@ namespace NativeOctopusClient {
         public NativeOctopusParameters Parameters {\r
             set {\r
                 parameters = value;\r
-                treeOctopus.DisableCheckBoxLevels = new[] { parameters.Configuration.DisableStoryCheck, parameters.Configuration.DisablePlaceHolderCheck };\r
                 client = new NativeOctopusAPI(value.Configuration.Server.Address.OriginalString, value.Configuration.Server.UserName, value.Configuration.Server.Password, value.Configuration.Server.Timeout, value.MessageBus);\r
                 rbRundown.Checked = true;\r
                 RefreshFolders();\r
@@ -114,17 +113,10 @@ namespace NativeOctopusClient {
                 TreeNode storyNode = treeOctopus.Nodes.Add(parentStoryID, label);\r
                 storyNode.Tag = story;\r
 \r
-                if (parameters.Configuration.DisableStoryCheck)\r
-                    HideCheckBox(treeOctopus, storyNode);\r
-\r
                 bool selectFirstChild = false;\r
 \r
                 if (lookupStoryId != null && lookupStoryId.Equals(parentStoryID)) {\r
-                    if (parameters.Configuration.DisableStoryCheck)\r
-                        selectFirstChild = true;\r
-                    else {\r
-                        storyNode.Checked = true;\r
-                    }\r
+                    storyNode.Checked = true;\r
                 }\r
 \r
                 MosObject[] mosObjects = story.MosObjects;\r
@@ -133,17 +125,13 @@ namespace NativeOctopusClient {
                 foreach (MosObject mosObject in mosObjects) {\r
                     TreeNode placeHolderNode = storyNode.Nodes.Add(mosObject.ObjID, String.Format($"{mosObject.ObjID}"));\r
                     placeHolderNode.Tag = story;\r
-                    if (parameters.Configuration.DisablePlaceHolderCheck)\r
-                        HideCheckBox(treeOctopus, placeHolderNode);\r
-                    else {\r
-                        if ((lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ObjID)) || selectFirstChild) {\r
-                            if (selectFirstChild && selectedNode != null) {\r
-                                selectFirstChild = false;\r
-                                MsgBox.Warning("Fokozott flehasználói figyelemre van szükség. Az anyag kiválasztás le van tiltva a konfigurációban, így az első elérhető bejátszó került kiválasztásra.");\r
-                                continue;\r
-                            }\r
-                            placeHolderNode.Checked = true;\r
+                    if ((lookupPlaceHolderId != null && lookupPlaceHolderId.Equals(mosObject.ObjID)) || selectFirstChild) {\r
+                        if (selectFirstChild && selectedNode != null) {\r
+                            selectFirstChild = false;\r
+                            MsgBox.Warning("Fokozott flehasználói figyelemre van szükség. Az anyag kiválasztás le van tiltva a konfigurációban, így az első elérhető bejátszó került kiválasztásra.");\r
+                            continue;\r
                         }\r
+                        placeHolderNode.Checked = true;\r
                     }\r
                 }\r
             }\r
@@ -158,23 +146,6 @@ namespace NativeOctopusClient {
 \r
         private void OnTreeAfterCheck(object sender, TreeViewEventArgs e) {\r
             //logger.Debug("Handling {0} {1} {2}", e.Node.Name, e.Node.Text, e.Node.Checked);\r
-\r
-            if (parameters.Configuration.DisableStoryCheck && e.Node.Level == 0) {\r
-                if (e.Node.Checked) {\r
-                    e.Node.Checked = false;\r
-                    HideCheckBox(treeOctopus, e.Node);\r
-                }\r
-                return;\r
-            }\r
-\r
-            if (parameters.Configuration.DisablePlaceHolderCheck && e.Node.Level == 1) {\r
-                if (e.Node.Checked) {\r
-                    e.Node.Checked = false;\r
-                    HideCheckBox(treeOctopus, e.Node);\r
-                }\r
-                return;\r
-            }\r
-\r
             if (!e.Node.Equals(selectedNode)) {\r
                 ClearSelection();\r
                 selectedNode = e.Node;\r
@@ -205,100 +176,6 @@ namespace NativeOctopusClient {
             SendMessage(tvw.Handle, TVM_SETITEM, IntPtr.Zero, ref tvi);\r
         }\r
 \r
-        public void LookupByStory(string storyId) {\r
-            if (String.IsNullOrEmpty(storyId))\r
-                return;\r
-            ClearSelection();\r
-            lookupStoryId = null;\r
-            lookupPlaceHolderId = null;\r
-            var rundown = client.GetRundownsByParentStoryID(storyId)?.FirstOrDefault();\r
-            if (rundown == null) {\r
-                var storyFolder = client.GetStoryFoldersByParentStoryID(storyId)?.FirstOrDefault();\r
-                if (storyFolder != null) {\r
-                    refreshDisabled = true;\r
-                    bool forceRefresh = rbStoryFolder.Checked;\r
-                    rbStoryFolder.Checked = true;\r
-                    refreshDisabled = false;\r
-                    RefreshFolders();\r
-                    List<StoryFolder> storyFolders = cbFolders.DataSource as List<StoryFolder>;\r
-                    if (storyFolders != null) {\r
-                        var folderToSelect = storyFolders.Where(f => f.ID.Equals(storyFolder.ID)).FirstOrDefault();\r
-                        if (folderToSelect != null) {\r
-                            lookupStoryId = storyId;\r
-                            cbFolders.SelectedItem = folderToSelect;\r
-                        }\r
-                    }\r
-                }\r
-            } else {\r
-                refreshDisabled = true;\r
-                dtScheduled.Value = rundown.Start;\r
-                rbRundown.Checked = true;\r
-                refreshDisabled = false;\r
-                RefreshFolders();\r
-                List<Rundown> rundowns = cbFolders.DataSource as List<Rundown>;\r
-                if (rundowns != null) {\r
-                    var rundownToSelect = rundowns.Where(f => f.ID.Equals(rundown.ID)).FirstOrDefault();\r
-                    if (rundownToSelect != null) {\r
-                        lookupStoryId = storyId;\r
-                        cbFolders.SelectedItem = rundownToSelect;\r
-                    }\r
-                }\r
-            }\r
-            txtFilter.Text = storyId;\r
-            if (selectedNode == null)\r
-                MsgBox.Info("Az azonosító jelenleg nem található a rendszerben. Kérem próbálja újra.");\r
-            else\r
-                treeOctopus.Focus();\r
-        }\r
-\r
-        public void LookupByPlaceHolder(string placeHolderId) {\r
-            if (String.IsNullOrEmpty(placeHolderId))\r
-                return;\r
-            ClearSelection();\r
-            lookupStoryId = null;\r
-            lookupPlaceHolderId = null;\r
-            var rundown = client.GetRundownsByPlaceHolderId(placeHolderId)?.FirstOrDefault();\r
-            if (rundown == null) {\r
-                var storyFolder = client.GetStoryFoldersByPlaceHolderID(placeHolderId)?.FirstOrDefault();\r
-                if (storyFolder != null) {\r
-                    refreshDisabled = true;\r
-                    bool forceRefresh = rbStoryFolder.Checked;\r
-                    rbStoryFolder.Checked = true;\r
-                    refreshDisabled = false;\r
-                    RefreshFolders();\r
-                    List<StoryFolder> storyFolders = cbFolders.DataSource as List<StoryFolder>;\r
-                    if (storyFolders != null) {\r
-                        var folderToSelect = storyFolders.Where(f => f.ID.Equals(storyFolder.ID)).FirstOrDefault();\r
-                        if (folderToSelect != null) {\r
-                            lookupPlaceHolderId = placeHolderId;\r
-                            cbFolders.SelectedItem = folderToSelect;\r
-                        }\r
-                    }\r
-                }\r
-\r
-            } else {\r
-                refreshDisabled = true;\r
-                dtScheduled.Value = rundown.Start;\r
-                rbRundown.Checked = true;\r
-                refreshDisabled = false;\r
-                RefreshFolders();\r
-                List<Rundown> rundowns = cbFolders.DataSource as List<Rundown>;\r
-                if (rundowns != null) {\r
-                    var rundownToSelect = rundowns.Where(f => f.ID.Equals(rundown.ID)).FirstOrDefault();\r
-                    if (rundownToSelect != null) {\r
-                        lookupPlaceHolderId = placeHolderId;\r
-                        cbFolders.SelectedItem = rundownToSelect;\r
-                    }\r
-                }\r
-\r
-            }\r
-            txtFilter.Text = placeHolderId;\r
-            if (selectedNode == null)\r
-                MsgBox.Info("Az azonosító jelenleg nem található a rendszerben. Kérem próbálja újra.");\r
-            else\r
-                treeOctopus.Focus();\r
-        }\r
-\r
         private void OnTypeCheckChanged(object sender, EventArgs e) {\r
             RefreshFolders();\r
         }\r
@@ -351,14 +228,12 @@ namespace NativeOctopusClient {
                 Rundown rundown = cbFolders.SelectedValue as Rundown;\r
                 if (rundown == null || ZERO.Equals(rundown.ID))\r
                     return;\r
-                //logger.Info("Selected rundown {0} {1}", rundown.ID, rundown.Name);\r
                 stories = client.GetRundownStories(rundown.ID);\r
             } else {\r
                 StoryFolder storyFolder = cbFolders.SelectedValue as StoryFolder;\r
                 if (storyFolder == null || ZERO.Equals(storyFolder.ID))\r
                     return;\r
-                //logger.Info("Selected StoryFolder {0} {1}", storyFolder.ID, storyFolder.Name);\r
-                stories = client.GetStoryFolderStories(storyFolder.ID).OrderBy(s => s.StoryFolders[0].StoryPosition);\r
+                stories = client.GetStoryFolderStories(storyFolder.ID);\r
             }\r
 \r
             if (stories == null)\r
@@ -377,12 +252,59 @@ namespace NativeOctopusClient {
         }\r
 \r
         private void Lookup() {\r
-            if (txtFilter.Text.Contains("_"))\r
-                LookupByPlaceHolder(txtFilter.Text);\r
+            LookupByStory(txtFilter.Text);\r
+        }\r
+\r
+        public void LookupByStory(string storyId) {\r
+            if (String.IsNullOrEmpty(storyId))\r
+                return;\r
+            Cursor = Cursors.WaitCursor;\r
+            ClearSelection();\r
+            lookupStoryId = null;\r
+            lookupPlaceHolderId = null;\r
+            var rundown = client.GetRundownByStoryID(storyId);\r
+            if (rundown == null) {\r
+                var storyFolder = client.GetStoryFolderByStoryID(storyId);\r
+                if (storyFolder != null) {\r
+                    refreshDisabled = true;\r
+                    bool forceRefresh = rbStoryFolder.Checked;\r
+                    rbStoryFolder.Checked = true;\r
+                    refreshDisabled = false;\r
+                    RefreshFolders();\r
+                    List<StoryFolder> storyFolders = cbFolders.DataSource as List<StoryFolder>;\r
+                    if (storyFolders != null) {\r
+                        var folderToSelect = storyFolders.Where(f => f.ID.Equals(storyFolder.ID)).FirstOrDefault();\r
+                        if (folderToSelect != null) {\r
+                            lookupStoryId = storyId;\r
+                            cbFolders.SelectedItem = folderToSelect;\r
+                        }\r
+                    }\r
+                }\r
+            } else {\r
+                refreshDisabled = true;\r
+                dtScheduled.Value = rundown.Start;\r
+                rbRundown.Checked = true;\r
+                refreshDisabled = false;\r
+                RefreshFolders();\r
+                List<Rundown> rundowns = cbFolders.DataSource as List<Rundown>;\r
+                if (rundowns != null) {\r
+                    var rundownToSelect = rundowns.Where(f => f.ID.Equals(rundown.ID)).FirstOrDefault();\r
+                    if (rundownToSelect != null) {\r
+                        lookupStoryId = storyId;\r
+                        cbFolders.SelectedItem = rundownToSelect;\r
+                    }\r
+                }\r
+            }\r
+            txtFilter.Text = storyId;\r
+            Cursor = Cursors.Default;\r
+\r
+            if (selectedNode == null)\r
+                MsgBox.Info("Az azonosító jelenleg nem található a rendszerben. Kérem próbálja újra.");\r
             else\r
-                LookupByStory(txtFilter.Text);\r
+                treeOctopus.Focus();\r
         }\r
 \r
+\r
         private void treeOctopus_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {\r
         }\r
 \r
index ead7d2d47215f1ae5c494aa9896f99a27889c182..ac12a47bfd110d11d67beffea910d8505423faa1 100644 (file)
@@ -3,7 +3,7 @@ using MaestroShared.Configuration;
 \r
 namespace NativeOctopusClient {\r
     public class NativeOctopusParameters {\r
-        public OctopusMetadata Configuration { get; set; }\r
+        public NativeOctopusMetadata Configuration { get; set; }\r
         public string UserName { get; set; }\r
         public IMessageBus MessageBus { get; set; }\r
     }\r