git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Nov 2019 12:39:44 +0000 (12:39 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Thu, 28 Nov 2019 12:39:44 +0000 (12:39 +0000)
24 files changed:
client/DxPlay/PlayerForm.cs
client/DxPlay/PlayerGraph.cs
client/Maestro/Configuration/ACTIVE-configuration-promo.json
client/Maestro/Configuration/dani-teszt-vezerlo.json
client/Maestro/Configuration/editor.json [new file with mode: 0644]
client/Maestro/Maestro.csproj
client/Maestro/MaestroForm.Metadata.cs
client/Maestro/MaestroForm.Source.cs
client/Maestro/MaestroForm.Target.cs
client/Maestro/MaestroForm.resx
client/Maestro/Properties/AssemblyInfo.cs
client/MaestroShared/Metadata/MetadataType.cs
client/MaestroShared/Metadata/MovieSegment.cs
client/MaestroShared/Metadata/Traffic.cs
client/MaestroShared/Properties/AssemblyInfo.cs
client/MaestroShared/Targets/UNCTargetProcessor.cs
client/PlanAIRClient/Properties/AssemblyInfo.cs
client/PlanAIRClient/Resources.Designer.cs
client/PlanAIRClient/Resources.resx
client/PlanAIRClient/TrafficAPI.cs
client/PlanAIRClient/TrafficIDSelector.Designer.cs
client/PlanAIRClient/TrafficIDSelector.cs
client/PlanAIRClient/Workers/MultiSegmentMaterialWorker.cs
client/PlanAIRClient/Workers/SingleSegmentMaterialWorker.cs

index 5686b936a203dc85410b49fdfde9f3be8ddbbfd9..b3278a6d2c0b432436ce4b6e44b543c5e37d34d7 100644 (file)
@@ -173,7 +173,7 @@ namespace DxPlay {
             }\r
         }\r
 \r
-        public void OpenFile(FileInfo fileInfo) {\r
+        public void OpenFile(FileInfo fileInfo, bool redefineSegments) {\r
             logger.Debug("Open {0}", fileInfo.FullName);\r
 \r
             if (m_play != null)\r
@@ -196,7 +196,7 @@ namespace DxPlay {
                     logger.Error(e);\r
                 }\r
             }\r
-            model.IsRedefineSegments = false;\r
+            model.IsRedefineSegments = redefineSegments;\r
 \r
 \r
             //for (int i = 0; i < 100; i++) {\r
@@ -210,7 +210,7 @@ namespace DxPlay {
         private void Form1_DragDrop(object sender, DragEventArgs e) {\r
             string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);\r
             FileInfo fileInfo = new FileInfo(files[0]);\r
-            OpenFile(fileInfo);\r
+            OpenFile(fileInfo, false);\r
         }\r
 \r
         private void panel1_MouseDown(object sender, MouseEventArgs e) {\r
@@ -496,7 +496,7 @@ namespace DxPlay {
             if (arguments.Length > 1) {\r
                 FileInfo fi = new FileInfo(arguments[1]);\r
                 if (fi.Exists)\r
-                    OpenFile(fi);\r
+                    OpenFile(fi, false);\r
             }\r
         }\r
 \r
@@ -523,7 +523,7 @@ namespace DxPlay {
         private void menuOpenFile_Click(object sender, EventArgs e) {\r
             openFileDialogOpened = true;\r
             if (openFileDialog.ShowDialog() == DialogResult.OK)\r
-                OpenFile(new FileInfo(openFileDialog.FileName));\r
+                OpenFile(new FileInfo(openFileDialog.FileName), false);\r
             openFileDialogOpened = false;\r
         }\r
 \r
@@ -559,7 +559,7 @@ namespace DxPlay {
             if (openFileDialog.ShowDialog() == DialogResult.OK) {\r
                 model.RedefineSegmentMediaID = Path.GetFileNameWithoutExtension(openFileDialog.FileName);\r
                 model.IsRedefineSegments = true;\r
-                OpenFile(new FileInfo(openFileDialog.FileName));\r
+                OpenFile(new FileInfo(openFileDialog.FileName), true);\r
             }\r
             openFileDialogOpened = false;\r
             model.IsRedefineSegments = true;\r
index 8c38ff3df9977226663d7657efe64a287a361db1..3cfa8619b1098878e648b489a7ae22be21cca46e 100644 (file)
@@ -6,9 +6,9 @@ using System.Runtime.InteropServices;
 \r
 namespace DxPlay {\r
     public class PlayerGraph : FilterGraph, IDisposable {\r
-        #if DEBUG\r
-            private DsROTEntry m_DsRot;\r
-        #endif\r
+#if DEBUG\r
+        private DsROTEntry m_DsRot;\r
+#endif\r
         private static readonly Logger logger = LogManager.GetCurrentClassLogger();\r
         public IVideoWindow VideoWindow { get; private set; }\r
         public ISampleGrabber SampleGrabber { get; private set; }\r
@@ -60,7 +60,7 @@ namespace DxPlay {
                 } else {\r
                     logger.Warn("Audio pin not available");\r
                 }\r
-                \r
+\r
                 SearchAudioTracks(splitter);\r
 \r
             } catch (Exception e) {\r
@@ -89,7 +89,7 @@ namespace DxPlay {
 \r
         private IBaseFilter AddRenderer(IGraphBuilder graphBuilder, IBaseFilter sampleGrabber, IntPtr handle) {\r
             logger.Debug("Add VideoMixingRenderer9 to graph");\r
-            IBaseFilter videoRenderer = (IBaseFilter) new VideoMixingRenderer9();\r
+            IBaseFilter videoRenderer = (IBaseFilter)new VideoMixingRenderer9();\r
             DsError.ThrowExceptionForHR(graphBuilder.AddFilter(videoRenderer, "Video Mixing Renderer 9"));\r
             logger.Debug("Connect SampleGrabber -> VideoMixingRenderer9");\r
 \r
@@ -195,7 +195,7 @@ namespace DxPlay {
             videoDecoder = FilterProvider.GetVideoFilter(out lavVideoSettings);\r
             if (videoDecoder == null)\r
                 videoDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Video Decoder");\r
-            else\r
+            if (videoDecoder != null)\r
                 graphBuilder.AddFilter(videoDecoder, "LAV Video Decoder");\r
             return videoDecoder;\r
         }\r
@@ -207,7 +207,7 @@ namespace DxPlay {
             audioDecoder = FilterProvider.GetAudioFilter(out lavAudioSettings, out lavAudioStatus);\r
             if (audioDecoder == null)\r
                 audioDecoder = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Audio Decoder");\r
-            else\r
+            if (audioDecoder != null)\r
                 graphBuilder.AddFilter(audioDecoder, "LAV Audio Decoder");\r
             return audioDecoder;\r
         }\r
@@ -218,7 +218,8 @@ namespace DxPlay {
             splitter = FilterProvider.GetSplitter(out lavSplitterSettings);\r
             if (splitter == null)\r
                 splitter = FilterGraphTools.AddFilterByName(graphBuilder, FilterCategory.LegacyAmFilterCategory, "LAV Splitter");\r
-            else\r
+\r
+            if (splitter != null)\r
                 graphBuilder.AddFilter(splitter, "LAV Splitter");\r
             return splitter;\r
         }\r
@@ -233,7 +234,7 @@ namespace DxPlay {
                 if (m_DsRot != null)\r
                     m_DsRot.Dispose();\r
 #endif\r
-                IMediaControl mediaCtrl = (IMediaControl) this;\r
+                IMediaControl mediaCtrl = (IMediaControl)this;\r
                 if (mediaCtrl != null) {\r
                     mediaCtrl.Stop();\r
                     IGraphBuilder graphBuilder = (IGraphBuilder)mediaCtrl;\r
index 30d4f399c56395c2f640caea150ebd7ff798d003..d2f3f999b93bb0fb201aca0d9c5b2ef0551d33ff 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "PROMO SZAKOSZTÁLY",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "defaultWindowColor": "#4DB6AC",\r
     },\r
     {\r
       "$type": "TrafficMetadata",\r
+      "functionName": "clIFsp_ORI_MAM",\r
+      "version": 1,\r
       "server": {\r
-        "address": "Data Source=10.10.1.45;Initial Catalog=PA_Echo;Persist Security Info=True;",\r
+        "address": "Data Source=10.11.254.86;Initial Catalog=PA_Vivantis;Persist Security Info=True;",\r
         "userName": "MAM",\r
-        "password": "7RKZYBzumKjL40SJwuwiFCvX57xuCN8zay6OttUm2wbrgImyYZBHyZTUUYrXX31Ge2Uwew07HYsqh2uzdJeDBDwcVntxaHg3nIpv9Dyq/odVoiC4tUF/K+lgvKWANcrZ",\r
+        "password": "1LCAeMAI5W5eWdtaN25mHX/9JkXjkr0JZDvTZp//HYtUPo/UKyJnuZoLKFo9G9FbAhUha8xnniV+v/9BQ6c/7e0phmCYUdeLEdQcg0hHvU9njMSqYBV75b6oB9jhvtoZ",\r
         "timeout": 1000\r
       },\r
       "projectSettings": {\r
index a9ac65b5d19e1ba9a8e503beb5e2d7332fc15602..97de9a635268163fe235deda0085dedcac316588 100644 (file)
@@ -1,6 +1,6 @@
 {\r
   "title": "Vezérlő",\r
-  "active": true,\r
+  "active": false,\r
   "startInTray": false,\r
   "enableCustomMetadataId": true,\r
   "filter": "avi",\r
diff --git a/client/Maestro/Configuration/editor.json b/client/Maestro/Configuration/editor.json
new file mode 100644 (file)
index 0000000..dddcf81
--- /dev/null
@@ -0,0 +1,75 @@
+{\r
+       "title": "Editor",\r
+       "active": true,\r
+       "startInTray": false,\r
+       "enableCustomMetadataId": true,\r
+       "player": {\r
+               "enabled": true,\r
+               "autoStart": false,\r
+               "segmentEditor": true\r
+       },\r
+       "source": {\r
+               "$type": "UNCSource",\r
+               "filter": "avi,wav,mxf,mts",\r
+               "local": {\r
+                       "address": "file://c:/remote/promise/FINISHED_SHOWS",\r
+                       "timeout": 1000\r
+               },\r
+    "remote": {\r
+      "address": "ftp://10.11.1.100/Promise/FINISHED_SHOWS",\r
+      "userName": "editor1",\r
+      "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+      "timeout": 1000\r
+    }\r
+       },\r
+       "metadatas": [\r
+               {\r
+                       "$type": "TrafficMetadata",\r
+                       "functionName": "clIFsp_ORI_MAM",\r
+                       "version": 1,\r
+                       "server": {\r
+                               "address": "Data Source=10.11.254.86;Initial Catalog=PA_Vivantis;Persist Security Info=True;",\r
+                               "userName": "MAM",\r
+                               "password": "1LCAeMAI5W5eWdtaN25mHX/9JkXjkr0JZDvTZp//HYtUPo/UKyJnuZoLKFo9G9FbAhUha8xnniV+v/9BQ6c/7e0phmCYUdeLEdQcg0hHvU9njMSqYBV75b6oB9jhvtoZ",\r
+                               "timeout": 1000\r
+                       }\r
+               },\r
+               {\r
+                       "$type": "MediaCubeMetadata",\r
+                       "server": {\r
+                               "address": "http://10.11.1.90/services/rest/jobengine/",\r
+                               "timeout": 1000\r
+                       }\r
+               }\r
+       ],\r
+  "targets": [\r
+               {\r
+                       "label": "Adáskész",\r
+                       "processor": "FXPTargetProcessor",\r
+                       "outputFormat": "%ID%",\r
+                       "saveSegments": true,\r
+                       "tag": "Adáskész",\r
+                       "reference": ["Archiválás"],\r
+      "remote": {\r
+        "address": "ftp://10.11.1.100/Promise/PROGRAM/TEST",\r
+        "userName": "editor1",\r
+        "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+        "timeout": 1000\r
+      }\r
+               },\r
+    {\r
+      "label": "Archiválás",\r
+      "processor": "FXPTargetProcessor",\r
+      "outputFormat": "%ID%",\r
+      "saveArchiveMetadata": true,\r
+      "tag": "Archiválás",\r
+      "remote": {\r
+        "address": "ftp://10.11.1.100/Promise/ARCHIVE/TEST",\r
+        "userName": "editor1",\r
+        "password": "mBsAKn0RRr+lErAWAu+oMD/3CRxlBLNvm3UB84SKl5KBVYD5+wIANFL0eszfbAUtzYKqdN/dEB/6ItBNz9D6C4/hppcYrg0+73+xFW9KYEwd2KfgHaH5uslbA/8IyI/U",\r
+        "timeout": 1000\r
+      }\r
+    }\r
+\r
+  ]\r
+}\r
index 1c93d4bc167af6c704dcbcc2e52c82c9369a5ead..a5cb64d7e1ce555e9ab7d8e2be39698b17f69f8f 100644 (file)
     <None Include="Configuration\dani-teszt-vezerlo.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
+    <None Include="Configuration\editor.json">\r
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
+    </None>\r
     <None Include="Configuration\global.json">\r
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>\r
     </None>\r
index 1fabee9bce06575a423cb3408c0875ac216f79f5..6d9a7c506c1d19548410a370b0707084d69c026d 100644 (file)
@@ -173,7 +173,7 @@ namespace Maestro {
                 readOnly = ArchiveMetadata.ok;\r
             if (readOnly && ArchiveMetadata != null && !SelectedMetadata.IsRedefine)\r
                 MsgBox.Warning("Az anyag már el van fogadva, a szegmens módosítás nem kerül mentésre. A szegmensek módosításához vissza kell vonni az anyag elfogadását az adástervező rendszerben.");\r
-            OpenFile(fileInfo, true, readOnly);\r
+            OpenFile(fileInfo, true, readOnly, !readOnly);\r
             UpdateDefineSegmentsStatus();\r
             Cursor.Current = Cursors.Default;\r
         }\r
index f178c58f887485daef501537d3749f75356a7065..020e4f3332c9558c50f7ec8add56fe0d59468a33 100644 (file)
@@ -122,12 +122,12 @@ namespace Maestro {
                 if (fileSourceItem == null)\r
                     return;\r
                 dgSource.Enabled = false;\r
-                OpenFile(fileSourceItem.FileInfo, false, false);\r
+                OpenFile(fileSourceItem.FileInfo, false, false, false);\r
                 dgSource.Enabled = true;\r
             }\r
         }\r
 \r
-        private void OpenFile(FileInfo fileInfo, bool segmentEditor, bool readOnly) {\r
+        private void OpenFile(FileInfo fileInfo, bool segmentEditor, bool readOnly, bool redefineSegments) {\r
             Cursor = Cursors.WaitCursor;\r
             try {\r
                 string[] extensions = Configuration.Player?.Extensions;\r
@@ -144,9 +144,10 @@ namespace Maestro {
                             AutoStart = Configuration.Player.AutoStart,\r
                             SegmentEditor = Configuration.Player.SegmentEditor && segmentEditor\r
                         },\r
+                        Metadata = trafficIDSelector.Parameters.Configuration,\r
                         Segments = MovieSegments\r
                     };\r
-                    player.OpenFile(fileInfo);\r
+                    player.OpenFile(fileInfo, redefineSegments);\r
                     if (!player.IsDisposed)\r
                         player.ShowDialog();\r
                 } else {\r
index b2df67a9ce309a9a5036566ef1f8ed8bd4daa207..94978b5ecf97235778c157da9e626a4412557ffe 100644 (file)
@@ -122,22 +122,41 @@ namespace Maestro {
         }\r
 \r
 \r
+        private bool HasNoneEmptySegments() {\r
+            if (MovieSegments?.Count == 0)\r
+                return false;\r
+\r
+            if (MovieSegments?.Count == 1 && MovieSegments[0].IsGhost)\r
+                return false;\r
+\r
+            return true;\r
+        }\r
+\r
         private bool EnsureSegments(Target target) {\r
-            if ((target.SaveMorpheusMetadata || target.SaveSegments) && (MovieSegments == null || MovieSegments.Count == 0)) {\r
-                if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) {\r
-                    List<MovieSegment> storedSegments = GetSegments();\r
-                    if (storedSegments != null && storedSegments.Count > 0) {\r
-                        MovieSegments = new BindingList<MovieSegment>(storedSegments);\r
+            if (target.SaveMorpheusMetadata || target.SaveSegments) {\r
+                if (!HasNoneEmptySegments()) {\r
+\r
+                    //ha nincs aktualis szegmens, akkor lekerjuk, hatha volt korabban\r
+                    if (selectedMetadata?.VariantID != null && selectedMetadata?.VariantID != 0) {\r
+                        List<MovieSegment> storedSegments = GetSegments();\r
+                        if (storedSegments != null)\r
+                            MovieSegments = new BindingList<MovieSegment>(storedSegments);\r
                     }\r
+\r
+                    if (!HasNoneEmptySegments())\r
+                        MessageBox.Show(string.Format("A(z) '{0}' folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
+                    return false;\r
                 }\r
-                if (MovieSegments == null) {\r
-                    MessageBox.Show(String.Format("A {0} folyamat nem futtatható szegmens adatok nélkül.", target.Label));\r
+                if (ArchiveMetadata == null)\r
+                    ArchiveMetadata = GetArchiveMetadata();\r
+                if (ArchiveMetadata.ok) {\r
+                    MessageBox.Show(string.Format("A(z) '{0}' folyamat nem futtatható elfogadott kópián.", target.Label));\r
                     return false;\r
                 }\r
                 switch (selectedMetadata.Kind) {\r
                     case MetadataType.TrafficPromo: {\r
                             if (MovieSegments.Count != 1) {\r
-                                MessageBox.Show(String.Format("Promó anyagnak csak egy szegmens adata lehet."));\r
+                                MessageBox.Show(string.Format("Promó anyagnak csak egy szegmens adata lehet."));\r
                                 return false;\r
                             }\r
                             break;\r
index dafec937d1e8644614cb77949777367e48a7f15b..ffa614120fa0f878c545d1280f4cd8802d753441 100644 (file)
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w\r
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0\r
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAS\r
-        CAAAAk1TRnQBSQFMAgEBAgEAAZABAgGQAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
+        CAAAAk1TRnQBSQFMAgEBAgEAAZgBAgGYAQIBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo\r
         AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA\r
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5\r
         AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA\r
index 0bb442fabddf5bbd319c57c7252364df5d101a48..f6952ada4c6918ba0c12b41bda177e6255a1f2dd 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.9.6")]\r
-[assembly: AssemblyFileVersion("2.0.9.6")]\r
+[assembly: AssemblyVersion("2.0.9.9")]\r
+[assembly: AssemblyFileVersion("2.0.9.9")]\r
index 2f35ebcd82597c2b188272e7592922e6a12bd3d3..5d42f7dfaa88a7fcf788dc2d8b01154669e84b04 100644 (file)
@@ -7,11 +7,14 @@ namespace MaestroShared.Metadata {
 \r
     public class MetadataTypeUtil {\r
         private const string REGEXP_TRAFFICMATERIALID = "^M{1}[0-9]{6}[A-Z]{1}$";\r
-        private const string REGEXP_TRAFFICMATERIALID_V1 = "^M{1}[0-9]{6}[A-Z]{1}[0-9]{1}$";\r
-        private const string REGEXP_TRAFFICMATERIALID_V2 = "^M{1}[0-9]{6}[A-Z]{1}[A-Z]{1}$";\r
+        private const string REGEXP_TRAFFICMATERIALID_V1 = "^M{1}[0-9]{6}[A-Z]{1}[0-9]{1}$";//kenya\r
+        private const string REGEXP_TRAFFICMATERIALID_V2 = "^M{1}[0-9]{6}[A-Z]{1}[A-Z]{1}$";//kenya\r
+        private const string REGEXP_TRAFFICMATERIALID_V3 = "^M[0-9]{2}-[0-9]{6}-([0-9]|[A-Z])$";//mv\r
         private const string REGEXP_TRAFFICADID = "^R{1}[0-9]{6}[A-Z]{1}$";\r
-        private const string REGEXP_TRAFFICALTERNATEADID = "^C{1}[0-9]{6}[A-Z]{1}$";\r
+        private const string REGEXP_TRAFFICADID_V1 = "^C{1}[0-9]{6}[A-Z]{1}$";//kenya\r
+        private const string REGEXP_TRAFFICADID_V2 = "^R[0-9]{2}-[0-9]{6}-[0-9]$";//mv\r
         private const string REGEXP_TRAFFICPROMOID = "^P{1}[0-9]{6}[A-Z]{1}$";\r
+        private const string REGEXP_TRAFFICPROMOID_V1 = "^P[0-9]{2}-[0-9]{6}-[0-9]$";//mv\r
         private const string REGEXP_OCTOPUSSTORYID = "^[0-9]+$";\r
         private const string REGEXP_OCTOPUSPLACEHOLDERID = "^[0-9]+_[0-9]+$";\r
         private const string REGEXP_OCTOPUSPLACEHOLDERVERSIONEDID = "^[0-9]+_[0-9]+-[0-9]{3}$";\r
@@ -34,15 +37,27 @@ namespace MaestroShared.Metadata {
             if (match.Success)\r
                 return MetadataType.TrafficMaterialSegment;\r
 \r
+            match = Regex.Match(id, REGEXP_TRAFFICMATERIALID_V3);\r
+            if (match.Success)\r
+                return MetadataType.TrafficMaterial;\r
+\r
             match = Regex.Match(id, REGEXP_TRAFFICPROMOID);\r
             if (match.Success)\r
                 return MetadataType.TrafficPromo;\r
 \r
+            match = Regex.Match(id, REGEXP_TRAFFICPROMOID_V1);\r
+            if (match.Success)\r
+                return MetadataType.TrafficPromo;\r
+\r
             match = Regex.Match(id, REGEXP_TRAFFICADID);\r
             if (match.Success)\r
                 return MetadataType.TrafficAD;\r
 \r
-            match = Regex.Match(id, REGEXP_TRAFFICALTERNATEADID);\r
+            match = Regex.Match(id, REGEXP_TRAFFICADID_V1);\r
+            if (match.Success)\r
+                return MetadataType.TrafficAD;\r
+\r
+            match = Regex.Match(id, REGEXP_TRAFFICADID_V2);\r
             if (match.Success)\r
                 return MetadataType.TrafficAD;\r
 \r
index 0d36f60a393bcafce30609d950c0397c3d52b059..c2419a14ee6ee5522d0444b89744da9dd2e46330 100644 (file)
@@ -17,8 +17,12 @@ namespace MaestroShared.Metadata {
         public int SegID;\r
         public bool ReadOnly;\r
 \r
+        public bool IsGhost {\r
+            get => TCIn.Frames == 0 && TCOut.Frames == 0;\r
+        }\r
+\r
         public Timecode TCIn {\r
-            get => tcIn;\r
+            get => tcIn ?? new Timecode();\r
             set {\r
                 tcIn = value;\r
                 NotifyPropertyChanged();\r
@@ -26,7 +30,7 @@ namespace MaestroShared.Metadata {
         }\r
 \r
         public Timecode TCOut {\r
-            get => tcOut;\r
+            get => tcOut ?? new Timecode();\r
             set {\r
                 tcOut = value;\r
                 NotifyPropertyChanged();\r
index 02df4a7c66b435e61616d269ae4514328cf0cd93..7d939c142525adfc1068199165ddf4cd42b1c2f6 100644 (file)
@@ -19,9 +19,10 @@ namespace MaestroShared.Metadata {
         public string Segment {\r
             get {\r
                 if (SegmentCount != null && SegmentNr != null)\r
-                    return string.Format($"{SegmentCount} / {SegmentNr} : {MovieSegment?.MediaID}");\r
+                    //return string.Format($"{SegmentCount} / {SegmentNr} : {MovieSegment?.MediaID}");\r
+                    return string.Format($"{VariantID} ({SegmentCount} / {SegmentNr})");\r
                 else\r
-                    return "";\r
+                    return VariantID == 0 ? "Kópia nélküli" : VariantID.ToString();\r
             }\r
         }\r
     }\r
index c592cd270a929ec98fd44df326737385bf238932..f38916389a3b3d3f2f610e17768cb257504ed02e 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("2.0.9.5")]\r
-[assembly: AssemblyFileVersion("2.0.9.5")]\r
+[assembly: AssemblyVersion("2.0.9.8")]\r
+[assembly: AssemblyFileVersion("2.0.9.8")]\r
index 6fbb317ea4125805e97ddfdb1d064549dd79079f..b150fc17afb0ab0ed773151d32f29bf3155f9c25 100644 (file)
@@ -88,7 +88,9 @@ namespace MaestroShared.Targets {
                 EnsureDirectoryExistence(workingDir);\r
 \r
                 //multiszegmens mukodes eseten a filenevet a traffic generalja\r
-                if (!true.Equals(Parameters?.TrafficMetadata?.MultiSegmentEnabled))\r
+                //if (!true.Equals(Parameters?.TrafficMetadata?.MultiSegmentEnabled))\r
+                //deha nem szegmentalok, akkor nem\r
+                if (OutputName == null)\r
                     OutputName = CreateOutputFileName();\r
                 CreateOutput(workingDir);\r
                 workFlowAction.source = Input;\r
index ca4782af56a877682cee09d3c65c42d22fc97df6..1068caa65c2b518c8014a593200704a1a5181227 100644 (file)
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers\r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.0.0.3")]\r
-[assembly: AssemblyFileVersion("1.0.0.3")]\r
+[assembly: AssemblyVersion("1.0.0.9")]\r
+[assembly: AssemblyFileVersion("1.0.0.9")]\r
index bcbde51cf63d5c173a2d9dc43528dca3e3d72601..1912cccee2466e901ffd92718f76924dc42f5c85 100644 (file)
@@ -179,7 +179,7 @@ namespace TrafficClient {
         }\r
         \r
         /// <summary>\r
-        ///   Looks up a localized string similar to Szegmens.\r
+        ///   Looks up a localized string similar to Kópia (Szegmens).\r
         /// </summary>\r
         internal static string SEGMENT {\r
             get {\r
index 1e9af041b16259477136229e9fde18b5a7f0e50b..a55270926753d66b8fbd83eb7ee2a6bf5312f459 100644 (file)
     <value>Az azonosító jelenleg nem található a rendszerben. Kérem próbálja újra.</value>\r
   </data>\r
   <data name="SEGMENT" xml:space="preserve">\r
-    <value>Szegmens</value>\r
+    <value>Kópia (Szegmens)</value>\r
   </data>\r
 </root>
\ No newline at end of file
index 998c2ba30c78ffb8bfbb64c28792436959c5532f..257871b5591918e2eec632a7717ea751317bb676 100644 (file)
@@ -84,7 +84,7 @@ namespace TrafficClient {
                             materialWorker.SetMaterialOK(itemID, false);\r
                             DeleteUnmappedSegments(itemID, segments, selectedSegments);\r
                             result = ModifySegments(itemID, segments, selectedSegments);\r
-                            Parameters?.MessageBus.Send(new TrafficAPIRefreshMessage());\r
+                            //Parameters?.MessageBus.Send(new TrafficAPIRefreshMessage());\r
 \r
                         } else {\r
                             //egyebkent nem fogadja el a szegmnesadatokat?\r
@@ -115,7 +115,7 @@ namespace TrafficClient {
             string newSegmentName = null;\r
             for (int i = 0; i < segments.Count; i++) {\r
                 MovieSegment actualSegment = segments[i];\r
-                bool newSegment = selectedSegments.Count - 1 < i || (selectedSegments.Count == 1 && selectedSegments[0].SegmentId == null);\r
+                bool newSegment = selectedSegments == null || selectedSegments.Count - 1 < i || (selectedSegments.Count == 1 && (selectedSegments[0].SegmentId == null || selectedSegments[0].MovieSegment.IsGhost));\r
                 if (newSegment) {\r
                     segNr++;\r
                 } else {\r
@@ -128,7 +128,7 @@ namespace TrafficClient {
 \r
                 string fileName = null;\r
 \r
-                //ha redifine volt, akkor minden modositott szegmens tartalmazza a fajlnevet\r
+                //ha redefine volt, akkor minden modositott szegmens tartalmazza a fajlnevet\r
                 //ha define akkor az null, de a masodik szegmensnel mar az elsovel letrehozott fajlnev kell\r
                 if (!newSegment && actualSegment.SegID != 0)\r
                     fileName = actualSegment.MediaID;\r
@@ -141,6 +141,7 @@ namespace TrafficClient {
                 }\r
 \r
                 logger.Info("Adding segment {0} {1}", segNr, fileName ?? "null");\r
+\r
                 result = materialWorker.AddMaterialSegment(itemID, actualSegment, fileName, segNr);\r
                 if (newSegment && newSegmentName == null)\r
                     newSegmentName = result;\r
@@ -150,6 +151,21 @@ namespace TrafficClient {
         }\r
 \r
         private void DeleteUnmappedSegments(int itemID, List<MovieSegment> segments, List<TrafficItem> selectedSegments) {\r
+            if (selectedSegments == null)\r
+                return;\r
+\r
+            List<MovieSegment> ghosts = new List<MovieSegment>();\r
+            foreach (var s in segments) {\r
+                if (s.IsGhost) {\r
+                    materialWorker.DeleteMaterialSegment(itemID, s.SegID);\r
+                    ghosts.Add(s);\r
+                }\r
+            }\r
+\r
+            foreach (MovieSegment s in ghosts) {\r
+                segments.Remove(s);\r
+            }\r
+\r
             int delSegCount = selectedSegments.Count - segments.Count;\r
             while (delSegCount > 0) {\r
                 if (selectedSegments[selectedSegments.Count - 1].SegmentId == null)\r
index 0fd4c3eaaaf8c746eb07ac846a3f386ce282db9e..33c9b5d4fc418560bbdabe6f8ebec6beaf25b4d8 100644 (file)
@@ -1,7 +1,5 @@
-namespace TrafficClient\r
-{\r
-    partial class TrafficIDSelector\r
-    {\r
+namespace TrafficClient {\r
+    partial class TrafficIDSelector {\r
         /// <summary> \r
         /// Required designer variable.\r
         /// </summary>\r
@@ -11,10 +9,8 @@
         /// Clean up any resources being used.\r
         /// </summary>\r
         /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>\r
-        protected override void Dispose(bool disposing)\r
-        {\r
-            if (disposing && (components != null))\r
-            {\r
+        protected override void Dispose(bool disposing) {\r
+            if (disposing && (components != null)) {\r
                 components.Dispose();\r
             }\r
             base.Dispose(disposing);\r
         /// Required method for Designer support - do not modify \r
         /// the contents of this method with the code editor.\r
         /// </summary>\r
-        private void InitializeComponent()\r
-        {\r
+        private void InitializeComponent() {\r
             this.components = new System.ComponentModel.Container();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();\r
-            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();\r
+            System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();\r
             this.trafficAPIBindingSource = new System.Windows.Forms.BindingSource(this.components);\r
             this.dtScheduled = new System.Windows.Forms.DateTimePicker();\r
             this.txtFilter = new System.Windows.Forms.TextBox();\r
             this.chkProblematic = new System.Windows.Forms.CheckBox();\r
             this.dgTraffic = new System.Windows.Forms.DataGridView();\r
             this.pSeparator = new System.Windows.Forms.Panel();\r
+            this.btnNewVersion = new System.Windows.Forms.Button();\r
+            this.panel1 = new System.Windows.Forms.Panel();\r
             ((System.ComponentModel.ISupportInitialize)(this.trafficAPIBindingSource)).BeginInit();\r
             this.pFolderType.SuspendLayout();\r
             this.pSearch.SuspendLayout();\r
             ((System.ComponentModel.ISupportInitialize)(this.dgTraffic)).BeginInit();\r
+            this.panel1.SuspendLayout();\r
             this.SuspendLayout();\r
             // \r
             // dtScheduled\r
             this.dgTraffic.BackgroundColor = System.Drawing.Color.White;\r
             this.dgTraffic.BorderStyle = System.Windows.Forms.BorderStyle.None;\r
             this.dgTraffic.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.Raised;\r
-            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;\r
-            dataGridViewCellStyle1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
-            dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;\r
-            dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
-            dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
-            dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
-            this.dgTraffic.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;\r
+            dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control;\r
+            dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(238)));\r
+            dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;\r
+            dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;\r
+            dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;\r
+            dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+            this.dgTraffic.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;\r
             this.dgTraffic.DataSource = this.trafficAPIBindingSource;\r
-            dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
-            dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;\r
-            dataGridViewCellStyle2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
-            dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;\r
-            dataGridViewCellStyle2.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
-            dataGridViewCellStyle2.SelectionForeColor = System.Drawing.Color.Black;\r
-            dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
-            this.dgTraffic.DefaultCellStyle = dataGridViewCellStyle2;\r
+            dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;\r
+            dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window;\r
+            dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
+            dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText;\r
+            dataGridViewCellStyle5.SelectionBackColor = System.Drawing.Color.Gainsboro;\r
+            dataGridViewCellStyle5.SelectionForeColor = System.Drawing.Color.Black;\r
+            dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False;\r
+            this.dgTraffic.DefaultCellStyle = dataGridViewCellStyle5;\r
             this.dgTraffic.Dock = System.Windows.Forms.DockStyle.Fill;\r
             this.dgTraffic.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically;\r
             this.dgTraffic.EnableHeadersVisualStyles = false;\r
             this.dgTraffic.MultiSelect = false;\r
             this.dgTraffic.Name = "dgTraffic";\r
             this.dgTraffic.RowHeadersVisible = false;\r
-            dataGridViewCellStyle3.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
-            this.dgTraffic.RowsDefaultCellStyle = dataGridViewCellStyle3;\r
+            dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
+            this.dgTraffic.RowsDefaultCellStyle = dataGridViewCellStyle6;\r
             this.dgTraffic.RowTemplate.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);\r
             this.dgTraffic.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;\r
-            this.dgTraffic.Size = new System.Drawing.Size(300, 321);\r
+            this.dgTraffic.Size = new System.Drawing.Size(300, 298);\r
             this.dgTraffic.TabIndex = 0;\r
             this.dgTraffic.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnCellContentClick);\r
             this.dgTraffic.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.OnCellDoubleClick);\r
             this.pSeparator.Size = new System.Drawing.Size(300, 6);\r
             this.pSeparator.TabIndex = 13;\r
             // \r
+            // btnNewVersion\r
+            // \r
+            this.btnNewVersion.Dock = System.Windows.Forms.DockStyle.Right;\r
+            this.btnNewVersion.Enabled = false;\r
+            this.btnNewVersion.Location = new System.Drawing.Point(239, 0);\r
+            this.btnNewVersion.Name = "btnNewVersion";\r
+            this.btnNewVersion.Size = new System.Drawing.Size(61, 23);\r
+            this.btnNewVersion.TabIndex = 14;\r
+            this.btnNewVersion.Text = "Új kópia";\r
+            this.btnNewVersion.UseVisualStyleBackColor = true;\r
+            this.btnNewVersion.Click += new System.EventHandler(this.OnNewVersion);\r
+            // \r
+            // panel1\r
+            // \r
+            this.panel1.Controls.Add(this.btnNewVersion);\r
+            this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+            this.panel1.Location = new System.Drawing.Point(0, 377);\r
+            this.panel1.Name = "panel1";\r
+            this.panel1.Size = new System.Drawing.Size(300, 23);\r
+            this.panel1.TabIndex = 15;\r
+            // \r
             // TrafficIDSelector\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.BackColor = System.Drawing.Color.Transparent;\r
             this.Controls.Add(this.dgTraffic);\r
+            this.Controls.Add(this.panel1);\r
             this.Controls.Add(this.pSeparator);\r
             this.Controls.Add(this.pSearch);\r
             this.Name = "TrafficIDSelector";\r
             this.pSearch.ResumeLayout(false);\r
             this.pSearch.PerformLayout();\r
             ((System.ComponentModel.ISupportInitialize)(this.dgTraffic)).EndInit();\r
+            this.panel1.ResumeLayout(false);\r
             this.ResumeLayout(false);\r
             this.PerformLayout();\r
 \r
         private System.Windows.Forms.DataGridView dgTraffic;\r
         private System.Windows.Forms.Panel pSeparator;\r
         private MaestroShared.Controls.NoFocusCueButton btnRefresh;\r
+        private System.Windows.Forms.Button btnNewVersion;\r
+        private System.Windows.Forms.Panel panel1;\r
     }\r
 }\r
index 9f775eed698b283d5714fd0fd3a8bdb0c397f433..98dee561f7462b231d12d499be4daf561164cdc7 100644 (file)
@@ -50,11 +50,15 @@ namespace TrafficClient {
 \r
         private void OnRefreshTrafficGrid(IMessage m) {\r
             BeginInvoke((Action)(() => {\r
+                //TODO meg kene orizni a kijelolest\r
                 RefreshKeepPosition();\r
             }));\r
         }\r
 \r
         public TrafficParameters Parameters {\r
+            get {\r
+                return parameters;\r
+            }\r
             set {\r
                 parameters = value;\r
                 var server = parameters.Configuration?.Server;\r
@@ -94,6 +98,8 @@ namespace TrafficClient {
                 dgTraffic.Columns.AddRange(GetPromoColumns(metadata));\r
                 items = trafficAPI.GetPromos(txtFilter.Text, chkProblematic.Checked, scheduledDate, scheduledDate);\r
             }\r
+            if (items != null)\r
+                items = items.OrderBy(i => i.VariantID).ToList();\r
 \r
             if (items == null || items.Count == 0)\r
                 trafficAPIBindingSource.DataSource = null;\r
@@ -119,7 +125,7 @@ namespace TrafficClient {
             }\r
 \r
             ProjectSettings projectConfiguration = parameters?.Configuration?.ProjectSettings;\r
-            string text = trafficItem.Title;\r
+            string text = trafficItem.Title == null || trafficItem.Title.Length == 0 ? trafficItem.EpisodeTitle : trafficItem.Title;\r
             EdiusProject.Open(projectConfiguration, id, text, parameters.UserName);\r
         }\r
 \r
@@ -171,36 +177,65 @@ namespace TrafficClient {
             }\r
 \r
             List<TrafficItem> selectedItems = items?.Where(i => i.Selected).ToList();\r
-            if (selectedItems?.Count() > 0) {\r
+            if (selectedItems?.Count > 0) {\r
+                btnNewVersion.Enabled = true;\r
                 CreateVersionIfMissing(trafficItem);\r
                 IDChangedEvent?.Invoke(trafficItem.MediaID, trafficItem.VariantID, trafficItem.Title, selectedItems);\r
-            } else\r
+            } else {\r
+                btnNewVersion.Enabled = false;\r
                 IDChangedEvent?.Invoke(null, 0, null, null);\r
+            }\r
+        }\r
+\r
+        void UpdateItem(ref TrafficItem trafficItem, int variantID) {\r
+            TrafficItem currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false).Where(t => t.VariantID == variantID).FirstOrDefault();\r
+            if (currentVersion != null) {\r
+                trafficItem.MediaID = currentVersion.MediaID;\r
+                trafficItem.MovieSegment = currentVersion.MovieSegment;\r
+                trafficItem.SegmentCount = currentVersion.SegmentCount;\r
+                trafficItem.SegmentNr = currentVersion.SegmentNr;\r
+                trafficItem.SegmentId = currentVersion.SegmentId;\r
+                trafficItem.VariantID = currentVersion.VariantID;\r
+            }\r
         }\r
 \r
         private void CreateVersionIfMissing(TrafficItem trafficItem) {\r
 \r
-            if (String.IsNullOrEmpty(trafficItem.MediaID)) {\r
-                var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
-                if (currentVersion == null || String.IsNullOrEmpty(currentVersion.MediaID)) {\r
-                    TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
-                    if (newVersion != null) {\r
-                        trafficItem.MediaID = newVersion.MediaID;\r
-                        trafficItem.VariantID = newVersion.VariantID;\r
+            if (string.IsNullOrEmpty(trafficItem.MediaID)) {\r
+                if (MultiSegment) {\r
+\r
+                    //meg kopia sincs\r
+                    if (trafficItem.VariantID == 0) {\r
+                        TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
+                        if (newVersion != null)\r
+                            UpdateItem(ref trafficItem, newVersion.VariantID);\r
                     }\r
+\r
+                    trafficAPI.SaveSegments(trafficItem.VariantID, MetadataType.TrafficMaterial, new List<MovieSegment>() { new MovieSegment() });\r
+                    UpdateItem(ref trafficItem, trafficItem.VariantID);\r
+                    if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
+                        return;\r
                 } else {\r
-                    trafficItem.MediaID = currentVersion.MediaID;\r
-                    trafficItem.VariantID = currentVersion.VariantID;\r
+\r
+                    var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
+                    if (currentVersion == null || String.IsNullOrEmpty(currentVersion.MediaID)) {\r
+                        TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, false);\r
+                        if (newVersion != null) {\r
+                            trafficItem.MediaID = newVersion.MediaID;\r
+                            trafficItem.VariantID = newVersion.VariantID;\r
+                        }\r
+                    } else {\r
+                        trafficItem.MediaID = currentVersion.MediaID;\r
+                        trafficItem.VariantID = currentVersion.VariantID;\r
+                    }\r
+\r
+                    if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
+                        return;\r
+\r
                 }\r
 \r
-                if (trafficItem.VariantID == 0 || string.IsNullOrEmpty(trafficItem.MediaID))\r
-                    return;\r
+\r
             } else if (ModifierKeys.HasFlag(Keys.Shift)) {\r
-                var currentVersion = trafficAPI.GetMaterials(trafficItem.EpisodeID, false)?.FirstOrDefault();\r
-                TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(trafficItem.EpisodeID, true);\r
-                if (newVersion != null) {\r
-                    RefreshKeepPosition();\r
-                }\r
             }\r
 \r
         }\r
@@ -329,6 +364,23 @@ namespace TrafficClient {
             RefreshResults();\r
 \r
         }\r
+\r
+\r
+        private void OnNewVersion(object sender, EventArgs e) {\r
+\r
+            List<TrafficItem> items = trafficAPIBindingSource.DataSource as List<TrafficItem>;\r
+            string episodeID = items?.Where(i => i.Selected).FirstOrDefault()?.EpisodeID;\r
+            if (episodeID != null) {\r
+                if (!MsgBox.YesNoQuestion("Biztosan létrehoz egy új kópiát a kijelölt epizódhoz?"))\r
+                    return;\r
+                var currentVersion = trafficAPI.GetMaterials(episodeID, false)?.FirstOrDefault();\r
+                TrafficVersion newVersion = trafficAPI.CreateMaterialVersion(episodeID, true);\r
+                if (newVersion != null)\r
+                    RefreshKeepPosition();\r
+\r
+            }\r
+\r
+        }\r
     }\r
 \r
     public class TrafficAPIMessage : MaestroMessage {\r
index 614437870d19dd05888a0130f405b73bb859bd0d..3fd93fa9f771157bd130923b9d06a1614adde261 100644 (file)
@@ -19,9 +19,19 @@ namespace TrafficClient.Workers {
             get => 6002;\r
         }\r
 \r
+        protected override TrafficItemMetadata CreateTrafficItemMetadata(SqlDataReader reader) {\r
+            PlanAirMaterialResult item = dataReader.ToMultiMaterialResult(reader);\r
+            TrafficItemMetadata trafficItem = ToTrafficItemMetadata(item);\r
+            return trafficItem;\r
+        }\r
+\r
         protected override TrafficItem CreateTrafficItem(SqlDataReader reader) {\r
             PlanAirMaterialResult item = dataReader.ToMultiMaterialResult(reader);\r
             TrafficItem trafficItem = ToTrafficItem(item);\r
+\r
+            //MediaVivantis-ban nem a v_VariantMediaID-ben van az azonosito??\r
+            trafficItem.MediaID = item.v_SegMediaID;\r
+\r
             return trafficItem;\r
         }\r
 \r
index b1175abaaebd408c180eb6982e456b49ac93571d..02828a0c5f44eab3147cbb5150422f50b8fb11b9 100644 (file)
@@ -10,7 +10,6 @@ using TrafficClient.Model;
 namespace TrafficClient.Workers {\r
 \r
     public class SingleSegmentMaterialWorker : TrafficWorker {\r
-\r
         private static Logger logger = LogManager.GetCurrentClassLogger();\r
         protected virtual bool MultiSegmentEnabled { get => false; }\r
 \r
@@ -33,19 +32,24 @@ namespace TrafficClient.Workers {
                 SegmentNr = data.v_SegNr,\r
                 SegmentId = data.v_SegID\r
             };\r
-            if (data.v_SegID != null && data.v_SegTcOut > 0) {\r
+\r
+            // 0 hosszu szegmensek is kellenek\r
+            //if (data.v_SegID != null && data.v_SegTcOut > 0) {\r
+            if (data.v_SegID != null) {\r
                 result.MovieSegment = new MovieSegment {\r
                     TCIn = new Timecode((int)data.v_SegTcIn),\r
                     TCOut = new Timecode((int)data.v_SegTcOut),\r
                     Comment = data.v_SegTitle,\r
                     Optional = true.Equals(data.v_SegDropable),\r
-                    MediaID = data.v_SegMediaID\r
+                    MediaID = data.v_SegMediaID,\r
+                    SegID = data.v_SegID ?? 0,\r
+                    SegNr = data.v_SegNr ?? 0\r
                 };\r
             }\r
             return result;\r
         }\r
 \r
-        private TrafficItemMetadata ToTrafficItemMetadata(PlanAirMaterialResult data) {\r
+        protected TrafficItemMetadata ToTrafficItemMetadata(PlanAirMaterialResult data) {\r
             return new TrafficItemMetadata() {\r
                 EpisodeID = data.v_EpisodeID,\r
                 EpisodeTitle = data.v_EpTitle,\r
@@ -78,7 +82,6 @@ namespace TrafficClient.Workers {
                         cmd.Parameters.AddWithValue("@@DateParam1", from.Value.Date);\r
                     if (to != null)\r
                         cmd.Parameters.AddWithValue("@@DateParam2", to.Value.Date);\r
-\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         while (reader.Read()) {\r
                             if (result == null)\r
@@ -102,23 +105,30 @@ namespace TrafficClient.Workers {
             return trafficItem;\r
         }\r
 \r
+        protected virtual TrafficItemMetadata CreateTrafficItemMetadata(SqlDataReader reader) {\r
+            PlanAirMaterialResult item = dataReader.ToSingleMaterialResult(reader);\r
+            TrafficItemMetadata trafficItem = ToTrafficItemMetadata(item);\r
+            return trafficItem;\r
+        }\r
+\r
         public List<TrafficItemMetadata> GetMaterialArchiveMetadata(string strParam) {\r
             List<TrafficItemMetadata> result = null;\r
             try {\r
                 TryConnect();\r
                 using (SqlCommand cmd = CreateCommmad()) {\r
                     cmd.CommandType = CommandType.StoredProcedure;\r
-                    cmd.Parameters.AddWithValue("@Operation", 1002);\r
+                    cmd.Parameters.AddWithValue("@Operation", GetMaterialsID);\r
                     cmd.Parameters.AddWithValue("@@@Options", 0);\r
                     cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", strParam);\r
-\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         while (reader.Read()) {\r
                             if (result == null)\r
                                 result = new List<TrafficItemMetadata>();\r
-                            PlanAirMaterialResult item = dataReader.ToSingleMaterialResult(reader);\r
-                            result.Add(ToTrafficItemMetadata(item));\r
+\r
+                            TrafficItemMetadata trafficItem = CreateTrafficItemMetadata(reader);\r
+                            result.Add(trafficItem);\r
+\r
                         }\r
                     }\r
                 }\r
@@ -134,6 +144,10 @@ namespace TrafficClient.Workers {
             get => 1105;\r
         }\r
 \r
+\r
+        //     @Operation int, @@@Options int, @@ItemID int, @@IntParam1 int=Null, @@IntParam2 int=Null, @@IntParam3 int=Null,\r
+        //                     @@StrParam1 varchar(200)=Null, @@StrParam2 varchar(max)=Null, @@DateParam1 datetime=Null, @@DateParam2 datetime=Null\r
+\r
         public TrafficVersion CreateMaterialVersion(string episodeID, bool recut) {\r
             TrafficVersion result = null;\r
             try {\r
@@ -146,7 +160,6 @@ namespace TrafficClient.Workers {
                     cmd.Parameters.AddWithValue("@@ItemID", DBNull.Value);\r
                     cmd.Parameters.AddWithValue("@@StrParam1", episodeID);\r
                     cmd.Parameters.AddWithValue("@@StrParam2", DBNull.Value);\r
-\r
                     using (SqlDataReader reader = cmd.ExecuteReader()) {\r
                         if (reader.Read()) {\r
                             result = new TrafficVersion();\r