private void InformationAddOnInstanceChanged(InformationAddOn OldValue, InformationAddOn NewValue) { if (NewValue != null) { if (ProcessConnectorModellInstance == null) { ProcessConnectorModell Helper = new ProcessConnectorModell(); Helper.InformationAddOnToProcess = NewValue; ProcessConnectorModellInstance = Helper; } else ProcessConnectorModellInstance.InformationAddOnToProcess = NewValue; } }
public InformationAddOn InsertNewSibling(InformationAddOn sibling) { InformationAddOn newEntry = DataContext.AltErlaaInfo.InformationenAddOns.NewRow(); DbBasics.CopyRowContent(sibling, newEntry); newEntry.Id = Guid.NewGuid(); newEntry.TabelleId = null; newEntry.FreiText = String.Empty; foreach (InformationAddOn informationAddOn in DataContext.AltErlaaInfo .InformationenAddOns.Where(sel => sel.DataDependencyId == sibling.DataDependencyId && sel.SortOrder > sibling.SortOrder )) { informationAddOn.SortOrder++; } newEntry.SortOrder = sibling.SortOrder + 1; newEntry.Table.Rows.Add(newEntry); return newEntry; }
private void InformationAddOnInstanceChanged(InformationAddOn OldValue, InformationAddOn NewValue) { if (NewValue != null) { TimingsModellInstance = new TimingsModell(NewValue); // TimingsModellInstance.RedrawMe(); } }
private void SetInputAllowence(InformationAddOn informationAddOn) { if (informationAddOn.Tabelle == "ProcessConnector") { ShowTableSelection = false; ShowFreitextInput = false; ShowFormInput = true; ShowTableModification = false; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaForm; } else if (informationAddOn.Tabelle == "Events") { ShowTableSelection = false; ShowFreitextInput = true; ShowFormInput = false; ShowTableModification = false; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaFreiText; } else if (informationAddOn.Tabelle == "Remarks") { ShowTableSelection = false; ShowFreitextInput = true; ShowFormInput = true; ShowTableModification = false; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaFreiText; } else if ((informationAddOn.Tabelle == "Adressen") || (informationAddOn.Tabelle == "AdressenFull")) { ShowTableSelection = true; ShowFreitextInput = true; ShowFormInput = false; ShowTableModification = true; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaTable; } else if (informationAddOn.Tabelle == "Organisationen") { ShowTableSelection = true; ShowFreitextInput = true; ShowFormInput = false; ShowTableModification = true; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaTable; } else if (informationAddOn.Tabelle == "Materialien") { ShowTableSelection = false; ShowFreitextInput = false; ShowFormInput = true; ShowTableModification = false; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaForm; } else if (informationAddOn.Tabelle == "Timings") { ShowTableSelection = false; ShowFreitextInput = false; ShowFormInput = true; ShowTableModification = false; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaForm; } else if (informationAddOn.Tabelle == "Personen") { ShowTableSelection = true; ShowFreitextInput = true; ShowFormInput = true; ShowTableModification = true; RequestedTypeOfInputForInformationAddOn = InformationAddOnModell.TypeOfInputForInformationAddOn.ViaTable; } else { throw new Exception($"Bei {informationAddOn.Id} ist die Tabelle {informationAddOn.Tabelle}"); } }
private void DoTimingsDefault(String TimingTypID, int PreShowDays, InformationAddOn sourceInfoAddOn) { Timing timing = GetOrCreate_ConnectedTiming(); timing.TimingTypId = TimingTypID; timing.ConnectedType = "Informationen"; timing.ConnectedId = (Guid) InformationenId; if (sourceInfoAddOn == null) sourceInfoAddOn = Information.InformationenAddOnsOrdered.Where(sel => sel.DataDependency .DataElementeTemplate.PhysicalDataElement.TabellenName == "Timings").FirstOrDefault(); if (sourceInfoAddOn == null) return; Timing SourceTiming = sourceInfoAddOn.Get_ConnectedTiming; if (SourceTiming == null) return; timing.TimeB = (DateTime)SourceTiming.TimeB; timing.TimeA = ((DateTime)timing.TimeB).AddDays(PreShowDays).Date; if (timing.TimeA < DateTime.Now) timing.TimeA = DateTime.Now.Date; this.FreiText = timing.FreiText; }
private void ProcessFinalUpdates(InformationAddOn informationAddOn) { if (informationAddOn.Tabelle == "ProcessConnector") { ProcessConnector processConnector = informationAddOn.Get_ConnectedProcessConnector; if (processConnector != null) { informationAddOn.FreiText = processConnector.FreiText; } return; } if (informationAddOn.Tabelle == "Events") { Event eventEntry = informationAddOn.Get_ConnectedEvent; if (eventEntry != null) { informationAddOn.FreiText = eventEntry.FreiText; } return; } if (informationAddOn.Tabelle == "Remarks") { Remark remark = informationAddOn.Get_ConnectedRemark; if (remark != null) { informationAddOn.FreiText = remark.FreiText; } return; } if ((informationAddOn.Tabelle == "Adressen") || (informationAddOn.Tabelle == "AdressenFull")) { Adresse adresse = informationAddOn.Get_ConnectedAdresse; if (adresse != null) { informationAddOn.FreiText = adresse.FreiText; } return; } if (informationAddOn.Tabelle == "Organisationen") { Organisation organisation = informationAddOn.Get_ConnectedOrganisation; if (organisation != null) { informationAddOn.FreiText = organisation.FreiText; } return; } if (informationAddOn.Tabelle == "Materialien") { Material material = informationAddOn.Get_ConnectedMaterial; if (material != null) { informationAddOn.FreiText = material.FreiText; } return; } if (informationAddOn.Tabelle == "Timings") { if ((informationAddOn.TabelleId != null) && (informationAddOn.TabelleId != Guid.Empty)) { Timing timing = Data.DbServer3.AltErlaaInfo.Timings.Find(informationAddOn.TabelleId); if (timing.FreiText != informationAddOn.FreiText) timing.RefreshAllConnectedInformationenAddOn(); } return; } if (informationAddOn.Tabelle == "Personen") { Person person = informationAddOn.Get_ConnectedPerson; if (person != null) { informationAddOn.FreiText = person.FreiText; } return; } throw new Exception($"Bei {informationAddOn.Id} ist die Tabelle {informationAddOn.Tabelle}"); }
// each Mapping is processed over all Data for one Information (= all InformationenAddOn) private void ProcessThisMapping(InformationAddOn InfoAddOn, DataRow NewRow, ProcessConnector ProcessConnectorToProcess, StandBildMapping Mapping, String PageIDToUse) { String InputString = GetInputString (InfoAddOn, Mapping); String TargetItemName = Mapping.TargetItem.Replace("?1", PageIDToUse); if (String.IsNullOrEmpty(TargetItemName)) return; if (TargetItemName == "*") return; if (!NewRow.Table.Columns.Contains(TargetItemName)) throw new Exception("Das TargetItem \"" + TargetItemName + "\" fehlt"); if (NewRow.Table.Columns[TargetItemName] == null) return; int MaxTargetLength = Convert.ToInt32(Mapping.MaxTargetLength); String AddContentAllowed = Mapping.AddContentAllowed; MoveToOrAdd (NewRow, TargetItemName, InputString, Mapping); }
private bool ProcessSingleEntryFilling(DefaultFilling Filling, Information info, InformationAddOn sourceInfoAddOn) { switch (Filling.ContentTypProperty) { case DefaultFilling.ContentTyp.BannerConnector: DoConnectorDefaults("Banner", "BannerData", "WPMediaAddOnDataConnectionString"); break; case DefaultFilling.ContentTyp.StandBildConnector: DoConnectorDefaults("StandBild", "WohnParkInfo", "WPMediaAddOnDataConnectionString"); break; case DefaultFilling.ContentTyp.BerichtConnector: DoConnectorDefaults("StandBild", "LiesingInfo", "WPMediaAddOnDataConnectionString"); break; case DefaultFilling.ContentTyp.BeitragConnector: DoConnectorDefaults("Beitrag", "Beitrag", "WPMediaConnectionString"); break; case DefaultFilling.ContentTyp.FillConnectedTiming: DoConnectedTimingsDefaults(); break; case DefaultFilling.ContentTyp.AdjustChapterStructures: DoAdjustChapterStructures(); break; case DefaultFilling.ContentTyp.BannerTiming: DoTimingsDefault("BannerVonBis", -3, sourceInfoAddOn); break; case DefaultFilling.ContentTyp.StandBildTiming: DoTimingsDefault("AnzVonBis", -14, sourceInfoAddOn); break; case DefaultFilling.ContentTyp.BeitragTiming: DoTimingsDefault("AnzVonBis", -14, sourceInfoAddOn); break; case DefaultFilling.ContentTyp.EventTimings: DoEventTimingsDefault("EventVonBis", 0); break; case DefaultFilling.ContentTyp.BerichtTimings: DoBerichtTimingsDefault("AktivVonBis", 14); break; } return true; }
private String GetInputString (InformationAddOn InfoAddOn, StandBildMapping Mapping) { String RawInput = String.Empty; switch (Mapping.WhereTheDataIsTakenFromProperty) { case StandBildMapping.WhereTheDataIsTakenFrom.FreiText: RawInput = InfoAddOn.FreiText; break; case StandBildMapping.WhereTheDataIsTakenFrom.Static: RawInput = Mapping.SourceContent; break; case StandBildMapping.WhereTheDataIsTakenFrom.Title: RawInput = InfoAddOn.Information.Titel; break; case StandBildMapping.WhereTheDataIsTakenFrom.BannerTitle: RawInput = InfoAddOn.Information.BannerTitel; break; case StandBildMapping.WhereTheDataIsTakenFrom.BannerHeuteTitle: RawInput = InfoAddOn.Information.BannerHeuteTitel; break; case StandBildMapping.WhereTheDataIsTakenFrom.Typ: RawInput = InfoAddOn.Information.Typ.NameId; break; case StandBildMapping.WhereTheDataIsTakenFrom.Table: { DataRow RootTableRow = (DataRow) InfoAddOn.Get_ConnectedRootClass; if (RootTableRow != null) { RawInput = RootTableRow[Mapping.SourceItem].ToString(); } } break; case StandBildMapping.WhereTheDataIsTakenFrom.TemplateID: RawInput = Mapping.SourceContent; break; } if (String.IsNullOrEmpty (RawInput)) return RawInput; switch (Mapping.SplittingRulesProperty) { case StandBildMapping.SplittingRules.None: return RawInput; break; case StandBildMapping.SplittingRules.Word: { String [] allWords = RawInput.Replace ("\r\n", " ").Replace (" ", " ").Trim ().Split (' '); int numberOfWords = (int)((Mapping.TargetItemSplittingParameter1 <= allWords.Length) ? Mapping.TargetItemSplittingParameter1 : allWords.Length); return String.Join (" ", allWords, 0, numberOfWords); } break; case StandBildMapping.SplittingRules.Line: { RawInput = RawInput.Replace ("\r\n", "\n"); String [] lines = RawInput.Split ('\n'); int lineNumber = (int) Mapping.TargetItemSplittingParameter1; if (lineNumber > 0) { if (lines.Length >= lineNumber) return lines [lineNumber - 1]; else return String.Empty; } else { int StartingLine = lines.Length + lineNumber; if (StartingLine >= lines.Length) return String.Empty; else return lines [StartingLine]; } } break; case StandBildMapping.SplittingRules.Between: { RawInput = RawInput.Replace ("\r\n", "\n"); String [] Lines = RawInput.Split ('\n'); int StartIndex = (int)Mapping.TargetItemSplittingParameter1; int EndIndex = 0; if (Mapping.TargetItemSplittingParameter2 < 0) EndIndex = (int)(Lines.Length - 1 + Mapping.TargetItemSplittingParameter2); else EndIndex = (int)(Mapping.TargetItemSplittingParameter2); if ((StartIndex > EndIndex) || (EndIndex >= Lines.Length)) return String.Empty; StringBuilder Result = new StringBuilder (); int RunningIndex = StartIndex; while (RunningIndex <= EndIndex) Result.AppendLine (Lines [RunningIndex++].Trim ()); return Result.ToString ().Trim (new char [] {' ', '\r', '\n', '\t'}); } break; case StandBildMapping.SplittingRules.TakeAfter: { String TakeAfterString = Mapping.SourceContent; int Index = RawInput.IndexOf(TakeAfterString); if (Index == -1) return String.Empty; return RawInput.Substring(Index + TakeAfterString.Length).Trim(new char[] { ' ', '\r', '\n', '\t' }); } break; } return String.Empty; }
private bool CreateStandBildTableEntry (InformationAddOn infoAddOn, ProcessConnector connector, ExternalControlClient StartUpParameter, Timing actuallTerminEntry, int DaysBackForAnzeigeTiming) { if ((connector.TableId != null) && (connector.TableId != System.Guid.Empty)) { MessageBox.Show ("der gewählte Eintrag ist technisch nicht in Ordnung\r\n" + "\"Connector.TableID != null\r\n" + "Bitte löschen Sie diesen Eintrag, oder treten Sie diesbezüglich\r\n" + "mit WPMedia in Kontakt"); return false; } if (connector.InformationenId != InformationToProcess.Id) { MessageBox.Show("Ein Schwerer Fehler ist aufgetreten\r\n" + "connector.InformationenID != DataModell.ActiveInformationen.ID\r\n" + "Abbruch!!"); throw new Exception("connector.InformationenID != DataModell.ActiveInformationen.ID"); } ProcessConnectorToWorkWith = connector; CsDbTableBase DynamicTargetTable = Data.DbServer3.WPMediaAddOnData.GetTableByName(connector.TableName); List<DataRow> RowsToDelete = new List<DataRow>(); foreach (DataRow dataRow in DynamicTargetTable.Rows) { RowsToDelete.Add(dataRow); } foreach (DataRow dataRow in RowsToDelete) { dataRow.Delete(); } DynamicTargetTable.AcceptChanges(); DynamicTargetTable.HasBeenLoaded = true; DynamicTargetTable.Generic_DownloadRows ($"Select * from {connector.TableName} where NameID = '{connector.NameId.Replace("'", "''")}'"); DynamicTargetTable.HasBeenLoaded = true; foreach (DataRow dataRow in DynamicTargetTable.Rows) { if (dataRow["NameID"].ToString() == connector.NameId) { MessageBox.Show($"Der Eintrag\r\n\"{connector.NameId}\"\r\nist schon vorhanden, " + $"diesen Namen bitte ändern"); return false; } } connector.TableId = System.Guid.NewGuid (); DataRow NewRow = DynamicTargetTable.NewRow (); NewRow ["ID"] = connector.TableId; NewRow ["NameID"] = connector.NameId; Profile.ActiveTyp = InformationToProcess.Typ; if (Profile.ActiveRedaktion != connector.Redaktion) throw new Exception ("Profile.ActiveRedaktion != Connector.Redaktion"); try { ProcessThisMappingGroup(Profile.ActiveTyp.Id, NewRow, connector); } catch (Exception Excp) { throw new Exception("ProcessThisMappingGroup (Version 2.0) brachte Fehler:\r\n" + Excp.ToString()); } if (NewRow.Table.Columns.Contains("TemplateName")) { if (!String.IsNullOrEmpty(connector.TemplateNameDecorated)) NewRow["TemplateName"] = connector.TemplateNameDecorated; } if (NewRow.Table.Columns.Contains("LastUpdateToken")) NewRow ["LastUpdateToken"] = Basics.GetNextLastUpdateTokenHelper (); NewRow ["ModifyTimeStamp"] = DateTime.Now; NewRow ["ProcessingStatus"] = "InternetPublishingPending;TVPublishingPending"; NewRow.Table.Rows.Add (NewRow); CreateAndLocallyImportStandBildTimingsEntry (Data.DbServer3.WPMediaAddOnData.Timings, NewRow, actuallTerminEntry, DaysBackForAnzeigeTiming); DynamicTargetTable.DataSet.SaveAnabolic(new Object()); DynamicTargetTable.DataSet.AcceptChanges(); CreatedStandBildGuid = connector.TableId = (Guid) NewRow ["ID"]; CommonSearchClass HandledEntry = null; infoAddOn.FreiText = connector.FreiText; if ((connector.InformationenId != InformationToProcess.Id) || (connector.InformationenAddOnId != infoAddOn.Id)) throw new Exception("((connector.InformationenId != InformationToProcess.Id)\r\n" + "|| (connector.InformationenAddOnId = infoAddOn.Id))"); Data.DbServer3.AltErlaaInfo.SaveUnspecific(new Object()); Data.DbServer3.AltErlaaInfo.AcceptChanges(); //if (!RunningAsOldToNew) // DataModell.UpdateWorkDataSet (RequiredUpdateFunction.Modify, ref HandledEntry); //else // DataModell.WorkDataSet.AcceptChanges(); String WPMediaPackageRoot = System.IO.Path.Combine (Basics.GetLocalWPMediaRoot (), Basics.XML_AUTO_CONTENT_SOURCE); String LocalPackageFileName = System.IO.Path.Combine (WPMediaPackageRoot, System.IO.Path.Combine (WPMediaPackageRoot, Path.Combine (connector.TableName, NewRow ["ID"].ToString () + ".pkg"))); int NumberOfPlayablePages; if (String.Compare (LocalPackageFileName, CreateLocalPackage (connector.TableName, ((System.Guid) connector.TableId).ToString (), out NumberOfPlayablePages), StringComparison.InvariantCultureIgnoreCase) != 0) throw new Exception ("StandBildCreation - LocalPackageFileName != CreatedName"); SetNumberOfPages (connector.TableName, ((System.Guid) connector.TableId).ToString (), NewRow, NumberOfPlayablePages); if ((NewRow.Table.Columns ["TemplateName"] != null) && (!String.IsNullOrEmpty (NewRow ["TemplateName"].ToString ()))) CreatePackageCheckAndDoTemplatingIfRequired (LocalPackageFileName, NewRow); List<String> PictureElementeForThisInformationID = InformationToProcess.Get_MaterialElemente(connector); CheckAndDoPictureImportIfRequired (NewRow, PictureElementeForThisInformationID); WMB.DataWrapper.Instance.DoCentralFileUpdate (LocalPackageFileName); DoStandBildProgrammActivities (connector); return true; }
public bool CreateStandbildEntryForOneProcessConnector (InformationAddOn InfoAddOn, int DaysBackForAnzeigeTiming, Timing timingsToUse) { DbEntities.dbserver3.alterlaainfo.rows.ProcessConnector connector = InfoAddOn.Get_ConnectedProcessConnector; if (String.IsNullOrEmpty (connector.TableName)) { Basics.ReportErrorToEventViewer ("Connector TableName ist nicht gesetzt\r\n" + "bitte zuerst setzten, dann können\r\n" + "Sie einen Eintrag anlegen"); ErrorMessages.Add ("Connector TableName ist nicht gesetzt\r\n" + "bitte zuerst setzten, dann können\r\n" + "Sie einen Eintrag anlegen"); return false; } if ((connector.TableId != null) && (connector.TableId != System.Guid.Empty)) { Basics.ReportErrorToEventViewer ("ConnectorRow [\"TableID\"] != Convert.DBNull\r\n" + "|| ConnectorRow [\"TableID\"] != System.Guid.Empty\r\n" + "d.h. Es ist schon vorher ein Eintrag angelegt worden\r\n" + "bitte zuerst löschen, dann können\r\n" + "Sie einen Eintrag anlegen"); ErrorMessages.Add ("ConnectorRow [\"TableID\"] != Convert.DBNull\r\n" + "|| ConnectorRow [\"TableID\"] != System.Guid.Empty\r\n" + "d.h. Es ist schon vorher ein Eintrag angelegt worden\r\n" + "bitte zuerst löschen, dann können\r\n" + "Sie einen Eintrag anlegen"); return false; } return CreateStandBildTableEntry (InfoAddOn, connector, ExternalControlClient.HandlerList ["StandBild"], timingsToUse, DaysBackForAnzeigeTiming); }
public TimingsModell(InformationAddOn parentInformationAddOn) { TimingToProcess = parentInformationAddOn.Get_ConnectedTiming; ParentInformationAddOn = parentInformationAddOn; }
public ProcessConnectorModell(InformationAddOn parentInformationAddOn) { ProcessConnectorToProcess = parentInformationAddOn.Get_ConnectedProcessConnector; InformationAddOnToProcess = parentInformationAddOn; }