예제 #1
1
        public void UpdatePariProj()
        {
            log.Info("\nUpdatePariProj");
            try
            {
                var doc    = Application.DocumentManager.MdiActiveDocument;
                var editor = doc.Editor;

                var lg = new Logger(editor, log);
                lg.Info("Starte Update...");

                var           factory  = new Factory();
                IPariDatabase database = factory.CreatePariDatabase();

                if (!CheckTableValidity(database))
                {
                    return;
                }

                var blockReader = new BlockReader();
                blockReader.ReadBlocksFromModelspace();
                var blockInfos   = blockReader.BlockInfos;
                var wohnungInfos = blockReader.WohnungInfos;
                if (CheckBlockWohnungConsistencyAskUser(blockInfos, wohnungInfos))
                {
                    return;
                }
                var projektInfo = blockReader.ProjektInfo;
                if (projektInfo == null)
                {
                    var msg = string.Format(CultureInfo.CurrentCulture, "Der ProjektInfo-Block existiert nicht in der Zeichnung!");
                    log.Error(msg);
                    Application.ShowAlertDialog(msg);
                    return;
                }

                lg.Info(string.Format(CultureInfo.CurrentCulture, "Projekt-ID: {0}", database.GetProjektId(projektInfo)));

                var tableUpdater = new TableUpdater();
                tableUpdater.Update(blockInfos, wohnungInfos, projektInfo, database);
                tableUpdater.LogStatus(lg);

                if (CheckInvalidCategoriesAskUser(tableUpdater))
                {
                    return;
                }

                database.UpdateDatabase(tableUpdater, projektInfo);

                lg.Info("\n\nUpdatebeendet.");
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                Application.ShowAlertDialog(ex.Message);
            }
        }
예제 #2
0
        public void AddFieldsTest()
        {
            var           factory  = new Factory();
            IPariDatabase database = factory.CreatePariDatabase();

            var nrOfFields = database.CheckExistingFields();
        }
예제 #3
0
        public void CheckConsistency_No_Exception()
        {
            var           factory  = new Factory();
            IPariDatabase database = factory.CreatePariDatabase();

            database.CheckConsistency();
        }
예제 #4
0
        private static bool CheckTableValidity(IPariDatabase database)
        {
            List <string> tableNames;

            try
            {
                tableNames = database.GetTableNames();
            }
            catch (Exception ex)
            {
                var msg = string.Format(CultureInfo.CurrentCulture, "Fehler beim Lesen der Datenbank! {0}", ex.Message);
                log.Error(msg);
                Application.ShowAlertDialog(msg);
                return(false);
            }

            if (!tableNames.Contains("Projekt") || !tableNames.Contains("Raum") || !tableNames.Contains("Kategorie") ||
                !tableNames.Contains("GstInfo") || !tableNames.Contains("Wohnung"))
            {
                var msg = string.Format(CultureInfo.CurrentCulture, "Die Datenbank ist ungültig!");
                log.Error(msg);
                Application.ShowAlertDialog(msg);
                return(false);
            }

            return(true);
        }
예제 #5
0
        private void GetKategoriesFromDatabase(IPariDatabase database, int projektId)
        {
            var dbKats = database.GetKategories(projektId);

            foreach (var kat in dbKats)
            {
                _dbKatDict[kat.Identification] = kat;
            }

            DelKats = dbKats.Select(x => x).ToList();
        }
예제 #6
0
        private static int GetProjektId(IProjektInfo projektInfo, IPariDatabase database)
        {
            var projektId = database.GetProjektId(projektInfo);

            if (projektId < 0)
            {
                var msg = string.Format(CultureInfo.CurrentCulture, "Das Projekt '{0}' existiert nicht!",
                                        projektInfo.Bauvorhaben);
                Log.Error(msg);
                throw new InvalidOperationException(msg);
            }

            return(projektId);
        }
예제 #7
0
        public ExcelizerNF(IPariDatabase database, string locationHint)
        {
            _Database   = database;
            _TargetFile = locationHint;

            _TemplateFile = Path.Combine(Settings.Default.TemplateLocation, TEMPLATE_FILENAME);
            log.Debug(string.Format(CultureInfo.InvariantCulture, "Settings.TemplateLocation: '{0}'", _TemplateFile));
            if (!File.Exists(_TemplateFile))
            {
                if (!File.Exists(_TemplateFile))
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "File '{0}' doesn't exist!", _TemplateFile));
                }
            }
        }
예제 #8
0
        public ExcelizerNW(IPariDatabase database, string locationHint)
        {
            this._Database   = database;
            this._TargetFile = locationHint;

            _TemplateFile = Path.Combine(Settings.Default.TemplateLocation, TEMPLATE_FILENAME);
            log.Debug(string.Format(CultureInfo.InvariantCulture, "Settings.TemplateLocation: '{0}'", _TemplateFile));
            if (!File.Exists(_TemplateFile))
            {
                //var sourceDirName = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                //_TemplateNWFile = Path.Combine(sourceDirName, TEMPLATE_NW_FILENAME);
                if (!File.Exists(_TemplateFile))
                {
                    throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture, "File '{0}' doesn't exist!", _TemplateFile));
                }
            }
        }
예제 #9
0
        public ChangeDataUc()
        {
            InitializeComponent();

            log.Debug("New ChangeDataUc Window.");

            try
            {
                _Factory  = new Factory();
                _Database = _Factory.CreatePariDatabase();

                var zav = _Database.GetZuAbschlagVorgaben();
                _ZAV.Add(new ZuAbschlagVorgabe()
                {
                    Beschreibung = "", Prozent = 0.0
                });
                foreach (var z in zav)
                {
                    _ZAV.Add(new ZuAbschlagVorgabe()
                    {
                        Beschreibung = z.Beschreibung, Prozent = z.Prozent
                    });
                }
                cmbZaVorgaben.DataContext = this;
                TheZav = _ZAV[0];

                var projInfos = _Database.ListProjInfos();
                _ProjektInfoContainer    = new ProjektInfoContainer(projInfos);
                ProjektCombo.DataContext = _ProjektInfoContainer;
                _ProjektInfoContainer.PropertyChanged += ProjektInfoContainer_PropertyChanged;

                dgKategorien.ItemsSource       = _Kategories;
                dgKategorien.RowEditEnding    += dgKategorien_RowEditEnding;
                dgKategorien.SelectionChanged += dgKategorien_SelectionChanged;

                dgZuAbschlag.ItemsSource        = _ZuAbschlags;
                dgZuAbschlag.RowEditEnding     += dgZuAbschlag_RowEditEnding;
                dgZuAbschlag.CellEditEnding    += dgZuAbschlag_CellEditEnding;
                _ZuAbschlags.CollectionChanged += _ZuAbschlags_CollectionChanged;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Properties.Resources.MsgBoxTitle);
                log.Error(ex.Message, ex);
            }
        }
예제 #10
0
        public void ExportNF(IPariDatabase database, string locationHint, int projektId)
        {
            if (database == null)
            {
                throw new ArgumentNullException("database");
            }
            if (locationHint != null)
            {
                if (File.Exists(locationHint))
                {
                    throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "File '{0}' already exist!", locationHint), "locationHint");
                }
            }

            using (var excelizer = new ExcelizerNF(database, locationHint))
            {
                excelizer.ExportNf(projektId);
            }
        }
예제 #11
0
        public void Update(List <IBlockInfo> blockInfos, List <IWohnungInfo> wohnungInfos, IProjektInfo projektInfo, IPariDatabase database)
        {
            ClearAll();

            var projektId = GetProjektId(projektInfo, database);

            GetWohnungRecords(wohnungInfos, projektId);

            // Kategorien aus Datenbank
            GetKategoriesFromDatabase(database, projektId);

            // AutoCAD-Blockinfo
            var blockInfoDict = new Dictionary <string, IBlockInfo>();

            foreach (var blockInfo in blockInfos)
            {
                blockInfoDict[blockInfo.Handle] = blockInfo;
            }

            // Räume aus Datenkbank
            var dbRaume = database.GetRaeume(projektId);

            // Ermitteln der zu löschenden Räume
            foreach (var raumRecord in dbRaume)
            {
                _raumDict[raumRecord.AcadHandle] = raumRecord;
                if (!blockInfoDict.ContainsKey(raumRecord.AcadHandle))
                {
                    DelRaume.Add(raumRecord);
                }
            }

            // updRaume und newRaume
            foreach (var blockInfo in blockInfos)
            {
                IRaumRecord raumRecord;
                if (_raumDict.TryGetValue(blockInfo.Handle, out raumRecord))
                {
                    UpdRaume.Add(raumRecord);
                    var rr2 = raumRecord.ShallowCopy();
                    raumRecord.UpdateValuesFrom(blockInfo);
                    if (!raumRecord.IsEqualTo(rr2))
                    {
                        ChangedRaumRecords.Add(raumRecord);
                        NrOfChangedRaumRecords++;
                    }
                }
                else
                {
                    raumRecord           = _factory.CreateRaumRecord();
                    raumRecord.ProjektId = projektId;
                    NewRaume.Add(raumRecord);
                    raumRecord.UpdateValuesFrom(blockInfo);
                }

                IKategorieRecord kat;
                if (!_dbKatDict.TryGetValue(raumRecord.KatIdentification, out kat))
                {
                    kat           = _factory.CreateKategorie(raumRecord);
                    kat.ProjektId = projektId;
                    NewKats.Add(kat);
                    raumRecord.Kategorie = kat;
                    _dbKatDict.Add(raumRecord.KatIdentification, kat);
                }
                else
                {
                    if (!CompareNutzwert(raumRecord.Nutzwert, kat.Nutzwert))
                    {
                        // create kat because of rnw-handling
                        var tmpkat = _factory.CreateKategorie(raumRecord);
                        kat.RNW      = tmpkat.RNW;
                        kat.Nutzwert = tmpkat.Nutzwert;
                        UpdKats.Add(kat);
                    }
                    DelKats.Remove(kat);
                }

                raumRecord.Kategorie = kat;
            }

            CheckNutzwertPerKatOk();
        }
예제 #12
0
        public void ExportPari()
        {
            log.Info("ExportPari");
            try
            {
                var           factory  = new Factory();
                IPariDatabase database = factory.CreatePariDatabase();

                if (!CheckTableValidity(database))
                {
                    return;
                }

                var blockReader = new BlockReader();
                blockReader.ReadBlocksFromModelspace();
                var blockInfos   = blockReader.BlockInfos;
                var wohnungInfos = blockReader.WohnungInfos;
                var projektInfo  = blockReader.ProjektInfo;
                if (projektInfo == null)
                {
                    var msg = string.Format(CultureInfo.CurrentCulture, "Der ProjektInfo-Block existiert nicht in der Zeichnung!");
                    log.Error(msg);
                    Application.ShowAlertDialog(msg);
                    return;
                }
                var dwgName   = Application.GetSystemVariable("DwgName").ToString();
                var dwgPrefix = Application.GetSystemVariable("DwgPrefix").ToString();
                projektInfo.DwgName   = dwgName;
                projektInfo.DwgPrefix = dwgPrefix;
                var projektId = database.GetProjektId(projektInfo);
                if (projektId >= 0)
                {
                    var msg = string.Format(CultureInfo.CurrentCulture, "Das Projekt '{0}' existiert bereits! ProjektId = {1}.", projektInfo.Bauvorhaben, projektId);
                    log.Error(msg);
                    Application.ShowAlertDialog(msg);
                    return;
                }

                var tableBuilder = new TableBuilder();
                tableBuilder.Build(blockInfos, wohnungInfos);

                if (CheckInvalidCategoriesAskUser(tableBuilder))
                {
                    return;
                }


                var doc    = Application.DocumentManager.MdiActiveDocument;
                var editor = doc.Editor;

                database.SaveToDatabase(tableBuilder, projektInfo);

                var raumWithoutTop = tableBuilder.RaumTable.Where(x => string.IsNullOrEmpty(x.Top)).ToList();
                if (raumWithoutTop.Count > 0)
                {
                    editor.WriteMessage("\nFolgende Räume haben keine TOP-Information: ");
                    editor.WriteMessage("\n-----------------------------------------------------------------");
                    foreach (var ri in raumWithoutTop)
                    {
                        var msg = string.Format(CultureInfo.CurrentCulture, "\nRaum: {0}\tGeschoss: {1}\tNutzwert: {2}\tHandle: {3}", ri.Raum, ri.Lage, ri.RNW, ri.AcadHandle);
                        log.Warn(msg);
                        editor.WriteMessage(msg);
                    }
                }

                editor.WriteMessage("\n\nExport beendet.");
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                Application.ShowAlertDialog(ex.Message);
            }
        }