void layerItemsView1_PropertyChanged(object sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case "EditableIdLayer": { _currentIdTable = mf.layerItemsView1.EditableIdLayer; _currentTablePg = Program.app.getTableInfo(_currentIdTable); CurrentTable = _currentTablePg; } break; case "EditableLayer": { _currentLayerM = mf.layerItemsView1.EditableLayer; CurrentTable = _currentLayerM; } break; default: break; } }
private static Layer getLayer(Interfaces.tablesInfo tableInfo) { return(Program.mapAdmin.SscLayers.FirstOrDefault(w => w.lname == tableInfo.nameDB || w.lname == tableInfo.view_name)); }
/// <summary> /// Сохранение /// </summary> public void Save(object parameter = null) { if (CanSave()) { cti.ThreadProgress.ShowWait(); try { if (IsRegistered) { using (SqlWork sqlWork = new SqlWork(true)) { sqlWork.sql = String.Format(@"UPDATE sys_scheme.table_info SET name_map = @name_map, photo = {1}, lablefiled = '{2}', pk_fileld = '{3}', geom_field = '{4}' WHERE id = {5};", Text, HasFiles, (LabelField != null) ? LabelField.Name : "", (PkField != null) ? PkField.Name : "", (GeomField != null) ? GeomField.Name : "", Id); sqlWork.ExecuteNonQuery(new List <Params>() { new Params("@name_map", Text, NpgsqlDbType.Varchar) }); } } else { using (SqlWork sqlWork = new SqlWork(true)) { sqlWork.BeginTransaction(); sqlWork.sql = "SELECT nextval('sys_scheme.table_info_id_seq')::integer as val"; int idTable = sqlWork.ExecuteScalar <Int32>(); sqlWork.CloseReader(); sqlWork.sql = String.Format(@"INSERT INTO sys_scheme.table_info (id, name_db, name_map, geom_type, type, map_style, scheme_name, photo, pk_fileld, lablefiled, geom_field) VALUES ({0}, '{1}',@name_map, {3}, {4}, {5}, '{6}', {7}, '{8}', '{9}', '{10}')", idTable, Name, Text, Convert.ToInt32(GeomType), Convert.ToInt32(TableType), IsMapStyle, ParentScheme.SchemeName, HasFiles, PkField.Name, (LabelField != null) ? LabelField.Name : "", (GeomField != null) ? GeomField.Name : ""); sqlWork.ExecuteNonQuery(new List <Params>() { new Params("@name_map", Text, NpgsqlDbType.Varchar) }); if (IsMapStyle && (TableType == ERTableType.Interval || TableType == ERTableType.Catalog)) { bool exists_style = false; sqlWork.sql = String.Format("SELECT * FROM {0}.{1} LIMIT 1", ParentScheme.SchemeName, Name); sqlWork.ExecuteReader(); if (sqlWork.CanRead()) { for (int i = 0; sqlWork.GetFiealdCount() > i; i++) { if (sqlWork.GetFieldName(i) == "exists_style") { exists_style = true; break; } } } sqlWork.CloseReader(); if (!exists_style) { MessageBoxResult dr = MessageBox.Show( Rekod.Properties.Resources.PgReg_NeedAdditionalFields, Rekod.Properties.Resources.PgReg_StyleCreation, MessageBoxButton.YesNo); if (dr == MessageBoxResult.Yes) { sqlWork.sql = String.Format("ALTER TABLE {0}.{1} " + "ADD exists_style boolean DEFAULT true," + "ADD fontname character varying DEFAULT 'Map Symbols'," + "ADD fontcolor integer DEFAULT 16711680," + "ADD fontframecolor integer DEFAULT 16711680," + "ADD fontsize integer DEFAULT 12," + "ADD symbol integer DEFAULT 35," + "ADD pencolor integer DEFAULT 16711680," + "ADD pentype integer DEFAULT 2," + "ADD penwidth integer DEFAULT 1," + "ADD brushbgcolor bigint DEFAULT 16711680," + "ADD brushfgcolor integer DEFAULT 16711680," + "ADD brushstyle integer DEFAULT 0," + "ADD brushhatch integer DEFAULT 1;", ParentScheme.SchemeName, Name); sqlWork.ExecuteNonQuery(); } } } // Регистрация полей foreach (var f in Fields) { if (f.ToBeRegistered) { if (f.DataType == 0) { f.DataType = ERDataType.Text; } sqlWork.CloseReader(); sqlWork.sql = String.Format( @"INSERT INTO sys_scheme.table_field_info(id_table, name_db, name_map, type_field, visible, name_lable, is_reference, is_interval) VALUES ({0}, '{1}', '{2}', {3}, {4}, @name_lable, {6}, {7});", idTable, f.Name, f.Name, Convert.ToInt32(f.DataType), true, f.Description, false, false); sqlWork.ExecuteNonQuery(new List <Params>() { new Params("@name_lable", f.Description, NpgsqlDbType.Varchar) }); } } sqlWork.CloseReader(); if (HasFiles) { bool exist = false; sqlWork.sql = String.Format("SELECT EXISTS(SELECT * FROM pg_tables WHERE schemaname='{0}' AND tablename='photo_{1}');", ParentScheme.SchemeName, Name); exist = sqlWork.ExecuteScalar <Boolean>(); if (exist) { bool est_v_tabl = false; sqlWork.sql = String.Format("SELECT EXISTS(SELECT id FROM sys_scheme.table_photo_info WHERE id_table = {0});", idTable); est_v_tabl = sqlWork.ExecuteScalar <Boolean>(); if (!est_v_tabl) { sqlWork.sql = String.Format("INSERT INTO sys_scheme.table_photo_info(id_table, photo_table, photo_field, photo_file, id_field_tble)" + " VALUES ({0}, 'photo_{1}', 'id_obj', 'file', '{2}');", idTable, Name, PkField.Name); sqlWork.ExecuteNonQuery(); } } else { sqlWork.sql = String.Format("SELECT sys_scheme.set_photo_table({0}, true)", idTable); sqlWork.ExecuteNonQuery(); } } else { sqlWork.sql = String.Format("DELETE FROM sys_scheme.table_photo_info WHERE id_table = {0};", Id); sqlWork.ExecuteNonQuery(); } sqlWork.sql = String.Format("SELECT sys_scheme.set_table_rights_for_admins({0});", idTable.ToString()); sqlWork.ExecuteNonQuery(); sqlWork.EndTransaction(); IsRegistered = true; foreach (var f in Fields) { if (f.ToBeRegistered) { f.IsRegistered = true; } } Id = idTable; } } if (IsSscActive) { if (SscGroup != null) { Interfaces.tablesInfo tableInfo = new Interfaces.tablesInfo() { idTable = Id, nameDB = Name, nameMap = Text, pkField = PkField.Name, geomFieldName = (GeomField == null) ? null : GeomField.Name, lableFieldName = (LabelField == null) ? null : LabelField.Name, TypeGeom = (Interfaces.TypeGeometry)GeomType }; tableInfo.ListField = new List <Interfaces.fieldInfo>(); foreach (var f in Fields.Where(p => p.IsRegistered)) { tableInfo.ListField.Add(new Interfaces.fieldInfo() { nameDB = Name, nameMap = Text }); } MapAdmin.RegisterTable(tableInfo, SscGroup); } } cti.ThreadProgress.Close(); MessageBox.Show(Rekod.Properties.Resources.PgReg_ChangesSaved); } catch (Exception ex) { cti.ThreadProgress.Close(); MessageBox.Show(ex.Message); } } }