コード例 #1
0
        public static void AuditAutoCrudMetadataFilter(AutoCrudMetadata meta)
        {
            var applyAttrs = meta.AutoApplyAttrs;

            if (applyAttrs.IsEmpty())
            {
                return;
            }

            var hasAuditQuery      = applyAttrs.Any(x => x.Name == Behavior.AuditQuery);
            var hasAuditCreate     = applyAttrs.Any(x => x.Name == Behavior.AuditCreate);
            var hasAuditModify     = applyAttrs.Any(x => x.Name == Behavior.AuditModify);
            var hasAuditSoftDelete = applyAttrs.Any(x => x.Name == Behavior.AuditSoftDelete);

            if (hasAuditQuery)
            {
                meta.AddFilterAttribute(new AutoFilterAttribute(
                                            QueryTerm.Ensure, nameof(AuditBase.DeletedDate), SqlTemplate.IsNull));
            }

            if (!hasAuditCreate && !hasAuditModify && !hasAuditSoftDelete)
            {
                return;
            }

            meta.PopulateAttrs ??= new List <AutoPopulateAttribute>();
            if (hasAuditCreate)
            {
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.CreatedDate))
                {
                    Eval = "utcNow"
                });
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.CreatedBy))
                {
                    Eval = "userAuthName"
                });
            }
            if (hasAuditCreate || hasAuditModify)
            {
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.ModifiedDate))
                {
                    Eval = "utcNow"
                });
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.ModifiedBy))
                {
                    Eval = "userAuthName"
                });
            }
            if (hasAuditSoftDelete)
            {
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.DeletedDate))
                {
                    Eval = "utcNow"
                });
                meta.PopulateAttrs.Add(new AutoPopulateAttribute(nameof(AuditBase.DeletedBy))
                {
                    Eval = "userAuthName"
                });
                meta.SoftDelete = true;
            }
        }