Exemple #1
0
        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>());
        }
Exemple #2
0
        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>();
        }
Exemple #3
0
        /// <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;
        }
Exemple #4
0
        /// <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);
        }