Esempio n. 1
0
        protected override void OnChanged(string propertyName, object oldValue, object newValue)
        {
            base.OnChanged(propertyName, oldValue, newValue);
            if (!this.Session.IsObjectToDelete(this))
            {
                switch (propertyName)
                {
                case "Anlage":
                    if (newValue != null)
                    {
                        boAnlage selectedAnlage = this.Session.GetObjectByKey <boAnlage>(this.Anlage.Oid);

                        if (selectedAnlage.Liegenschaft != null)
                        {
                            this.Liegenschaft = this.Session.GetObjectByKey <boLiegenschaft>(selectedAnlage.Liegenschaft.Oid);
                            //den Mandanten auch gleich setzen
                            this.Mandant = this.Session.GetObjectByKey <boMandant>(selectedAnlage.Liegenschaft.Mandant.Oid);
                            this.Betreff = selectedAnlage.AnlagenNummer;
                        }
                    }
                    else
                    {
                        this.Betreff      = null;
                        this.Liegenschaft = null;
                        this.Mandant      = null;
                    }
                    break;
                }
            }
        }
        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 doOpenBuildingDesigner_Execute(object sender, PopupWindowShowActionExecuteEventArgs e)
        {
            //abspeichern des Begäudes
            //das Gebäude gleich in die Anlagenkomponente schreiben
            IObjectSpace workingOs   = Application.CreateObjectSpace();
            DetailView   curView     = (DetailView)View;
            fiGebaeude   curbuilding = (fiGebaeude)e.PopupWindowViewCurrentObject;

            curbuilding.Save();
            e.PopupWindowView.ObjectSpace.CommitChanges();
            boAnlage curAnlage = (boAnlage)curView.CurrentObject;
        }
        private void doOpenBuildingDesigner_CustomizePopupWindowParams(object sender, CustomizePopupWindowParamsEventArgs e)
        {
            IObjectSpace   workingOs = Application.CreateObjectSpace();
            DetailView     curView   = (DetailView)View;
            boAnlage       curAnlage = (boAnlage)curView.CurrentObject;
            fiGebaeude     workingBuilding;
            boLiegenschaft curLiegenschaft = workingOs.GetObjectByKey <boLiegenschaft>(curAnlage.Liegenschaft.Oid);

            //ein neues Gebäude erstellen
            //ist bereits ein Gebäude gewählt dann dieses übernehmen
            if (curAnlage.Gebaeude != null)
            {
                workingBuilding = workingOs.GetObjectByKey <fiGebaeude>(curAnlage.Gebaeude.Oid);
            }
            else
            {
                workingBuilding = workingOs.CreateObject <fiGebaeude>();
                workingBuilding.Liegenschaft = curLiegenschaft;
            }
            e.View = Application.CreateDetailView(workingOs, workingBuilding);
        }
        private void doChangeAnlagenStatus_Execute(object sender, SingleChoiceActionExecuteEventArgs e)
        {
            IObjectSpace os        = this.ObjectSpace;
            DetailView   curView   = (DetailView)View;
            boAnlage     curAnlage = os.GetObjectByKey <boAnlage>(((boAnlage)curView.CurrentObject).Oid);
            boAnlage     workingAnlage;

            curAnlage.Anlagenstatus = (enmAnlagenStatus)e.SelectedChoiceActionItem.Data;
            //den History-Eintrag setzens
            curAnlage.Save();
            // wenn es unteranlagen gibt müssen diese auch den neuen Status erhalten
            if (curAnlage.lstUnteranlagen != null)
            {
                for (int i = 0; i < curAnlage.lstUnteranlagen.Count; i++)
                {
                    workingAnlage = os.GetObjectByKey <boAnlage>(curAnlage.lstUnteranlagen[i].Oid);
                    workingAnlage.Anlagenstatus = (enmAnlagenStatus)e.SelectedChoiceActionItem.Data;
                }
            }
            os.CommitChanges();
        }
        private void doAddHaustechnikKomponente_Execute(object sender, SingleChoiceActionExecuteEventArgs e)
        {
            //die Haustechnikkomponente muss ja auch noch in die Liegenschaft integriert werden
            //IObjectSpace os = this.ObjectSpace;
            IObjectSpace   workingOs       = Application.CreateObjectSpace();
            DetailView     curView         = (DetailView)View;
            boLiegenschaft curLiegenschaft = workingOs.GetObjectByKey <boLiegenschaft>(((boLiegenschaft)curView.CurrentObject).Oid);

            //was wurde gewählt
            ChoiceActionItem chosenOption = e.SelectedChoiceActionItem;
            //die Haustechnikkomponente auch gleich erstellen

            var message = string.Empty;

            if (chosenOption.Data != null)
            {
                fiTechnikeinheit chosenUnit  = (fiTechnikeinheit)e.SelectedChoiceActionItem.Data;
                fiTechnikeinheit workingUnit = workingOs.GetObjectByKey <fiTechnikeinheit>(chosenUnit.Oid);
                message = chosenUnit.SystemBezeichnung;

                //wird aktuell nicht benötigt
                //prüfen ob die Maximalanzahl überschritten wurde
                // fiTechnikDefinition relatedDefinition = workingOs.FindObject<fiTechnikDefinition>(new GroupOperator(new //BinaryOperator("FiObjekt.Objekttyp", curLiegenschaft.GetType(), BinaryOperatorType.Equal), new BinaryOperator("Anlagenart.Oid", chosenUnit.Basisanlage.Oid, BinaryOperatorType.Equal)));

                LgHaustechnikKomponente addedKomponente = workingOs.CreateObject <LgHaustechnikKomponente>();

                addedKomponente.Liegenschaft = curLiegenschaft;

                addedKomponente.Technikeinheit = workingUnit;
                //jetzt das Detailview dazu öffnen und die Werte anschreiben
                addedKomponente.Save();

                //hier brauch ich ein Popup das mir die Einstellung aufmacht, um die Bezeichnung zu setzen

                //für jede zugeordnete Anlagengruppe eine Anlage anlegen
                //ich brauch ja die Hauptanlage auch noch
                //die Hauptanlage erstellen
                boAnlage parentAnlage = workingOs.CreateObject <boAnlage>();
                parentAnlage.AnlagenArt   = workingOs.GetObjectByKey <boAnlagenArt>(chosenUnit.Basisanlage.Oid);
                parentAnlage.Liegenschaft = curLiegenschaft;

                parentAnlage.Save();
                addedKomponente.lstAnlagen.Add(parentAnlage);
                addedKomponente.Save();
                //os.CommitChanges();
                if (chosenUnit.lstAnlagenarten != null)
                {
                    foreach (boAnlagenArt item in workingUnit.lstAnlagenarten)
                    {
                        boAnlage subAnlage = workingOs.CreateObject <boAnlage>();
                        subAnlage.ParentAnlage = parentAnlage;
                        subAnlage.AnlagenArt   = workingOs.GetObjectByKey <boAnlagenArt>(item.Oid);
                        subAnlage.Liegenschaft = curLiegenschaft;
                        subAnlage.Save();
                        addedKomponente.lstAnlagen.Add(subAnlage);
                        addedKomponente.Save();
                    }
                }

                DetailView dv = Application.CreateDetailView(workingOs, addedKomponente, true);
                e.ShowViewParameters.CreatedView = dv;
            }
            refreshDetailView();
            // createMenue(doAddAnlage);
        }