Beispiel #1
0
 private void LogInClick(object sender)
 {
     // if fields valid
     if (FieldsValid())
     {
         CustomerFinder lookupWin = new CustomerFinder(ref Employees, ref User); // pass users
         lookupWin.ShowDialog();
     }
 }
        public void QueryAndTheResultHasNotDistinct()
        {
            using (ISession s = OpenSession())
            {
                CustomerFinder finder = new CustomerFinder();
                finder.AccountMoney = MoneyType.Dollar;

                IList <Customer> list = finder.Find(s);
                Assert.AreEqual(4, list.Count);
            }
        }
        // Executes the expression tree that is passed to it.
        internal static object Execute(Expression expression, bool IsEnumerable, VismaNetAuthorization auth)
        {
            // The expression must represent a query over the data source.
            if (!IsQueryOverDataSource(expression))
            {
                throw new InvalidProgramException("No query over the data source was specified.");
            }

            // Find the call to Where() and get the lambda expression predicate.
            InnermostWhereFinder whereFinder     = new InnermostWhereFinder();
            MethodCallExpression whereExpression = whereFinder.GetInnermostWhere(expression);

            var orderBy      = GetOrderByExpression(expression);
            var numberToRead = GetTakeExpression(expression);

            LambdaExpression       lambdaExpression;
            IEnumerable <Customer> customers;

            if (whereExpression != null && whereExpression.Arguments.Count > 1)
            {
                lambdaExpression = (LambdaExpression)((UnaryExpression)(whereExpression.Arguments[1])).Operand;

                // Send the lambda expression through the partial evaluator.
                lambdaExpression = (LambdaExpression)Evaluator.PartialEval(lambdaExpression);

                // Get the place name(s) to query the Web service with.
                var cf = new CustomerFinder(lambdaExpression.Body);
                if (whereExpression.Method.Name.StartsWith("First"))
                {
                    numberToRead = 1;
                }
                // Call the Web service and get the results.
                customers = VismaNetApiHelper.FindCustomers(cf.UrlParams, auth, orderBy: orderBy, numberToRead: numberToRead);
            }
            else
            {
                customers = VismaNetApiHelper.FindCustomers(null, auth, orderBy: orderBy, numberToRead: numberToRead); // Return all customers
            }

            // Copy the IEnumerable places to an IQueryable.
            IQueryable <Customer> queryableCustomers = customers.AsQueryable <Customer>();

            // Copy the expression tree that was passed in, changing only the first
            // argument of the innermost MethodCallExpression.
            var        treeCopier        = new ExpressionTreeModifier <Customer>(queryableCustomers);
            Expression newExpressionTree = treeCopier.Visit(expression);

            //   // This step creates an IQueryable that executes by replacing Queryable methods with Enumerable methods.
            // if (IsEnumerable)
            return(queryableCustomers.Provider.CreateQuery(newExpressionTree));
            // else
            //   return queryableCustomers.Provider.Execute(newExpressionTree);
        }
        public void FirstName()
        {
            using (ISession s = OpenSession())
            {
                CustomerFinder finder = new CustomerFinder();

                finder.FirstName    = "Jo";
                finder.AccountMoney = MoneyType.Euro;

                IList <Customer> list = finder.Find(s);

                Assert.AreEqual(2, list.Count);
            }
        }
        public void QueryUsingAccountInfo()
        {
            using (ISession s = OpenSession())
            {
                CustomerFinder finder = new CustomerFinder();
                finder.AccountActive  = true;
                finder.AccountSizeMin = 10000d;

                log.Debug("--- Run the query with IsActive and Size are taken into account ---");
                IList <Customer> list = finder.Find(s);
                Assert.AreEqual(2, list.Count);

                log.Debug("--- Run the query with IsActive, Size and Opened are taken into account ---");
                finder.AccountOpenedStart = DateTime.Parse("1/1/1983");
                finder.AccountOpenedEnd   = DateTime.Parse("1/1/1984");

                IList <Customer> list2 = finder.Find(s);
                Assert.AreEqual(1, list2.Count);
            }
        }