private void createMenue(SingleChoiceAction action) { IObjectSpace os = this.ObjectSpace; DetailView curView = (DetailView)View; boAnlage curAnlage = os.GetObjectByKey <boAnlage>(((boAnlage)curView.CurrentObject).Oid); action.Items.Clear(); switch (action.Id) { case ("doAddMessung"): { boAnlagenArt curArt = os.GetObjectByKey <boAnlagenArt>(curAnlage.AnlagenArt.Oid); action.ImageName = "system_monitor"; if (curArt.lstMesstypen != null) { foreach (boMesstyp messtyp in curArt.lstMesstypen) { ChoiceActionItem curItem = new ChoiceActionItem(messtyp.Oid.ToString(), messtyp.Bezeichnung, messtyp); curItem.ImageName = "system_monitor"; action.Items.Add(curItem); } } break; } } }
public void doAddAnlage_Execute(object sender, SingleChoiceActionExecuteEventArgs e) { //IObjectSpace os = this.ObjectSpace; IObjectSpace os = Application.CreateObjectSpace(); DetailView curView = (DetailView)View; boLiegenschaft curLiegenschaft = os.GetObjectByKey <boLiegenschaft>(((boLiegenschaft)curView.CurrentObject).Oid); //allgemein -> Auswahl der Parameter und dann DetailView öffnen ChoiceActionItem currentSelection = e.SelectedChoiceActionItem; boAnlage mainUnit; if (currentSelection.ParentItem != null) { boAnlage result = null; boAnlagenArt selectedArt = os.GetObjectByKey <boAnlagenArt>(((boAnlagenArt)currentSelection.Data).Oid); if (currentSelection.ParentItem.Data.GetType() == typeof(LgHaustechnikKomponente)) { //1. Anlage zu einer bestehenden Komponente hinzufügen LgHaustechnikKomponente curKomponente = os.GetObjectByKey <LgHaustechnikKomponente>(((LgHaustechnikKomponente)currentSelection.ParentItem.Data).Oid); if (curKomponente != null) { //gibt es eine Hauptanlage? mainUnit = curKomponente.lstAnlagen.Where(t => t.ParentAnlage == null).FirstOrDefault(); if (mainUnit != null) { //welche Anlagenart? result = os.CreateObject <boAnlage>(); result.Liegenschaft = curLiegenschaft; result.HaustechnikKomponente = curKomponente; result.ParentAnlage = os.GetObjectByKey <boAnlage>(mainUnit.Oid); } //die Hauptanlage der Komponente finden result.AnlagenArt = selectedArt; } } //2. Anlage zur Liegenschaft hinzufügen //Wenn ein Item gewählt wurde das als Data die Gruppe hat: if (currentSelection.ParentItem.Data.GetType() == typeof(boLiegenschaft)) { result = os.CreateObject <boAnlage>(); result.Liegenschaft = curLiegenschaft; if (currentSelection.Data.GetType() == typeof(boAnlagenKategorie)) { result.AnlagenKategorie = os.GetObjectByKey <boAnlagenKategorie>(((boAnlagenKategorie)currentSelection.Data).Oid); } else { result.AnlagenArt = selectedArt; } } if (result != null) { DetailView dv = Application.CreateDetailView(os, result); e.ShowViewParameters.CreatedView = dv; } } }
protected override void OnActivated() { base.OnActivated(); // Perform various tasks depending on the target View. curView = (DetailView)View; curAnlage = (boAnlage)curView.CurrentObject; // XPObjectSpace os = (XPObjectSpace)curView.ObjectSpace; if (curAnlage != null) { if (curAnlage.Typ != null) { fiHerstellerProdukt curProdukt = curView.ObjectSpace.GetObjectByKey <fiHerstellerProdukt>(curAnlage.Typ.Oid); if (curProdukt != null) { curAnlage.generateAnlagenparameter(curProdukt); curAnlage.Save(); curView.ObjectSpace.CommitChanges(); } } if (curAnlage.AnlagenArt != null) { boAnlagenArt curAnlagenart = curView.ObjectSpace.GetObjectByKey <boAnlagenArt>(curAnlage.AnlagenArt.Oid); if (curAnlagenart != null) { curAnlage.generateAnlagenparameter(curAnlagenart); curAnlage.Save(); curView.ObjectSpace.CommitChanges(); } } createStatusAction(); if (!curView.ObjectSpace.IsNewObject(curAnlage)) //if (curAnlage.AnlagenArt != null) { createMenue(doAddKomponente); } curAnlage.checkAnlagenActions(); curAnlage.Save(); curView.ObjectSpace.CommitChanges(); curAnlage.checkProduktActions(); curAnlage.Save(); curView.ObjectSpace.CommitChanges(); this.View.Refresh(); } }
private void createMenue(SingleChoiceAction action) { #region Anlagen hinzufügen IObjectSpace os = this.ObjectSpace; DetailView curView = (DetailView)View; boLiegenschaft curLiegenschaft = os.GetObjectByKey <boLiegenschaft>(((boLiegenschaft)curView.CurrentObject).Oid); IList <boAnlagenArt> lstAnlagenArten = os.GetObjects <boAnlagenArt>(new BinaryOperator("Aktiv", true, BinaryOperatorType.Equal)); IList <LgHaustechnikKomponente> lstLgKomponenten = null; if (curLiegenschaft != null) { if (curLiegenschaft.lstHaustechnikKomponenten != null) { lstLgKomponenten = curLiegenschaft.lstHaustechnikKomponenten; } } switch (action.Id) { case ("doDeleteAnlagenGruppe"): doDeleteAnlagenGruppe.Items.Clear(); foreach (LgHaustechnikKomponente item in curLiegenschaft.lstHaustechnikKomponenten) { ChoiceActionItem curActionItem = new ChoiceActionItem(); curActionItem.Caption = (item.Bezeichnung != null)?item.Bezeichnung:item.BezeichnungIntern; curActionItem.Data = item; doDeleteAnlagenGruppe.Items.Add(curActionItem); } break; //ANlagengruppe hinzufügen case ("doAddHaustechnikKomponente"): #region Technikeinheiten IList <fiTechnikeinheit> lstTechnikeinheiten = os.GetObjects <fiTechnikeinheit>(new BinaryOperator("Aktiv", true, BinaryOperatorType.Equal)); //erst die Basisanlagen durchgehen var lstBasisanlagen = (from fiTechnikeinheit item in lstTechnikeinheiten select item.Basisanlage).ToList(); var groupedList = lstTechnikeinheiten.GroupBy(t => t.Basisanlage).Select(t => t); /* * var groupedList = item.Debitorenposition.lstBuchungspositionen.GroupBy(t => t.ArtikelNummer).Select(t => t); */ foreach (var group in groupedList) { var title = group.Key; //jede Grupppe als Basis hinzufügen ChoiceActionItem curGroupItem = new ChoiceActionItem(title.ToString(), null); foreach (var item in group) { curGroupItem.Items.Add(new ChoiceActionItem(((fiTechnikeinheit)item).Oid.ToString(), ((fiTechnikeinheit)item).Bezeichnung, (fiTechnikeinheit)item)); } this.doAddHaustechnikKomponente.Items.Add(curGroupItem); } #endregion break; case ("doAddAnlage"): //this.doAddAnlage.Items.Add(new ChoiceActionItem("-Komponenten-", null)); doAddAnlage.Items.Clear(); if (lstLgKomponenten != null) { foreach (LgHaustechnikKomponente htEntry in lstLgKomponenten) { ChoiceActionItem mainItem = new ChoiceActionItem(htEntry.Oid.ToString(), String.Format("{0} - {1}", htEntry.Systembezeichnung, htEntry.Bezeichnung), htEntry); mainItem.ImageName = "control_panel_16"; mainItem.BeginGroup = true; //hier nur die Anlagenarten die erlaubt sind //htEntry.Technikeinheit.lstAnlagenarten //gibt es noch andere Definitionen für die Technikeinheiten?? //Technikeinheit //alle anlagenarten mit der gleichen Basisanlage boAnlagenArt curBasisAnlage = os.GetObjectByKey <boAnlagenArt>(htEntry.Technikeinheit.Basisanlage.Oid); //alle Technikeinheiten mit der selben Basisanlage IList <fiTechnikeinheit> lstRelatedEinheiten = os.GetObjects <fiTechnikeinheit>(new BinaryOperator("Basisanlage.Oid", htEntry.Technikeinheit.Basisanlage.Oid, BinaryOperatorType.Equal)); List <boAnlagenArt> lstAllowedArten = new List <boAnlagenArt>(); foreach (fiTechnikeinheit einheit in lstRelatedEinheiten) { foreach (boAnlagenArt art in einheit.lstAnlagenarten) { if (!lstAllowedArten.Contains(art)) { lstAllowedArten.Add(art); } } } //die Liste der Anlagenarten erstellen //foreach (boAnlagenArt allowedArt in htEntry.Technikeinheit.lstAnlagenarten) //die Gruppen die aktiv sind als mainitem setzen foreach (boAnlagenArt allowedArt in lstAllowedArten) { ChoiceActionItem curItem = new ChoiceActionItem(allowedArt.Oid.ToString(), allowedArt.Bezeichnung, allowedArt); curItem.ImageName = "control_panel_16"; mainItem.Items.Add(curItem); } /// mainItem.Items.Add(new ChoiceActionItem) this.doAddAnlage.Items.Add(mainItem); } } else { try { //hier die Gruppen einbauen ChoiceActionItem mainItemAnlagenArten = new ChoiceActionItem(curLiegenschaft.Oid.ToString(), "-Anlagenarten-", curLiegenschaft); mainItemAnlagenArten.ImageName = "gear_in_16"; mainItemAnlagenArten.BeginGroup = true; IList <boAnlagenKategorie> lstAnlagenGruppen = os.GetObjects <boAnlagenKategorie>(new BinaryOperator("Aktiv", true, BinaryOperatorType.Equal)); //für jede Gruppe ein MainItem erstellen und dann die Arten dazu durchparsen foreach (boAnlagenKategorie anlGruppe in lstAnlagenGruppen) { ChoiceActionItem groupItem = new ChoiceActionItem(anlGruppe.Oid.ToString(), anlGruppe.Bezeichnung, curLiegenschaft); groupItem.ImageName = "interface_preferences"; if (anlGruppe.lstAnlagenarten != null) { foreach (boAnlagenArt anlagenArt in anlGruppe.lstAnlagenarten) { ChoiceActionItem curAnlagenItem = new ChoiceActionItem(anlagenArt.Oid.ToString(), anlagenArt.Bezeichnung, anlagenArt); curAnlagenItem.ImageName = "gear_in_16"; groupItem.Items.Add(curAnlagenItem); } } mainItemAnlagenArten.Items.Add(groupItem); } // this.doAddAnlage.Items.Add(mainItemAnlagenArten); #endregion } catch { } } break; } }