private List <DeleteObjectInfo> GetListOfBlockedPlaces(string objectName, long objId) { MarkedObjectLinks links = new MarkedObjectLinks(objectName); if (links.ObjectReferences.Count != 0) { DataTable table = getReferedTable(links, objId); return(getListOfReferedObjects(table)); } //Если объект не используется никакими другими типами, то и блокировать его никто не может return(new List <DeleteObjectInfo>()); }
private List<DeleteObjectInfo> GetListOfBlockedPlaces(string objectName, long objId) { MarkedObjectLinks links = new MarkedObjectLinks(objectName); if (links.ObjectReferences.Count != 0) { DataTable table = getReferedTable(links, objId); return getListOfReferedObjects(table); } //Если объект не используется никакими другими типами, то и блокировать его никто не может return new List<DeleteObjectInfo>(); }
/// <summary>Получить таблицу ссылающихся объектов</summary> /// <param name="links"></param> /// <param name="id"></param> /// <returns>Таблица ссылающихся объектов</returns> private DataTable getReferedTable(MarkedObjectLinks links, long id) { string format = string.Empty; string format_holders = string.Empty; StringBuilder holders = new StringBuilder(); if (links.DBObjectType == AramisObjectType.Catalog) { format = query_catalogs_format; format_holders = query_catalogs_holders_format; } else if (links.DBObjectType == AramisObjectType.Document) { format = query_documents_format; format_holders = query_documents_holders_format; } foreach (ObjectReference objRef in links.ObjectReferences) { string dBSubtableName = string.Concat("Sub", objRef.TableName, objRef.SubTableName); string additionalString = string.Empty; if (objRef.CommonSubtableName != string.Empty) { additionalString = string.Concat( "where ", "Common", objRef.CommonSubtableName, ".Guid = '", SystemConfiguration.DBConfigurationTree[objRef.TableName].GUID.ToString(), "'"); } string holder = String.Format( format_holders, objRef.TableName, objRef.SubTableName, objRef.FieldName, objRef.SubTableName == string.Empty ? objRef.TableName : dBSubtableName, objRef.SubTableName == string.Empty ? string.Empty : "Doc", objRef.SubTableName == string.Empty ? "0" : dBSubtableName + ".LineNumber", additionalString, objRef.SubTableName == string.Empty ? string.Empty : String.Format("left join {0} on {0}.Id = {1}.IdDoc", objRef.TableName, dBSubtableName)); holders.Append(holders.Length == 0 ? holder : "\r\nunion all\r\n\r\n" + holder); } IQuery query = DB.NewQuery(string.Format(format, links.ObjectName, holders)); query.AddInputParameter("Id", id); DataTable table = query.SelectToTable(); if (table == null) { throw new NullReferenceException("Ошибка виполнения запроса получения данных, о местах в которых есть ссылки на объект!"); } return table; }
/// <summary>Получить таблицу ссылающихся объектов</summary> /// <param name="links"></param> /// <param name="id"></param> /// <returns>Таблица ссылающихся объектов</returns> private DataTable getReferedTable(MarkedObjectLinks links, long id) { string format = string.Empty; string format_holders = string.Empty; StringBuilder holders = new StringBuilder(); if (links.DBObjectType == AramisObjectType.Catalog) { format = query_catalogs_format; format_holders = query_catalogs_holders_format; } else if (links.DBObjectType == AramisObjectType.Document) { format = query_documents_format; format_holders = query_documents_holders_format; } foreach (ObjectReference objRef in links.ObjectReferences) { string dBSubtableName = string.Concat("Sub", objRef.TableName, objRef.SubTableName); string additionalString = string.Empty; if (objRef.CommonSubtableName != string.Empty) { additionalString = string.Concat( "where ", "Common", objRef.CommonSubtableName, ".Guid = '", SystemConfiguration.DBConfigurationTree[objRef.TableName].GUID.ToString(), "'"); } string holder = String.Format( format_holders, objRef.TableName, objRef.SubTableName, objRef.FieldName, objRef.SubTableName == string.Empty ? objRef.TableName : dBSubtableName, objRef.SubTableName == string.Empty ? string.Empty : "Doc", objRef.SubTableName == string.Empty ? "0" : dBSubtableName + ".LineNumber", additionalString, objRef.SubTableName == string.Empty ? string.Empty : String.Format("left join {0} on {0}.Id = {1}.IdDoc", objRef.TableName, dBSubtableName)); holders.Append(holders.Length == 0 ? holder : "\r\nunion all\r\n\r\n" + holder); } IQuery query = DB.NewQuery(string.Format(format, links.ObjectName, holders)); query.AddInputParameter("Id", id); DataTable table = query.SelectToTable(); if (table == null) { throw new NullReferenceException("Ошибка виполнения запроса получения данных, о местах в которых есть ссылки на объект!"); } return(table); }