Пример #1
0
        /// <summary>
        /// Gets the named special column.
        /// </summary>
        private IColumnConfig?GetSpecialColumn(string?name)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(null);
            }

            var c = DbTable !.Columns.Where(x => x.Name == name && !x.IsPrimaryKey).SingleOrDefault();

            if (c == null)
            {
                return(null);
            }

            var cc = new QueryColumnConfig {
                Name = c.Name, DbColumn = c
            };

            cc.Prepare(Root !, this);
            return(cc);
        }
Пример #2
0
        /// <summary>
        /// <inheritdoc/>
        /// </summary>
        protected override void Prepare()
        {
            CheckKeyHasValue(Name);
            CheckOptionsProperties();

            Schema  = DefaultWhereNull(Schema, () => "dbo");
            DbTable = Root !.DbTables !.Where(x => x.Name == Name && x.Schema == Schema).SingleOrDefault();
            if (DbTable == null)
            {
                throw new CodeGenException(this, nameof(Name), $"Specified Schema.Table '{Schema}.{Name}' not found in database.");
            }

            Alias      = DefaultWhereNull(Alias, () => new string(StringConversion.ToSentenceCase(Name) !.Split(' ').Select(x => x.Substring(0, 1).ToLower(System.Globalization.CultureInfo.InvariantCulture).ToCharArray()[0]).ToArray()));
            ViewName   = DefaultWhereNull(ViewName, () => "vw" + Name);
            ViewSchema = DefaultWhereNull(ViewSchema, () => Schema);

            if (!string.IsNullOrEmpty(Permission) && Permission.Split(".", StringSplitOptions.RemoveEmptyEntries).Length == 1)
            {
                Permission += ".Read";
            }

            ColumnNameIsDeleted   = DefaultWhereNull(ColumnNameIsDeleted, () => Root !.ColumnNameIsDeleted);
            ColumnNameTenantId    = DefaultWhereNull(ColumnNameTenantId, () => Root !.ColumnNameTenantId);
            ColumnNameOrgUnitId   = DefaultWhereNull(ColumnNameOrgUnitId, () => Root !.ColumnNameOrgUnitId);
            ColumnNameRowVersion  = DefaultWhereNull(ColumnNameRowVersion, () => Root !.ColumnNameRowVersion);
            ColumnNameCreatedBy   = DefaultWhereNull(ColumnNameCreatedBy, () => Root !.ColumnNameCreatedBy);
            ColumnNameCreatedDate = DefaultWhereNull(ColumnNameCreatedDate, () => Root !.ColumnNameCreatedDate);
            ColumnNameUpdatedBy   = DefaultWhereNull(ColumnNameUpdatedBy, () => Root !.ColumnNameUpdatedBy);
            ColumnNameUpdatedDate = DefaultWhereNull(ColumnNameUpdatedDate, () => Root !.ColumnNameUpdatedDate);
            ColumnNameDeletedBy   = DefaultWhereNull(ColumnNameDeletedBy, () => Root !.ColumnNameDeletedBy);
            ColumnNameDeletedDate = DefaultWhereNull(ColumnNameDeletedDate, () => Root !.ColumnNameDeletedDate);

            PrepareJoins();

            if (Order != null && Order.Count > 0)
            {
                foreach (var order in Order)
                {
                    order.Prepare(Root !, this);
                }
            }

            foreach (var c in DbTable.Columns)
            {
                if (c.IsPrimaryKey)
                {
                    var cc = new QueryColumnConfig {
                        Name = c.Name, DbColumn = c
                    };
                    cc.Prepare(Root !, this);
                    PrimaryKeyColumns.Add(cc);
                }

                if ((ExcludeColumns == null || !ExcludeColumns.Contains(c.Name !)) && (IncludeColumns == null || IncludeColumns.Contains(c.Name !)))
                {
                    var cc = new QueryColumnConfig {
                        Name = c.Name, DbColumn = c
                    };
                    var ca = AliasColumns?.Where(x => x.StartsWith(c.Name + "^", StringComparison.Ordinal)).FirstOrDefault();
                    if (ca != null)
                    {
                        var parts = ca.Split("^", StringSplitOptions.RemoveEmptyEntries);
                        if (parts.Length == 2)
                        {
                            cc.NameAlias = parts[1];
                        }
                    }

                    cc.Prepare(Root !, this);
                    Columns.Add(cc);
                }
            }

            if (Where == null)
            {
                Where = new List <QueryWhereConfig>();
            }

            if (ColumnTenantId != null)
            {
                Where.Add(new QueryWhereConfig {
                    Statement = $"[{Alias}].[{ColumnTenantId.Name}] = dbo.fnGetTenantId(NULL)"
                });
            }

            if (ColumnIsDeleted != null)
            {
                Where.Add(new QueryWhereConfig {
                    Statement = $"([{Alias}].[{ColumnIsDeleted.Name}] IS NULL OR [{Alias}].[{ColumnIsDeleted.Name}] = 0)"
                });
            }

            if (!string.IsNullOrEmpty(Permission))
            {
                Where.Add(new QueryWhereConfig {
                    Statement = $"{Root!.GetUserPermissionSql}(NULL, NULL, '{Permission.ToUpperInvariant()}', NULL) = 1"
                });