public String ValidateContraint(softWrench.sW4.Security.Entities.DataConstraint constraint) { try { var entityMetadata = MetadataProvider.Entity(constraint.EntityName); if (entityMetadata == null) { return(String.Format("EntityName {0} not found, unable to apply constraint", constraint.EntityName)); } var query = new EntityQueryBuilder().CountRowsFromConstraint(entityMetadata, constraint); _dao.FindByNativeQuery(query.Sql, query.Parameters); return(null); } catch (Exception e) { return(String.Format("error saving constraint {0}.Cause:{1}", constraint.WhereClause, e.Message)); } }
public BindedEntityQuery CountRowsFromConstraint(EntityMetadata entityMetadata, softWrench.sW4.Security.Entities.DataConstraint constraint) { var buffer = new StringBuilder(InitialStringBuilderCapacity); buffer.Append(QuerySelectBuilder.BuildSelectAttributesClause(entityMetadata, QueryCacheKey.QueryMode.Count, null)); buffer.Append(QueryFromBuilder.Build(entityMetadata)); var dataConstraintsWhereBuilder = SimpleInjectorGenericFactory.Instance.GetObject <DataConstraintsWhereBuilder>(typeof(DataConstraintsWhereBuilder)); var list = new List <IWhereBuilder> { new EntityWhereClauseBuilder(), dataConstraintsWhereBuilder, new MultiTenantCustomerWhereBuilder() }; var whereBuilder = new CompositeWhereBuilder(list); buffer.Append(whereBuilder.BuildWhereClause(entityMetadata.Name, QueryCacheKey.QueryMode.Count)); return(new BindedEntityQuery(buffer.ToString(), whereBuilder.GetParameters())); }