예제 #1
0
        public static SqlQuery Build(QueryDef def, BizForm form, IEnumerable <AttributeSort> sortAttrs, Guid userId, IDataContext dataContext)
        {
            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var sqb = new SqlQueryBuilderTool(provider, dataContext, userId);
                return(sqb.Build(def, form, sortAttrs));
            }

            /*var query = SqlQueryBuilder.Build(dataContext, def, userId);
             * try
             * {
             *  query.AddAttribute("&Id");
             *  AddFormAttributes(query, query.Source, form);
             *  if (sortAttrs != null)
             *      foreach (var attr in sortAttrs)
             *          query.AddOrderAttribute(attr.AttributeId, attr.Asc);
             *  else
             *      AddFormSortOrders(query, query.Source, form);
             *
             *  return query;
             * }
             * catch
             * {
             *  query.Dispose();
             *  throw;
             * }*/
        }
예제 #2
0
        public static SqlQuery Build(BizForm form, Guid userId, IDataContext dataContext)
        {
            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var sqb = new SqlQueryBuilderTool(provider, dataContext, userId);
                return(sqb.Build(form));
            }

            /*if (form.DocumentDefId == null)
             *  throw new ApplicationException("Не могу создать запрос! Форма не связана с документом!");
             *
             * var query = new SqlQuery(dataContext, (Guid)form.DocumentDefId, userId);
             * try
             * {
             *  query.AddAttribute("&Id");
             *  AddFormAttributes(query, query.Source, form);
             *  AddFormSortOrders(query, query.Source, form);
             *
             *  return query;
             * }
             * catch
             * {
             *  query.Dispose();
             *  throw;
             * }*/
        }
예제 #3
0
        /*public static SqlQuery Build(Doc doc, IDataContext dataContext = null)
         * {
         *  var query = new SqlQuery(doc.DocDef.Id, dataContext);
         *  try
         *  {
         *      AddDocConditions(query, query.Source, doc);
         *
         *      return query;
         *  }
         *  catch
         *  {
         *      query.Dispose();
         *      throw;
         *  }
         * }*/

        /*public static SqlQuery Build(DocDef docDef, IDataContext dataContext = null)
         * {
         *  var query = new SqlQuery(dataContext, docDef);
         *  try
         *  {
         *      AddDocDefAttributes(query, query.Source, docDef);
         *
         *      return query;
         *  }
         *  catch
         *  {
         *      query.Dispose();
         *      throw;
         *  }
         * }*/

        public static SqlQuery Build(BizForm form, IEnumerable <Guid> docIds, IEnumerable <AttributeSort> sortAttrs, Guid userId,
                                     IDataContext dataContext)
        {
            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var sqb = new SqlQueryBuilderTool(provider, dataContext, userId);
                return(sqb.Build(form, docIds, sortAttrs));
            }

            /*if (form.DocumentDefId == null)
             *  throw new ApplicationException("Не могу создать запрос! Форма не связана с документом!");
             *
             * var query = new SqlQuery(dataContext, (Guid) form.DocumentDefId, userId);
             * try
             * {
             *  query.AddAttribute("&Id");
             *  AddFormAttributes(query, query.Source, form);
             *  query.AddCondition(ExpressionOperation.And, query.Source.GetDocDef(), "&Id", ConditionOperation.In,
             *      docIds.Cast<object>());
             *  if (sortAttrs != null)
             *      foreach (var attr in sortAttrs)
             *          query.AddOrderAttribute(attr.AttributeId, attr.Asc);
             *  else
             *      AddFormSortOrders(query, query.Source, form);
             *
             *  return query;
             * }
             * catch
             * {
             *  query.Dispose();
             *  throw;
             * }*/
        }
예제 #4
0
        public static SqlQuery BuildAttrList(BizControl form, Guid docId, Guid docDefId, Guid attrDefId, BizForm filter, IEnumerable <AttributeSort> sortAttrs, Guid userId, IDataContext dataContext)
        {
            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var sqb = new SqlQueryBuilderTool(provider, dataContext, userId);
                return(sqb.BuildAttrList(form, docId, docDefId, attrDefId, filter, sortAttrs));
            }

            /*var query = new SqlQuery(docDefId, docId, attrDefId, dataContext);
             * try
             * {
             *  query.AddAttribute("&Id");
             *  AddFormAttributes(query, query.Source, form);
             *  if (filter != null)
             *      AddFormConditions(query, query.Source, filter);
             *
             *  if (sortAttrs != null)
             *      foreach (var attr in sortAttrs)
             *      {
             *          query.AddOrderAttribute(attr.AttributeId, attr.Asc);
             *      }
             *  else
             *      AddFormSortOrders(query, query.Source, form);
             *
             *  return query;
             * }
             * catch
             * {
             *  query.Dispose();
             *  throw;
             * }*/
        }
예제 #5
0
        public SqlQueryReader Create(QueryDef def)
        {
            var sqb   = new SqlQueryBuilderTool(Provider, DataContext);
            var query = sqb.Build(def);

            return(Create(query));
        }
예제 #6
0
        public static SqlQuery Build(IDataContext dataContext, QueryDef def)
        {
            if (def.Source == null)
            {
                throw new PropertyConstraintException("QueryDef Source not defined!");
            }

            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var bldr = new SqlQueryBuilderTool(provider, dataContext, def.UserId);

                return(bldr.Build(def));
            }

            /*using (var defRepo = new DocDefRepository(dataContext))
             * {
             *  var docDef = def.Source.DocDefId == Guid.Empty
             *                   ? defRepo.DocDefByName(def.Source.DocDefName)
             *                   : defRepo.DocDefById(def.Source.DocDefId);
             *
             *  var query = new SqlQuery(dataContext, docDef, def.Alias, def.UserId)
             *                  {
             *                      DocumentId = def.DocumentId,
             *                      ListAttrDefId = def.ListAttrId
             *                  };
             *  try
             *  {
             *      foreach (var source in def.Sources)
             *      {
             *          BuildSource(query, source, defRepo, dataContext);
             *      }
             *      foreach (var join in def.Joins)
             *      {
             *          BuildJoin(query, join, docDef, dataContext);
             *      }
             *      foreach (var condition in def.WhereConditions)
             *      {
             *          BuildCondition(query, condition, docDef, null);
             *      }
             *      foreach (var order in def.OrderAttributes)
             *      {
             *          query.AddOrderAttribute(order);
             *      }
             *      return query;
             *  }
             *  catch
             *  {
             *      query.Dispose();
             *      throw;
             *  }
             * }*/
        }
예제 #7
0
        /* public static SqlQuery Build(Guid docDefId, Guid docStateId, BizForm filter, IEnumerable<AttributeSort> sortAttrs, IDataContext dataContext = null)
         * {
         *   var query = new SqlQuery(docDefId, dataContext);
         *   try
         *   {
         *       query.AddAttribute("&Id");
         *       query.AddCondition(ExpressionOperation.And, query.Source.GetDocDef(), "&State", ConditionOperation.Equal,
         *                          docStateId);
         *       if (filter != null)
         *       {
         *           AddFormAttributes(query, query.Source, filter);
         *           AddFormConditions(query, query.Source, filter);
         *       }
         *       else
         *           AddDocDefAttributes(query, query.Source, query.Source.GetDocDef());
         *
         *       if (sortAttrs != null)
         *           foreach (var attr in sortAttrs)
         *           {
         *               query.AddOrderAttribute(attr.AttributeId, attr.Asc);
         *           }
         *
         *       return query;
         *   }
         *   catch
         *   {
         *       query.Dispose();
         *       throw;
         *   }
         * }*/

        /*[Obsolete("Не завершенный метод!")]
         * private static void AddDocDefAttributes(SqlQuery query, SqlQuerySource source, DocDef docDef)
         * {
         *  foreach (var attrDef in docDef.Attributes)
         *  {
         *      if (attrDef.Type.Id == (short) CissaDataType.Doc || attrDef.Type.Id == (short)CissaDataType.DocList)
         *      {
         * //                    var slave = query.JoinSource(source, attrDef.DocDefType.Id, SqlSourceJoinType.Inner, attrDef.Id);
         *
         *          query.AddAttribute(source, attrDef.Id);
         *      }
         *      else
         *      {
         *          query.AddAttribute(source, attrDef.Id);
         *      }
         *  }
         * }*/

        public static SqlQuery Build(BizForm form, Guid?docStateId, BizForm filter, IEnumerable <AttributeSort> sortAttrs, Guid userId, IDataContext dataContext)
        {
            var factory = AppServiceProviderFactoryProvider.GetFactory();

            using (var provider = factory.Create(dataContext))
            {
                var sqb = new SqlQueryBuilderTool(provider, dataContext, userId);
                return(sqb.Build(form, docStateId, filter, sortAttrs));
            }

            /*var query = new SqlQuery(dataContext, form.DocumentDefId ?? Guid.Empty, userId);
             * try
             * {
             *  query.AddAttribute("&Id");
             *  if (docStateId != null)
             *      query.AddCondition(ExpressionOperation.And, query.Source.GetDocDef(), "&State",
             *                         ConditionOperation.Equal,
             *                         (Guid) docStateId);
             *  AddFormAttributes(query, query.Source, form);
             *  if (filter != null)
             *      AddFormConditions(query, query.Source, filter);
             *
             *  if (sortAttrs != null)
             *      foreach (var attr in sortAttrs)
             *          query.AddOrderAttribute(attr.AttributeId, attr.Asc);
             *  else
             *      AddFormSortOrders(query, query.Source, form);
             *
             *  return query;
             * }
             * catch
             * {
             *  query.Dispose();
             *  throw;
             * }*/
        }