public void CanCreateLoan()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            Assert.NotNull(loan);

            Assert.Empty(loanDao.LoanList);

            Assert.Equal(book, loan.Book);
            Assert.Equal(member, loan.Borrower);

            Assert.Equal(0, loan.ID);
        }
        public void CanCreateMember()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            Assert.NotNull(member);

            Assert.NotEmpty(dao.MemberList);
            Assert.Equal(1, dao.MemberList.Count);

            Assert.Equal(member, dao.MemberList[0]);

            Assert.Equal(firstName, member.FirstName);
            Assert.Equal(lastName, member.LastName);
            Assert.Equal(contactPhone, member.ContactPhone);
            Assert.Equal(emailAddress, member.EmailAddress);

            Assert.NotEqual(0, member.ID);
        }
        public MockDataProviderModule()
        {
            _memberHelper = new MemberHelper();
            _memberDAO = new MemberDAO(_memberHelper);
            _loanHelper = new LoanHelper();
            _loanDAO = new LoanDAO(_loanHelper);
            _bookHelper = new BookHelper();
            _bookDao = new BookDAO(_bookHelper);

            // Setup dates for test data
            _borrowDate = DateTime.Now;
            _loanPeriod = new TimeSpan(LoanConstants.LOAN_PERIOD, 0, 0, 0);
            _dueDate = _borrowDate.Add(_loanPeriod);
          
            SetupBookTestData();
            SetupMemberTestData();
            SetUpLoanTestData();
            SetUpTestData();
        }
        public void CanGetMemberById()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            for (int i = 0; i < 10; i++)
            {
                dao.AddMember("Test", "Test", "test phone", "test email");
            }

            var result = dao.GetMemberByID(member.ID);

            Assert.Equal(member, result);
        }
        public void CanGetLoanByBookTitle()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var result = loanDao.FindLoansByBookTitle(book.Title);

            var single = result.Single();

            Assert.Equal(loan, single);
        }
        public void CanGetMemberByEmailAddress()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            for (int i = 0; i < 10; i++)
            {
                dao.AddMember("Test", "Test", "test phone", "test email");
            }

            var result = dao.FindMembersByEmailAddress(member.EmailAddress);

            var singleResult = result.Single(); // Test there should only be one result and get it.

            Assert.Equal(member, singleResult);
        }
Esempio n. 7
0
        public Expression BuildExpression(IBuildContext context, Expression expression)
        {
            var newExpr = expression.Transform(expr =>
            {
                if (_skippedExpressions.Contains(expr))
                {
                    return(new TransformInfo(expr, true));
                }

                if (expr.Find(IsNoneSqlMember) != null)
                {
                    return(new TransformInfo(expr));
                }

                switch (expr.NodeType)
                {
                case ExpressionType.MemberAccess:
                    {
                        if (IsServerSideOnly(expr) || PreferServerSide(expr))
                        {
                            return(new TransformInfo(BuildSql(context, expr)));
                        }

                        var ma = (MemberExpression)expr;

                        if (Expressions.ConvertMember(MappingSchema, ma.Member) != null)
                        {
                            break;
                        }

                        if (ma.Member.IsNullableValueMember())
                        {
                            break;
                        }

                        if (ma.Member.IsNullableHasValueMember())
                        {
                            Expression e = Expression.NotEqual(
                                ma.Expression, Expression.Constant(null, ma.Expression.Type));

                            return(new TransformInfo(
                                       BuildExpression(
                                           context,
                                           ma.Expression.Type.IsPrimitiveEx() ?
                                           Expression.Call(
                                               MemberHelper.MethodOf(() => Sql.AsSql(true)),
                                               e) :
                                           e),
                                       true));
                        }

                        var ctx = GetContext(context, expr);

                        if (ctx != null)
                        {
                            return(new TransformInfo(ctx.BuildExpression(expr, 0)));
                        }

                        var ex = ma.Expression;

                        if (ex != null && ex.NodeType == ExpressionType.Constant)
                        {
                            // field = localVariable
                            //
                            var c = _expressionAccessors[ex];
                            return(new TransformInfo(Expression.MakeMemberAccess(Expression.Convert(c, ex.Type), ma.Member)));
                        }

                        break;
                    }

                case ExpressionType.Parameter:
                    {
                        if (expr == ParametersParam)
                        {
                            break;
                        }

                        var ctx = GetContext(context, expr);

                        if (ctx != null)
                        {
                            return(new TransformInfo(ctx.BuildExpression(expr, 0)));
                        }

                        break;
                    }

                case ExpressionType.Constant:
                    {
                        if (expr.Type.IsConstantable())
                        {
                            break;
                        }

                        if (_expressionAccessors.ContainsKey(expr))
                        {
                            return(new TransformInfo(Expression.Convert(_expressionAccessors[expr], expr.Type)));
                        }

                        break;
                    }

                case ExpressionType.Coalesce:

                    if (expr.Type == typeof(string) && MappingSchema.GetDefaultValue(typeof(string)) != null)
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }

                    if (CanBeTranslatedToSql(context, ConvertExpression(expr), true))
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }

                    break;

                case ExpressionType.Conditional:

                    if (CanBeTranslatedToSql(context, ConvertExpression(expr), true))
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }
                    break;

                case ExpressionType.Call:
                    {
                        var ce = (MethodCallExpression)expr;

                        if (IsGroupJoinSource(context, ce))
                        {
                            foreach (var arg in ce.Arguments.Skip(1))
                            {
                                if (!_skippedExpressions.Contains(arg))
                                {
                                    _skippedExpressions.Add(arg);
                                }
                            }

                            if (IsSubQuery(context, ce))
                            {
                                if (ce.IsQueryable())
                                //if (!typeof(IEnumerable).IsSameOrParentOf(expr.Type) || expr.Type == typeof(string) || expr.Type.IsArray)
                                {
                                    var ctx = GetContext(context, expr);

                                    if (ctx != null)
                                    {
                                        return(new TransformInfo(ctx.BuildExpression(expr, 0)));
                                    }
                                }
                            }

                            break;
                        }

                        if (IsSubQuery(context, ce))
                        {
                            if (typeof(IEnumerable).IsSameOrParentOf(expr.Type) && expr.Type != typeof(string) && !expr.Type.IsArray)
                            {
                                return(new TransformInfo(BuildMultipleQuery(context, expr)));
                            }

                            return(new TransformInfo(GetSubQuery(context, ce).BuildExpression(null, 0)));
                        }

                        if (IsServerSideOnly(expr) || PreferServerSide(expr))
                        {
                            return(new TransformInfo(BuildSql(context, expr)));
                        }
                    }

                    break;
                }

                if (EnforceServerSide(context))
                {
                    switch (expr.NodeType)
                    {
                    case ExpressionType.MemberInit:
                    case ExpressionType.New:
                    case ExpressionType.Convert:
                        break;

                    default:
                        if (CanBeCompiled(expr))
                        {
                            break;
                        }
                        return(new TransformInfo(BuildSql(context, expr)));
                    }
                }

                return(new TransformInfo(expr));
            });

            return(newExpr);
        }
        static Expression GetMultipleQueryExpression(IBuildContext context, MappingSchema mappingSchema, Expression expression, HashSet <ParameterExpression> parameters)
        {
            if (!Common.Configuration.Linq.AllowMultipleQuery)
            {
                throw new LinqException("Multiple queries are not allowed. Set the 'LinqToDB.Common.Configuration.Linq.AllowMultipleQuery' flag to 'true' to allow multiple queries.");
            }

            expression.Visit(e =>
            {
                if (e.NodeType == ExpressionType.Lambda)
                {
                    foreach (var p in ((LambdaExpression)e).Parameters)
                    {
                        parameters.Add(p);
                    }
                }
            });

            // Convert associations.
            //
            return(expression.Transform(e =>
            {
                switch (e.NodeType)
                {
                case ExpressionType.MemberAccess :
                    {
                        var root = e.GetRootObject(mappingSchema);

                        if (root != null &&
                            root.NodeType == ExpressionType.Parameter &&
                            !parameters.Contains((ParameterExpression)root))
                        {
                            var res = context.IsExpression(e, 0, RequestFor.Association);

                            if (res.Result)
                            {
                                var table = (TableBuilder.AssociatedTableContext)res.Context;

                                if (table.IsList)
                                {
                                    var me = (MemberExpression)e;
                                    Expression expr;

                                    var parentType = me.Expression.Type;
                                    var childType = table.ObjectType;

                                    var queryMethod = table.Association.GetQueryMethod(parentType, childType);
                                    if (queryMethod != null)
                                    {
                                        //TODO: MARS
                                        var dcConst = Expression.Constant(context.Builder.DataContext.Clone(true));

                                        expr = queryMethod.GetBody(me.Expression, dcConst);
                                    }
                                    else
                                    {
                                        var ttype = typeof(Table <>).MakeGenericType(childType);
                                        var tbl = Activator.CreateInstance(ttype, context.Builder.DataContext);
                                        var method = e == expression ?
                                                     MemberHelper.MethodOf <IEnumerable <bool> >(n => n.Where(a => a)).GetGenericMethodDefinition().MakeGenericMethod(childType) :
                                                     _whereMethodInfo.MakeGenericMethod(e.Type, childType, ttype);

                                        var op = Expression.Parameter(childType, "t");

                                        parameters.Add(op);

                                        Expression ex = null;

                                        for (var i = 0; i < table.Association.ThisKey.Length; i++)
                                        {
                                            var field1 = table.ParentAssociation.SqlTable.Fields[table.Association.ThisKey [i]];
                                            var field2 = table.SqlTable.Fields[table.Association.OtherKey[i]];

                                            var ma1 = Expression.MakeMemberAccess(op, field2.ColumnDescriptor.MemberInfo);
                                            var ma2 = Expression.MakeMemberAccess(me.Expression, field1.ColumnDescriptor.MemberInfo);

                                            var ee = Equal(mappingSchema, ma1, ma2);

                                            ex = ex == null ? ee : Expression.AndAlso(ex, ee);
                                        }

                                        var predicate = table.Association.GetPredicate(parentType, childType);
                                        if (predicate != null)
                                        {
                                            var body = predicate.GetBody(me.Expression, op);
                                            ex = ex == null ? body : Expression.AndAlso(ex, body);
                                        }

                                        if (ex == null)
                                        {
                                            throw new LinqToDBException($"Invalid association configuration for {table.Association.MemberInfo.DeclaringType}.{table.Association.MemberInfo.Name}");
                                        }

                                        expr = Expression.Call(null, method, Expression.Constant(tbl), Expression.Lambda(ex, op));
                                    }

                                    if (e == expression)
                                    {
                                        expr = Expression.Call(
                                            MemberHelper.MethodOf <IEnumerable <int> >(n => n.ToList()).GetGenericMethodDefinition().MakeGenericMethod(childType),
                                            expr);
                                    }

                                    return expr;
                                }
                            }
                        }

                        break;
                    }
                }

                return e;
            }));
        }
 static MappingHelper()
 {
     _deserializeMethod   = MemberHelper.MethodOf(() => JsonConvert.DeserializeObject(null, typeof(int)));
     _serializeMethod     = MemberHelper.MethodOf(() => JsonConvert.SerializeObject(null));
     _dataParamContructor = typeof(DataParameter).GetConstructor(new[] { typeof(string), typeof(object) });
 }
Esempio n. 10
0
 public static string FullName(this IMethodDefinition method)
 {
     return(MemberHelper.GetMethodSignature(method, NameFormattingOptions.Signature | NameFormattingOptions.ParameterName));
 }
Esempio n. 11
0
        public int rangeId = 1;//范围id 1:pc端,0:微信端,


        protected override void AttachChildControls()
        {
            int.TryParse(this.Page.Request.QueryString["categoryId"], out this.categoryId);
            this.keyWord            = this.Page.Request.QueryString["keyWord"];
            this.imglogo            = (HiImage)this.FindControl("imglogo");
            this.litTitle           = (Literal)this.FindControl("litTitle");
            this.litDes             = (Literal)this.FindControl("litDes");
            this.litMemberGradeInfo = (Literal)this.FindControl("litMemberGradeInfo");
            this.imgUrl             = (HiImage)this.FindControl("imgUrl");
            this.litContent         = (Literal)this.FindControl("litContent");
            this.rptProducts        = (VshopTemplatedRepeater)this.FindControl("rptProducts");
            this.rptCategories      = (VshopTemplatedRepeater)this.FindControl("rptCategories");
            this.litCategoryId      = (System.Web.UI.HtmlControls.HtmlInputHidden) this.FindControl("litCategoryId");
            this.litCategoryId.SetWhenIsNotNull(this.categoryId.ToString());
            this.Page.Session["stylestatus"] = "4";

            this.storeId = !string.IsNullOrEmpty(this.Page.Request.QueryString["storeid"]) ? int.Parse(this.Page.Request.QueryString["storeid"]) : 0;

            MemberInfo currentMember = MemberProcessor.GetCurrentMember();

            if (currentMember == null)
            {
                this.Page.Response.Redirect("UserLogin.aspx");
            }
            HttpCookie cookie         = HttpContext.Current.Request.Cookies["Vshop-ReferralId"];
            int        ReferralUserId = 0;

            if ((cookie != null) && !string.IsNullOrEmpty(cookie.Value))
            {
                ReferralUserId = Convert.ToInt32(cookie.Value);
            }

            Hidistro.Entities.Members.DistributorsInfo userIdDistributors = DistributorsBrower.GetUserIdDistributors(ReferralUserId);
            Hidistro.Core.Entities.SiteSettings        masterSettings     = Hidistro.Core.SettingsManager.GetMasterSettings(false);
            //店铺logo
            if (userIdDistributors != null && !string.IsNullOrEmpty(userIdDistributors.Logo))
            {
                this.imglogo.ImageUrl = userIdDistributors.Logo;
            }
            else
            {
                if (!string.IsNullOrEmpty(masterSettings.DistributorLogoPic))
                {
                    this.imglogo.ImageUrl = masterSettings.DistributorLogoPic.Split(new char[] { '|' })[0];
                }
            }
            //店铺名和店铺描述
            if (ReferralUserId == 0)//如果没有上级店铺
            {
                this.litTitle.Text = masterSettings.SiteName;
                this.litDes.Text   = masterSettings.ShopIntroduction;
            }
            else
            {
                this.litTitle.Text = userIdDistributors.StoreName;
                this.litDes.Text   = userIdDistributors.StoreDescription;
            }

            //会员等级优惠信息
            if (this.litMemberGradeInfo != null)
            {
                MemberGradeInfo gradeInfo = MemberHelper.GetMemberGrade(currentMember.GradeId);//会员等级信息
                string          gradeName = gradeInfo.Name;
                string          currentMemberGradeName = (currentMember == null) ? "" :
                                                         string.Format("<span style='font-size:12px; background:#F90; color:#FFF; border-radius:3px; padding:3px 5px; margin-right:5px;'>{0}</span>"
                                                                       , gradeName);
                if (gradeInfo.Discount < 100)
                {
                    litMemberGradeInfo.Text = string.Format("{0}以下商品已获得{1}%折扣!", currentMemberGradeName, 100 - gradeInfo.Discount);
                }
                else
                {
                    litMemberGradeInfo.Text = string.Format("{0}以下商品均无打折", currentMemberGradeName, 100 - gradeInfo.Discount);;
                }
            }
            switch (Hidistro.Core.SettingsManager.GetMasterSettings(true).VTheme.ToLower())
            {
            case "common":
            case "hotel":
                Hidistro.Core.HiCache.Remove("DataCache-CategoriesRange");    //清除分类缓存
                //获取手机端所有商品的分类
                DataTable dt = CategoryBrowser.GetCategoriesByRange(rangeId); //CategoryBrowser.GetCategoriesRange(ProductInfo.ProductRanage.NormalSelect);

                int       total = 0;
                DataTable dt2   = new DataTable();
                if (categoryId == 0)
                {
                    if (dt.Rows.Count > 0)
                    {
                        //获取手机端商品的第一个分类id
                        int FirstCategoryID = Convert.ToInt32(dt.Rows[0]["categoryId"]);
                        this.litCategoryId.SetWhenIsNotNull(FirstCategoryID.ToString());

                        dt2 = ProductBrowser.GetProducts(MemberProcessor.GetCurrentMember(), null, 0, FirstCategoryID, this.keyWord, 1, 20, out total, "ShowSaleCounts", "desc", "", rangeId, storeId);
                    }
                }
                else
                {
                    dt2 = ProductBrowser.GetProducts(MemberProcessor.GetCurrentMember(), null, 0, categoryId, this.keyWord, 1, 20, out total, "ShowSaleCounts", "desc", "", rangeId, storeId);
                }
                //根据商品id判断是否包含其余规格,如果有,则新增一个字段存入规格号
                dt2.Columns.Add("skuCounts");
                dt2.Columns.Add("Quantity");
                List <Hidistro.Entities.Sales.ShoppingCartInfo> cart = ShoppingCartProcessor.GetShoppingCartList();   //获取购物车信息
                foreach (DataRow row in dt2.Rows)
                {
                    DataTable skus = ProductBrowser.GetSkus(Convert.ToInt32(row["ProductId"]));
                    row["skuCounts"] = skus.Rows.Count;
                    row["Quantity"]  = 0;
                    //根据商品id获取购物车中已存在的数量,防止页面刷新后选中的数量遗失
                    foreach (Hidistro.Entities.Sales.ShoppingCartInfo info in cart)
                    {
                        foreach (Hidistro.Entities.Sales.ShoppingCartItemInfo itemInfo in info.LineItems)
                        {
                            if (Convert.ToInt32(row["ProductId"]) == itemInfo.ProductId)
                            {
                                row["Quantity"] = itemInfo.Quantity;
                            }
                        }
                    }
                }
                this.rptCategories.DataSource = dt;
                this.rptCategories.DataBind();

                this.rptProducts.DataSource = dt2;
                this.rptProducts.DataBind();
                break;

            default:
                this.rptCategories.ItemDataBound += new RepeaterItemEventHandler(this.rptCategories_ItemDataBound);
                if (this.Page.Request.QueryString["TypeId"] != null)
                {
                    this.rptCategories.DataSource = CategoryBrowser.GetCategoriesByPruductType(100, Convert.ToInt32(this.Page.Request.QueryString["TypeId"]));
                    this.rptCategories.DataBind();
                }
                else
                {
                    IList <CategoryInfo> maxSubCategories = CategoryBrowser.GetMaxSubCategoriesRange(this.categoryId, 0x3e8, DistributorsBrower.GetCurrStoreProductRange());
                    this.rptCategories.DataSource = maxSubCategories;
                    this.rptCategories.DataBind();
                }
                PageTitle.AddSiteNameTitle("移动点餐");
                break;
            }
        }
        public void CanGetOverdueLoans()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.Equal(LoanState.CURRENT, loan.State);

            loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1));

            Assert.Equal(LoanState.OVERDUE, loan.State);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var overdue = loanDao.FindOverDueLoans();

            Assert.Equal(1, overdue.Count);
            Assert.Equal(loan, overdue[0]);
        }
        public void GetMemberByNamesReturnsEmptyCollectionIfNotFound()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            for (int i = 0; i < 10; i++)
            {
                dao.AddMember("Test", "Test", "test phone", "test email");
            }

            var result = dao.FindMembersByNames("Jim", "Tulip");

            Assert.Empty(result);
        }
        public void CanUpdateOverdueStatus()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.Equal(LoanState.CURRENT, loan.State);

            loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1));

            Assert.Equal(LoanState.OVERDUE, loan.State);
        }
        public void GetMemberByIdReturnsNullIfNotFound()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            for (int i = 0; i < 10; i++)
            {
                dao.AddMember("Test", "Test", "test phone", "test email");
            }

            var result = dao.GetMemberByID(1000);

            Assert.Null(result);
        }
        public void CreateMemberFailsOnIllegalArguments()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            Assert.Throws<ArgumentException>(
                () => { var member = dao.AddMember(null, lastName, contactPhone, emailAddress); });

            Assert.Throws<ArgumentException>(
                () => { var member = dao.AddMember(firstName, null, contactPhone, emailAddress); });

            Assert.Throws<ArgumentException>(
                () => { var member = dao.AddMember(firstName, lastName, null, emailAddress); });

            Assert.Throws<ArgumentException>(
                () => { var member = dao.AddMember(firstName, lastName, contactPhone, null); });
        }
        public void CreateMemberCreatesAUniqueId()
        {
            IMemberHelper helper = new MemberHelper();
            IMemberDAO dao = new MemberDao(helper);

            var firstName = "first";
            var lastName = "last";
            var contactPhone = "contactPhone";
            var emailAddress = "emailAddress";

            var member = dao.AddMember(firstName, lastName, contactPhone, emailAddress);

            Assert.NotEqual(0, member.ID);
        }
Esempio n. 18
0
 public MemberDAOTests()
 {
     var memberHelper = new MemberHelper();
     Dao = new MemberDAO(memberHelper);
 }
Esempio n. 19
0
        public override void RecreateControls(bool constructor)
        {
            base.RecreateControls(constructor);

            m_scale = 0.65f;

            AddCaption("Render sector FX", Color.Yellow.ToVector4());
            AddShareFocusHint();

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f * m_scale;
            AddCheckBox("Enable dust", MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.Enabled));

            m_currentPosition.Y += 0.01f * m_scale;
            AddLabel("Nebula", Color.Yellow.ToVector4(), 1.2f);

            VRageRender.MyImpostorProperties nebulaObj = new VRageRender.MyImpostorProperties();
            bool found = false;

            foreach (VRageRender.MyImpostorProperties nebulaObjIt in MySector.ImpostorProperties)
            {
                if (nebulaObjIt.ImpostorType == VRageRender.MyImpostorType.Nebula)
                {
                    nebulaObj = nebulaObjIt;
                    found     = true;
                    break;
                }
            }

            if (found)
            {
                AddCheckBox("Enable", nebulaObj, MemberHelper.GetMember(() => nebulaObj.Enabled));
                AddColor(new StringBuilder("Color"), nebulaObj, MemberHelper.GetMember(() => nebulaObj.Color));
                AddSlider("Contrast", 0, 20, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Contrast));
                AddSlider("Intensity", 0, 20, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Intensity));
                AddSlider("Radius", 0, 10, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Radius));
                AddSlider("Anim1", -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim1));
                AddSlider("Anim2", -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim2));
                AddSlider("Anim3", -0.1f, 0.1f, nebulaObj, MemberHelper.GetMember(() => nebulaObj.Anim3));
            }


            m_currentPosition.Y += 0.01f * m_scale;
            AddLabel("God rays", Color.Yellow.ToVector4(), 1.2f);

            AddCheckBox("Enable", MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Enabled));
            AddSlider("Density", 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Density));
            AddSlider("Weight", 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Weight));
            AddSlider("Decay", 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Decay));
            AddSlider("Exposition", 0, 2, MySector.GodRaysProperties, MemberHelper.GetMember(() => MySector.GodRaysProperties.Exposition));

            m_currentPosition.Y += 0.01f * m_scale;
            AddLabel("Particle dust", Color.Yellow.ToVector4(), 1.2f);

            AddSlider("Dust radius", 0.01f, 200, MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.DustBillboardRadius));
            AddSlider("Dust count in dir half", 0.01f, 20, MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.DustFieldCountInDirectionHalf));
            AddSlider("Distance between", 1f, 500, MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.DistanceBetween));
            AddSlider("Anim speed", 0.0f, 0.1f, MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.AnimSpeed));
            AddColor(new StringBuilder("Color"), MySector.ParticleDustProperties, MemberHelper.GetMember(() => MySector.ParticleDustProperties.Color));

            m_currentPosition.Y += 0.01f * m_scale;
            var env = MySector.EnvironmentDefinition;

            if (false)
            {
                AddSlider("Bg. Yaw", env.BackgroundOrientation.Yaw, 0f, MathHelper.TwoPi, (s) => { env.BackgroundOrientation.Yaw = s.Value; });
                AddSlider("Bg. Pitch", env.BackgroundOrientation.Pitch, 0f, MathHelper.TwoPi, (s) => { env.BackgroundOrientation.Pitch = s.Value; });
                AddSlider("Bg. Roll", env.BackgroundOrientation.Roll, 0f, MathHelper.TwoPi, (s) => { env.BackgroundOrientation.Roll = s.Value; });
            }

            Vector3.GetAzimuthAndElevation(env != null ? env.SunProperties.SunDirectionNormalized : Vector3.Down, out m_azimuth, out m_elevation);
            AddSlider("Sun Azimuth", m_azimuth, -MathHelper.TwoPi, MathHelper.TwoPi, (s) => { m_azimuth = s.Value; });
            AddSlider("Sun Elevation", m_elevation, -MathHelper.PiOver2, MathHelper.PiOver2, (s) => { m_elevation = s.Value; });
            //AddButton(new StringBuilder("Save environment"), (s) => { MyDefinitionManager.Static.SaveEnvironmentDefinition(); });
        }
        public async Task <ActionResult> AddChildren(AddChildrenModel AddChildrenModel)
        {
            RegistrationCompleteViewModel viewModel = new RegistrationCompleteViewModel();

            viewModel.ChildrenAdded = AddChildrenModel.Children;
            viewModel.Adult         = AddChildrenModel.Adult;

            if (AddChildrenModel.Children == null || AddChildrenModel.Children.Count == 0)
            {
                //family opted to not add any children
                return(View("RegistrationComplete", viewModel));
            }

            //we need to validate the data server side
            if (AddChildrenModel.Children.Any(x => !x.ChildIsValid))
            {
                ModelState.AddModelError("", "Every child family member requires a valid first name, last name, birthdate and gender.");
            }

            if (!ModelState.IsValid)
            {
                AddChildrenViewModel addChildviewModel = new AddChildrenViewModel();
                addChildviewModel.AddChildrenModel.Adult = AddChildrenModel.Adult;
                addChildviewModel.AddChildrenModel       = AddChildrenModel;
                return(View(viewModel));
            }

            Person adult = await ArenaAPIHelper.GetPerson(AddChildrenModel.Adult.PersonId);

            viewModel.Adult = adult;

            //everything looks good, lets add the kids to the family
            foreach (var child in AddChildrenModel.Children)
            {
                Person familyChild = MemberHelper.GetChildPersonFromMember(child, (Campus)adult.CampusId);
                familyChild.Addresses  = adult.Addresses;
                familyChild.FamilyId   = adult.FamilyId;
                familyChild.FamilyName = adult.FamilyName;
                familyChild.Phones     = adult.Phones;
                ArenaPostResult result = await ArenaAPIHelper.AddPerson(familyChild);

                if (!result.WasSuccessful)
                {
                    //stop processing and report error
                    return(View("Error", new HandleErrorInfo(new Exception("API request to add child failed."), "Home", "AddChildren")));
                }

                int newPersonId = result.ObjectId;

                //add to group
                result = await ArenaAPIHelper.AddPersonToGroup(newPersonId, ((Campus)adult.CampusId == Campus.Brownsboro)?(int)VisitorGroups.BrownsboroVisitors : (int)VisitorGroups.CliftonVisitors);

                if (!result.WasSuccessful)
                {
                    //stop processing and report error
                    return(View("Error", new HandleErrorInfo(new Exception("API request to add child to group failed."), "Home", "AddChildren")));
                }

                //add grade note
                result = await ArenaAPIHelper.AddPersonNote(newPersonId, child.Grade);

                if (!result.WasSuccessful)
                {
                    //stop processing and report error
                    return(View("Error", new HandleErrorInfo(new Exception("API request to add grade to child failed."), "Home", "AddChildren")));
                }
            }

            return(View("RegistrationComplete", viewModel));
        }
Esempio n. 21
0
        protected void DoCallback()
        {
            base.Response.Clear();
            base.Response.ContentType = "application/json";
            string str = base.Request.QueryString["action"];

            if (str.Equals("getPrepareData"))
            {
                int typeId = int.Parse(base.Request.QueryString["typeId"]);
                IList <AttributeInfo> attributes = ProductTypeHelper.GetAttributes(typeId);
                DataTable             brandCategoriesByTypeId = ProductTypeHelper.GetBrandCategoriesByTypeId(typeId);
                base.Response.Write(this.GenerateJsonString(attributes, brandCategoriesByTypeId));
                attributes.Clear();
            }
            else if (str.Equals("getMemberGradeList"))
            {
                IList <MemberGradeInfo> memberGrades = MemberHelper.GetMemberGrades();
                if ((memberGrades == null) || (memberGrades.Count == 0))
                {
                    base.Response.Write("{\"Status\":\"0\"}");
                }
                else
                {
                    StringBuilder builder = new StringBuilder();
                    builder.Append("{\"Status\":\"OK\",\"MemberGrades\":[");
                    foreach (MemberGradeInfo info in memberGrades)
                    {
                        builder.Append("{");
                        builder.AppendFormat("\"GradeId\":\"{0}\",", info.GradeId);
                        builder.AppendFormat("\"Name\":\"{0}\",", info.Name);
                        builder.AppendFormat("\"Discount\":\"{0}\"", info.Discount);
                        builder.Append("},");
                    }
                    builder.Remove(builder.Length - 1, 1);
                    builder.Append("]}");
                    base.Response.Write(builder.ToString());
                }
            }
            else if (str.Equals("getDistributorGradeList"))
            {
                DataTable distributorGrades = DistributorHelper.GetDistributorGrades();
                if ((distributorGrades == null) || (distributorGrades.Rows.Count == 0))
                {
                    base.Response.Write("{\"Status\":\"0\"}");
                }
                else
                {
                    StringBuilder builder2 = new StringBuilder();
                    builder2.Append("{\"Status\":\"OK\",\"DistributorGrades\":[");
                    foreach (DataRow row in distributorGrades.Rows)
                    {
                        builder2.Append("{");
                        builder2.AppendFormat("\"GradeId\":\"{0}\",", (int)row["GradeId"]);
                        builder2.AppendFormat("\"Name\":\"{0}\",", (string)row["Name"]);
                        builder2.AppendFormat("\"Discount\":\"{0}\"", (int)row["Discount"]);
                        builder2.Append("},");
                    }
                    builder2.Remove(builder2.Length - 1, 1);
                    builder2.Append("]}");
                    base.Response.Write(builder2.ToString());
                }
            }
            base.Response.End();
        }
        public Expression BuildExpression(IBuildContext context, Expression expression)
        {
            var newExpr = expression.Transform(expr =>
            {
                if (_skippedExpressions.Contains(expr))
                {
                    return(new TransformInfo(expr, true));
                }

                if (expr.Find(IsNoneSqlMember) != null)
                {
                    return(new TransformInfo(expr));
                }

                switch (expr.NodeType)
                {
                case ExpressionType.Convert:
                case ExpressionType.ConvertChecked:
                    {
                        if (expr.Type == typeof(object))
                        {
                            break;
                        }

                        var cex = (UnaryExpression)expr;

                        _convertedExpressions.Add(cex.Operand, cex);

                        var nex = BuildExpression(context, cex.Operand);

                        if (nex.Type != cex.Type)
                        {
                            nex = cex.Update(nex);
                        }

                        var ret = new TransformInfo(nex, true);

                        _convertedExpressions.Remove(cex.Operand);

                        return(ret);
                    }

                case ExpressionType.MemberAccess:
                    {
                        if (IsServerSideOnly(expr) || PreferServerSide(expr))
                        {
                            return(new TransformInfo(BuildSql(context, expr)));
                        }

                        var ma = (MemberExpression)expr;

                        if (Expressions.ConvertMember(MappingSchema, ma.Expression == null ? null : ma.Expression.Type, ma.Member) != null)
                        {
                            break;
                        }

                        if (ma.Member.IsNullableValueMember())
                        {
                            break;
                        }

                        if (ma.Member.IsNullableHasValueMember())
                        {
                            Expression e = Expression.NotEqual(
                                ma.Expression, Expression.Constant(null, ma.Expression.Type));

                            return(new TransformInfo(
                                       BuildExpression(
                                           context,
                                           ma.Expression.Type.IsPrimitiveEx() ?
                                           Expression.Call(
                                               MemberHelper.MethodOf(() => Sql.AsSql(true)),
                                               e) :
                                           e),
                                       true));
                        }

                        var ctx = GetContext(context, ma);

                        if (ctx != null)
                        {
                            if (ma.Type.IsGenericTypeEx() && typeof(IEnumerable <>).IsSameOrParentOf(ma.Type))
                            {
                                var res = ctx.IsExpression(ma, 0, RequestFor.Association);

                                if (res.Result)
                                {
                                    var table = (TableBuilder.AssociatedTableContext)res.Context;
                                    if (table.IsList)
                                    {
                                        var mexpr = GetMultipleQueryExpression(context, ma, new HashSet <ParameterExpression>());
                                        return(new TransformInfo(BuildExpression(context, mexpr)));
                                    }
                                }
                            }

                            return(new TransformInfo(ctx.BuildExpression(ma, 0)));
                        }

                        var ex = ma.Expression;

                        while (ex is MemberExpression)
                        {
                            ex = ((MemberExpression)ex).Expression;
                        }

                        if (ex is MethodCallExpression)
                        {
                            var ce = (MethodCallExpression)ex;

                            if (IsSubQuery(context, ce))
                            {
                                if (!IsMultipleQuery(ce))
                                {
                                    var info = GetSubQueryContext(context, ce);
                                    var par  = Expression.Parameter(ex.Type);
                                    var bex  = info.Context.BuildExpression(ma.Transform(e => e == ex ? par : e), 0);

                                    if (bex != null)
                                    {
                                        return(new TransformInfo(bex));
                                    }
                                }
                            }
                        }

                        ex = ma.Expression;

                        if (ex != null && ex.NodeType == ExpressionType.Constant)
                        {
                            // field = localVariable
                            //
                            var c = _expressionAccessors[ex];
                            return(new TransformInfo(Expression.MakeMemberAccess(Expression.Convert(c, ex.Type), ma.Member)));
                        }

                        break;
                    }

                case ExpressionType.Parameter:
                    {
                        if (expr == ParametersParam)
                        {
                            break;
                        }

                        var ctx = GetContext(context, expr);

                        if (ctx != null)
                        {
                            return(new TransformInfo(ctx.BuildExpression(expr, 0)));
                        }

                        break;
                    }

                case ExpressionType.Constant:
                    {
                        if (expr.Type.IsConstantable())
                        {
                            break;
                        }

                        if (_expressionAccessors.ContainsKey(expr))
                        {
                            return(new TransformInfo(Expression.Convert(_expressionAccessors[expr], expr.Type)));
                        }

                        break;
                    }

                case ExpressionType.Coalesce:

                    if (expr.Type == typeof(string) && MappingSchema.GetDefaultValue(typeof(string)) != null)
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }

                    if (CanBeTranslatedToSql(context, ConvertExpression(expr), true))
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }

                    break;

                case ExpressionType.Conditional:

                    if (CanBeTranslatedToSql(context, ConvertExpression(expr), true))
                    {
                        return(new TransformInfo(BuildSql(context, expr)));
                    }
                    break;

                case ExpressionType.Call:
                    {
                        var ce = (MethodCallExpression)expr;

                        if (IsGroupJoinSource(context, ce))
                        {
                            foreach (var arg in ce.Arguments.Skip(1))
                            {
                                if (!_skippedExpressions.Contains(arg))
                                {
                                    _skippedExpressions.Add(arg);
                                }
                            }

                            if (IsSubQuery(context, ce))
                            {
                                if (ce.IsQueryable())
                                //if (!typeof(IEnumerable).IsSameOrParentOf(expr.Type) || expr.Type == typeof(string) || expr.Type.IsArray)
                                {
                                    var ctx = GetContext(context, expr);

                                    if (ctx != null)
                                    {
                                        return(new TransformInfo(ctx.BuildExpression(expr, 0)));
                                    }
                                }
                            }

                            break;
                        }

                        if ((_buildMultipleQueryExpressions == null || !_buildMultipleQueryExpressions.Contains(ce)) && IsSubQuery(context, ce))
                        {
                            if (IsMultipleQuery(ce))
                            {
                                return(new TransformInfo(BuildMultipleQuery(context, ce)));
                            }

                            return(new TransformInfo(GetSubQueryExpression(context, ce)));
                        }

                        if (IsServerSideOnly(expr) || PreferServerSide(expr))
                        {
                            return(new TransformInfo(BuildSql(context, expr)));
                        }
                    }

                    break;
                }

                if (EnforceServerSide(context))
                {
                    switch (expr.NodeType)
                    {
                    case ExpressionType.MemberInit:
                    case ExpressionType.New:
                    case ExpressionType.Convert:
                        break;

                    default:
                        if (CanBeCompiled(expr))
                        {
                            break;
                        }
                        return(new TransformInfo(BuildSql(context, expr)));
                    }
                }

                return(new TransformInfo(expr));
            });

            return(newExpr);
        }
Esempio n. 23
0
        private void btnCreateReport_Click(object sender, System.EventArgs e)
        {
            ManagerHelper.CheckPrivilege(Privilege.ReconciOrdersDetailsExcel);
            string startDate = this.calendarStart.SelectedDate.ToString();
            string EndSdate  = this.calendarEnd.SelectedDate.ToString();

            if (string.IsNullOrEmpty(startDate) || string.IsNullOrEmpty(EndSdate))
            {
                this.ShowMsg("起止时间不能为空!", false);
                return;
            }

            System.TimeSpan ND   = Convert.ToDateTime(EndSdate) - Convert.ToDateTime(startDate);
            double          mday = ND.Days;

            if (mday > 31)
            {
                this.ShowMsg("查询起止时间不能大于31天!", false);
                return;
            }
            DbQueryResult balanceDetailsNoPage = MemberHelper.ExportReconciliationOrdersDetailed(new ReconciliationOrdersQuery
            {
                StartDate = this.dateStart,
                EndDate   = this.dateEnd,
                SortBy    = "TradingTime",
                SortOrder = SortAction.Desc,
                Supplier  = this.sysupperId
            });
            DataTable dtResult = (DataTable)balanceDetailsNoPage.Data;

            if (dtResult == null || dtResult.Rows.Count == 0)
            {
                this.ShowMsg("没有数据!", false);
                return;
            }
            MemoryStream ms = NPOIExcelHelper.ExportToExcel(dtResult, "对账单");


            this.Page.Response.Clear();
            this.Page.Response.Buffer  = false;
            this.Page.Response.Charset = "GB2312";
            //this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=ReconciliationOrdersDetailed.xlsx");

            if (!(this.calendarStart.SelectedDate.HasValue && this.calendarEnd.SelectedDate.HasValue))
            {
                this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=对账订单明细报表.xlsx");
            }
            else
            {
                this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=对账订单明细报表_" + this.dateStart.Value.ToString("yyyyMMdd") + "-" + this.dateEnd.Value.ToString("yyyyMMdd") + ".xlsx");
            }
            this.Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            this.Page.Response.ContentType     = "application/octet-stream";
            this.Page.EnableViewState          = false;
            this.Page.Response.BinaryWrite(ms.ToArray());
            ms.Dispose();
            ms.Close();
            EventLogs.WriteOperationLog(Privilege.ReconciOrdersDetailsExcel, string.Format(CultureInfo.InvariantCulture, "用户{0}生成对账订单明细报告成功", new object[]
            {
                this.User.Identity.Name
            }));

            this.Page.Response.End();

            string        text  = string.Empty;
            StringBuilder sbstr = new StringBuilder();

            sbstr.Append("付款日期");
            sbstr.Append(",订单号");
            sbstr.Append(",子订单号");
            sbstr.Append(",实际金额");
            sbstr.Append(",收款金额");
            sbstr.Append(",退款金额");
            sbstr.Append(",买家昵称");
            sbstr.Append(",拍单时间");
            sbstr.Append(",付款时间");
            sbstr.Append(",商品总金额");
            sbstr.Append(",订单金额");
            sbstr.Append(",优惠金额");
            sbstr.Append(",运费");
            sbstr.Append(",优惠券");
            sbstr.Append(",现金劵");
            sbstr.Append(",货到付款服务费");
            sbstr.Append(",扣点");
            sbstr.Append(",成本价");
            sbstr.Append(",订单备注");
            sbstr.Append(",买家留言");
            sbstr.Append(",收货地址");
            sbstr.Append(",收货人名称");
            sbstr.Append(",收货国家");
            sbstr.Append(",州/省");
            sbstr.Append(",城市");
            sbstr.Append(",区");
            sbstr.Append(",邮编");
            sbstr.Append(",联系电话");
            sbstr.Append(",手机");
            sbstr.Append(",买家选择物流");
            sbstr.Append(",最晚发货时间");
            sbstr.Append(",海外订单");
            sbstr.Append(",是否货到付款");
            sbstr.Append(",订单状态");
            sbstr.Append(",发货快递单号");
            sbstr.Append(",退货快递单号");
            sbstr.Append(",商品名称");
            sbstr.Append(",商品条码");
            sbstr.Append(",购买数量");
            sbstr.Append(",退货数量");
            sbstr.Append(",售价");
            sbstr.Append(",销售价格");
            sbstr.Append(",货主Id");
            sbstr.Append(",货主名称");
            sbstr.Append(",发货仓库");
            sbstr.Append(",是否匹配促销模板\r\n");
            foreach (System.Data.DataRow dataRow in ((System.Data.DataTable)balanceDetailsNoPage.Data).Rows)
            {
                sbstr.Append(dataRow["TradingTime"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["OrderId"]);
                sbstr.AppendFormat(",{0}", dataRow["ChildOrderId"]);
                sbstr.AppendFormat(",{0}", dataRow["ActualAmount"]);
                sbstr.AppendFormat(",{0}", dataRow["TotalAmount"]);
                sbstr.AppendFormat(",{0}", dataRow["RefundAmount"]);
                sbstr.AppendFormat(",{0}", dataRow["RealName"]);
                sbstr.AppendFormat(",{0}", dataRow["OrderDate"]);
                sbstr.AppendFormat(",{0}", dataRow["PayDate"]);
                sbstr.AppendFormat(",{0}", dataRow["Amount"]);
                sbstr.AppendFormat(",{0}", dataRow["OrderTotal"]);
                sbstr.AppendFormat(",{0}", dataRow["DiscountAmount"]);
                sbstr.AppendFormat(",{0}", dataRow["AdjustedFreight"]);
                sbstr.AppendFormat(",{0}", dataRow["CouponValue"]);
                sbstr.AppendFormat(",{0}", dataRow["VoucherValue"]);
                sbstr.AppendFormat(",{0}", dataRow["PayCharge"]);
                sbstr.AppendFormat(",{0}", dataRow["DeductFee"]);
                sbstr.AppendFormat(",{0}", dataRow["CostPrice"]);

                sbstr.AppendFormat(",\"{0}\"", dataRow["ManagerRemark"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Remark"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Address"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["ShipTo"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Country"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Province"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["City"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Area"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["ZipCode"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["TelPhone"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["CellPhone"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["ModeName"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["LatestDelivery"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["OverseasOrders"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["CashDelivery"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["OrderStatus"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["ShipOrderNumber"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["ReturnsExpressNumber"]);

                sbstr.AppendFormat(",\"{0}\"", dataRow["ItemDescription"]);
                sbstr.AppendFormat(",\"\t{0}\"", dataRow["SKU"]);
                sbstr.AppendFormat(",{0}", dataRow["Quantity"]);
                sbstr.AppendFormat(",{0}", dataRow["ReturnQuantity"]);
                sbstr.AppendFormat(",{0}", dataRow["ItemListPrice"]);
                sbstr.AppendFormat(",{0}", dataRow["ItemAdjustedPrice"]);
                sbstr.AppendFormat(",{0}", dataRow["SupplierId"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["SupplierName"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["ShipWarehouseName"]);
                sbstr.AppendFormat(",\"{0}\"", dataRow["Template"]);
                sbstr.Append("\r\n");
            }
            this.Page.Response.Clear();
            this.Page.Response.Buffer  = false;
            this.Page.Response.Charset = "GB2312";
            //this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=ReconciliationOrdersDetailed.csv");
            if (!(this.calendarStart.SelectedDate.HasValue && this.calendarEnd.SelectedDate.HasValue))
            {
                this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=对账订单明细报表.csv");
            }
            else
            {
                this.Page.Response.AppendHeader("Content-Disposition", "attachment;filename=对账订单明细报表_" + this.dateStart.Value.ToString("yyyyMMdd") + "-" + this.dateEnd.Value.ToString("yyyyMMdd") + ".csv");
            }

            this.Page.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            this.Page.Response.ContentType     = "application/octet-stream";
            this.Page.EnableViewState          = false;
            this.Page.Response.Write(sbstr.ToString());
            this.Page.Response.End();
        }
Esempio n. 24
0
 private void BindMemberRanks()
 {
     this.rptList.DataSource = MemberHelper.GetMemberGrades();
     this.rptList.DataBind();
 }
Esempio n. 25
0
        public static NpgsqlProviderAdapter GetInstance()
        {
            if (_instance == null)
            {
                lock (_syncRoot)
                    if (_instance == null)
                    {
                        var assembly = Tools.TryLoadAssembly(AssemblyName, null);
                        if (assembly == null)
                        {
                            throw new InvalidOperationException($"Cannot load assembly {AssemblyName}");
                        }

                        var connectionType     = assembly.GetType($"{ClientNamespace}.NpgsqlConnection", true);
                        var parameterType      = assembly.GetType($"{ClientNamespace}.NpgsqlParameter", true);
                        var dataReaderType     = assembly.GetType($"{ClientNamespace}.NpgsqlDataReader", true);
                        var commandType        = assembly.GetType($"{ClientNamespace}.NpgsqlCommand", true);
                        var transactionType    = assembly.GetType($"{ClientNamespace}.NpgsqlTransaction", true);
                        var dbType             = assembly.GetType($"{TypesNamespace}.NpgsqlDbType", true);
                        var npgsqlDateType     = assembly.GetType($"{TypesNamespace}.NpgsqlDate", true);
                        var npgsqlPointType    = assembly.GetType($"{TypesNamespace}.NpgsqlPoint", true);
                        var npgsqlLSegType     = assembly.GetType($"{TypesNamespace}.NpgsqlLSeg", true);
                        var npgsqlBoxType      = assembly.GetType($"{TypesNamespace}.NpgsqlBox", true);
                        var npgsqlCircleType   = assembly.GetType($"{TypesNamespace}.NpgsqlCircle", true);
                        var npgsqlPathType     = assembly.GetType($"{TypesNamespace}.NpgsqlPath", true);
                        var npgsqlPolygonType  = assembly.GetType($"{TypesNamespace}.NpgsqlPolygon", true);
                        var npgsqlLineType     = assembly.GetType($"{TypesNamespace}.NpgsqlLine", true);
                        var npgsqlInetType     = assembly.GetType($"{TypesNamespace}.NpgsqlInet", true);
                        var npgsqlTimeSpanType = assembly.GetType($"{TypesNamespace}.NpgsqlTimeSpan", true);
                        var npgsqlDateTimeType = assembly.GetType($"{TypesNamespace}.NpgsqlDateTime", true);
                        var npgsqlRangeTType   = assembly.GetType($"{TypesNamespace}.NpgsqlRange`1", true);

                        var npgsqlBinaryImporterType = assembly.GetType($"{ClientNamespace}.NpgsqlBinaryImporter", true);

                        var typeMapper = new TypeMapper();
                        typeMapper.RegisterTypeWrapper <NpgsqlConnection>(connectionType);
                        typeMapper.RegisterTypeWrapper <NpgsqlParameter>(parameterType);
                        typeMapper.RegisterTypeWrapper <NpgsqlDbType>(dbType);
                        typeMapper.RegisterTypeWrapper <NpgsqlBinaryImporter>(npgsqlBinaryImporterType);
                        typeMapper.FinalizeMappings();

                        var paramMapper   = typeMapper.Type <NpgsqlParameter>();
                        var dbTypeBuilder = paramMapper.Member(p => p.NpgsqlDbType);

                        var pConnection = Expression.Parameter(typeof(IDbConnection));
                        var pCommand    = Expression.Parameter(typeof(string));

                        var beginBinaryImport = Expression.Lambda <Func <IDbConnection, string, NpgsqlBinaryImporter> >(
                            typeMapper.MapExpression((IDbConnection conn, string command) => typeMapper.Wrap <NpgsqlBinaryImporter>(((NpgsqlConnection)conn).BeginBinaryImport(command)), pConnection, pCommand),
                            pConnection, pCommand)
                                                .Compile();

                        // create mapping schema
                        var mappingSchema = new MappingSchema();

                        // date/time types
                        AddUdtType(npgsqlDateType);
                        AddUdtType(npgsqlDateTimeType);
                        mappingSchema.SetDataType(npgsqlTimeSpanType, DataType.Interval);
                        mappingSchema.SetDataType(npgsqlTimeSpanType.AsNullable(), DataType.Interval);
                        // NpgsqlDateTimeType => DateTimeOffset
                        {
                            var p  = Expression.Parameter(npgsqlDateTimeType, "p");
                            var pi = p.Type.GetProperty("DateTime");

                            Expression expr;

                            if (pi != null)
                            {
                                // < 3.2.0
                                // https://github.com/npgsql/npgsql/commit/3894175f970b611f6428757a932b6393749da958#diff-c792076ac0455dd0f2852822ea38b0aaL166
                                expr = Expression.Property(p, pi);
                            }
                            else
                            {
                                // 3.2.0+
                                expr = Expression.Call(p, "ToDateTime", null);
                            }

                            var npgsqlDateTimeToDateTimeOffsetMapper = Expression.Lambda(
                                Expression.New(
                                    MemberHelper.ConstructorOf(() => new DateTimeOffset(new DateTime())),
                                    expr),
                                p);
                            mappingSchema.SetConvertExpression(npgsqlDateTimeType, typeof(DateTimeOffset), npgsqlDateTimeToDateTimeOffsetMapper);
                        }

                        // inet types
                        AddUdtType(npgsqlInetType);
                        AddUdtType(typeof(IPAddress));
                        AddUdtType(typeof(PhysicalAddress));
                        // npgsql4 obsoletes NpgsqlInetType and returns ValueTuple<IPAddress, int>
                        // still while it is here, we should be able to map it properly
                        // (IPAddress, int) => NpgsqlInet
                        {
                            var valueTypeType = Type.GetType("System.ValueTuple`2", false);
                            if (valueTypeType != null)
                            {
                                var inetTupleType = valueTypeType.MakeGenericType(typeof(IPAddress), typeof(int));
                                var p             = Expression.Parameter(inetTupleType, "p");

                                var tupleToInetTypeMapper = Expression.Lambda(
                                    Expression.New(
                                        npgsqlInetType.GetConstructor(new[] { typeof(IPAddress), typeof(int) }),
                                        ExpressionHelper.Field(p, "Item1"),
                                        ExpressionHelper.Field(p, "Item2")),
                                    p);
                                mappingSchema.SetConvertExpression(inetTupleType !, npgsqlInetType, tupleToInetTypeMapper);
                            }
                        }

                        // ranges
                        AddUdtType(npgsqlRangeTType);
                        {
                            void SetRangeConversion <T>(string?fromDbType = null, DataType fromDataType = DataType.Undefined, string?toDbType = null, DataType toDataType = DataType.Undefined)
                            {
                                var rangeType  = npgsqlRangeTType.MakeGenericType(typeof(T));
                                var fromType   = new DbDataType(rangeType, fromDataType, fromDbType);
                                var toType     = new DbDataType(typeof(DataParameter), toDataType, toDbType);
                                var rangeParam = Expression.Parameter(rangeType, "p");

                                mappingSchema.SetConvertExpression(fromType, toType,
                                                                   Expression.Lambda(
                                                                       Expression.New(
                                                                           MemberHelper.ConstructorOf(
                                                                               () => new DataParameter("", null, DataType.Undefined, toDbType)),
                                                                           Expression.Constant(""),
                                                                           Expression.Convert(rangeParam, typeof(object)),
                                                                           Expression.Constant(toDataType),
                                                                           Expression.Constant(toDbType, typeof(string))
                                                                           )
                                                                       , rangeParam)
                                                                   );
                            }

                            SetRangeConversion <byte>();
                            SetRangeConversion <int>();
                            SetRangeConversion <double>();
                            SetRangeConversion <float>();
                            SetRangeConversion <decimal>();

                            SetRangeConversion <DateTime>(fromDbType: "daterange", toDbType: "daterange");

                            SetRangeConversion <DateTime>(fromDbType: "tsrange", toDbType: "tsrange");
                            SetRangeConversion <DateTime>(toDbType: "tsrange");

                            SetRangeConversion <DateTime>(fromDbType: "tstzrange", toDbType: "tstzrange");

                            SetRangeConversion <DateTimeOffset>("tstzrange");
                        }

                        // spatial types
                        AddUdtType(npgsqlPointType);
                        AddUdtType(npgsqlLSegType);
                        AddUdtType(npgsqlBoxType);
                        AddUdtType(npgsqlPathType);
                        AddUdtType(npgsqlCircleType);
                        AddUdtType(npgsqlPolygonType);
                        AddUdtType(npgsqlLineType);

                        _instance = new NpgsqlProviderAdapter(
                            typeMapper,
                            connectionType,
                            dataReaderType,
                            parameterType,
                            commandType,
                            transactionType,
                            dbType,

                            mappingSchema,

                            npgsqlDateType,
                            npgsqlPointType,
                            npgsqlLSegType,
                            npgsqlBoxType,
                            npgsqlCircleType,
                            npgsqlPathType,
                            npgsqlPolygonType,
                            npgsqlLineType,
                            npgsqlInetType,
                            npgsqlTimeSpanType,
                            npgsqlDateTimeType,
                            npgsqlRangeTType,

                            typeMapper.BuildWrappedFactory((string connectionString) => new NpgsqlConnection(connectionString)),

                            dbTypeBuilder.BuildSetter <IDbDataParameter>(),
                            dbTypeBuilder.BuildGetter <IDbDataParameter>(),

                            npgsqlBinaryImporterType.GetMethod("Complete") != null,
                            npgsqlBinaryImporterType,
                            beginBinaryImport);

                        void AddUdtType(Type type)
                        {
                            if (!type.IsValueType)
                            {
                                mappingSchema.AddScalarType(type, null, true, DataType.Udt);
                            }
                            else
                            {
                                mappingSchema.AddScalarType(type, DataType.Udt);
                                mappingSchema.AddScalarType(type.AsNullable(), null, true, DataType.Udt);
                            }
                        }
                    }
            }

            return(_instance);
        }
        public void GetLoanByLoanIdReturnsNullIfNotFound()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var result = loanDao.GetLoanByID(1000);

            Assert.Null(result);
        }
        public async Task <ActionResult> New(NewFamilyModel NewFamilyModel)
        {
            //we need to validate the data server side
            if (NewFamilyModel.NewFamilyMembers.Any(x => !x.AdultIsValid))
            {
                ModelState.AddModelError("", "Every family member requires a valid first name, last name, email and phone number.");
            }

            //ensure at least 1 person is being added
            if (NewFamilyModel.NewFamilyMembers.Count == 0)
            {
                ModelState.AddModelError("", "At least 1 family member is required to register a family.");
            }

            //check the email addresses and phone numbers
            foreach (var member in NewFamilyModel.NewFamilyMembers)
            {
                Boolean isValid = true;
                if (!ValidationHelper.IsValidEmail(member.Email))
                {
                    ModelState.AddModelError("", String.Format("{0} is not a valid email address", member.Email)); isValid = false;
                }
                if (!ValidationHelper.IsValidPhone(ValidationHelper.CleanPhoneNumber(member.PhoneNumber)))
                {
                    ModelState.AddModelError("", String.Format("{0} is not a valid phone number", member.PhoneNumber)); isValid = false;
                }

                if (isValid)
                {
                    //lets just verify this email doesn't already exist in the system, if it does, we should redirect
                    List <Person> personsFound = await ArenaAPIHelper.GetPersons(new PersonListOptions { Email = member.Email });

                    if (personsFound.Count > 0)
                    {
                        return(RedirectToAction("Find", new { email = member.Email }));
                    }
                }
            }



            if (!ModelState.IsValid)
            {
                NewFamilyViewModel viewModel = new NewFamilyViewModel();
                viewModel.Campuses       = GetCampuses();
                viewModel.States         = GetStates();
                viewModel.NewFamilyModel = NewFamilyModel;

                return(View(viewModel));
            }

            //add the first person
            Person requiredAdult = MemberHelper.GetAdultPersonFromMember(NewFamilyModel.NewFamilyMembers.First(), (Campus)NewFamilyModel.CampusId);

            requiredAdult.Addresses = new List <Address> {
                NewFamilyModel.Address
            };

            ArenaPostResult result = await ArenaAPIHelper.AddPerson(requiredAdult);

            if (result.WasSuccessful)
            {
                //we need the familyId
                requiredAdult = await ArenaAPIHelper.GetPerson(result.ObjectId);

                for (int i = 1; i < NewFamilyModel.NewFamilyMembers.Count; i++)
                {
                    Person additonalAdult = MemberHelper.GetAdultPersonFromMember(NewFamilyModel.NewFamilyMembers[i], (Campus)NewFamilyModel.CampusId);

                    additonalAdult.FamilyId  = requiredAdult.FamilyId;
                    additonalAdult.Addresses = requiredAdult.Addresses;

                    result = await ArenaAPIHelper.AddPerson(additonalAdult);
                }

                return(RedirectToAction("AddChildren", new { id = requiredAdult.PersonId }));
            }

            return(RedirectToAction("Index"));
        }
        static Expression GetMultipleQueryExpression(IBuildContext context, MappingSchema mappingSchema, Expression expression, HashSet <ParameterExpression> parameters)
        {
            if (!Common.Configuration.Linq.AllowMultipleQuery)
            {
                throw new LinqException("Multiple queries are not allowed. Set the 'LinqToDB.Common.Configuration.Linq.AllowMultipleQuery' flag to 'true' to allow multiple queries.");
            }

            expression.Visit(e =>
            {
                if (e.NodeType == ExpressionType.Lambda)
                {
                    foreach (var p in ((LambdaExpression)e).Parameters)
                    {
                        parameters.Add(p);
                    }
                }
            });

            // Convert associations.
            //
            return(expression.Transform(e =>
            {
                switch (e.NodeType)
                {
                case ExpressionType.MemberAccess:
                    {
                        var root = e.GetRootObject(mappingSchema);

                        if (root != null &&
                            root.NodeType == ExpressionType.Parameter &&
                            !parameters.Contains((ParameterExpression)root))
                        {
                            var res = context.IsExpression(e, 0, RequestFor.Association);

                            if (res.Result)
                            {
                                var table = (TableBuilder.AssociatedTableContext)res.Context;

                                if (table.IsList)
                                {
                                    var me = (MemberExpression)e;
                                    Expression expr;

                                    var parentType = me.Expression.Type;
                                    var childType = table.ObjectType;

                                    var queryMethod = table.Association.GetQueryMethod(parentType, childType);
                                    if (queryMethod != null)
                                    {
                                        var parentParam = Expression.Parameter(parentType, "o");
                                        var ptype = typeof(Table <>).MakeGenericType(parentType);
                                        var ptbl = Activator.CreateInstance(ptype, context.Builder.DataContext);

                                        var principalExpression = Expression.Constant(ptbl);
                                        var selectMany = (MethodCallExpression)table.GetAssociationQueryExpression(Expression.Constant(context.Builder.DataContext), null,
                                                                                                                   parentType, principalExpression, queryMethod);

                                        var parentDescriptor = mappingSchema.GetEntityDescriptor(parentType);

                                        var keyColumns = parentDescriptor.Columns.Where(c => c.IsPrimaryKey).ToList();
                                        if (keyColumns.Count == 0)
                                        {
                                            keyColumns = parentDescriptor.Columns;
                                        }

                                        var arguments = selectMany.Arguments.ToList();

                                        Expression predicate = null;
                                        foreach (var column in keyColumns)
                                        {
                                            var ee = Expression.Equal(
                                                Expression.MakeMemberAccess(
                                                    parentParam, column.MemberInfo),
                                                Expression.MakeMemberAccess(
                                                    root, column.MemberInfo));
                                            predicate = predicate == null ? ee : Expression.AndAlso(predicate, ee);
                                        }

                                        if (predicate == null)
                                        {
                                            throw new LinqToDBException($"Invalid mapping for Principal Entity during association building. Association {table.Association.MemberInfo.DeclaringType}.{table.Association.MemberInfo.Name}");
                                        }

                                        var filteredQuery = Expression.Call(null,
                                                                            _queryableMethodInfo.MakeGenericMethod(parentType), arguments[0], Expression.Lambda(predicate, parentParam));

                                        arguments[0] = filteredQuery;
                                        selectMany = selectMany.Update(selectMany.Object, arguments);

                                        var asQueryable = MemberHelper
                                                          .MethodOf((IQueryable <object> q) => LinqExtensions.AsQueryable <object, object>(0))
                                                          .GetGenericMethodDefinition()
                                                          .MakeGenericMethod(e.Type, selectMany.Type);

                                        expr = Expression.Call(null,
                                                               asQueryable, selectMany);
                                    }
                                    else
                                    {
                                        var ttype = typeof(Table <>).MakeGenericType(childType);
                                        var tbl = Activator.CreateInstance(ttype, context.Builder.DataContext);
                                        var method = e == expression ?
                                                     MemberHelper.MethodOf <IEnumerable <bool> >(n => n.Where(a => a)).GetGenericMethodDefinition().MakeGenericMethod(childType) :
                                                     _whereMethodInfo.MakeGenericMethod(e.Type, childType, ttype);

                                        var op = Expression.Parameter(childType, "t");

                                        parameters.Add(op);

                                        Expression ex = null;

                                        for (var i = 0; i < table.Association.ThisKey.Length; i++)
                                        {
                                            var field1 = table.ParentAssociation.SqlTable.Fields[table.Association.ThisKey [i]];
                                            var field2 = table.SqlTable.Fields[table.Association.OtherKey[i]];

                                            var ma1 = Expression.MakeMemberAccess(op, field2.ColumnDescriptor.MemberInfo);
                                            var ma2 = Expression.MakeMemberAccess(me.Expression, field1.ColumnDescriptor.MemberInfo);

                                            var ee = Equal(mappingSchema, ma1, ma2);

                                            ex = ex == null ? ee : Expression.AndAlso(ex, ee);
                                        }

                                        var predicate = table.Association.GetPredicate(parentType, childType);
                                        if (predicate != null)
                                        {
                                            var body = predicate.GetBody(me.Expression, op);
                                            ex = ex == null ? body : Expression.AndAlso(ex, body);
                                        }

                                        if (ex == null)
                                        {
                                            throw new LinqToDBException($"Invalid association configuration for {table.Association.MemberInfo.DeclaringType}.{table.Association.MemberInfo.Name}");
                                        }

                                        expr = Expression.Call(null, method, Expression.Constant(tbl), Expression.Lambda(ex, op));
                                    }

                                    if (e == expression)
                                    {
                                        expr = Expression.Call(
                                            MemberHelper.MethodOf <IEnumerable <int> >(n => n.ToList()).GetGenericMethodDefinition().MakeGenericMethod(childType),
                                            expr);
                                    }

                                    return expr;
                                }
                            }
                        }

                        break;
                    }
                }

                return e;
            }));
        }
        static Expression GetMultipleQueryExpression(IBuildContext context, Expression expression, HashSet <ParameterExpression> parameters)
        {
            if (!Common.Configuration.Linq.AllowMultipleQuery)
            {
                throw new LinqException("Multiple queries are not allowed. Set the 'LinqToDB.Common.Configuration.Linq.AllowMultipleQuery' flag to 'true' to allow multiple queries.");
            }

            expression.Visit(e =>
            {
                if (e.NodeType == ExpressionType.Lambda)
                {
                    foreach (var p in ((LambdaExpression)e).Parameters)
                    {
                        parameters.Add(p);
                    }
                }
            });

            // Convert associations.
            //
            return(expression.Transform(e =>
            {
                switch (e.NodeType)
                {
                case ExpressionType.MemberAccess:
                    {
                        var root = e.GetRootObject();

                        if (root != null &&
                            root.NodeType == ExpressionType.Parameter &&
                            !parameters.Contains((ParameterExpression)root))
                        {
                            var res = context.IsExpression(e, 0, RequestFor.Association);

                            if (res.Result)
                            {
                                var table = (TableBuilder.AssociatedTableContext)res.Context;

                                if (table.IsList)
                                {
                                    var ttype = typeof(Table <>).MakeGenericType(table.ObjectType);
                                    var tbl = Activator.CreateInstance(ttype);
                                    var method = e == expression ?
                                                 MemberHelper.MethodOf <IEnumerable <bool> >(n => n.Where(a => a)).GetGenericMethodDefinition().MakeGenericMethod(table.ObjectType) :
                                                 _whereMethodInfo.MakeGenericMethod(e.Type, table.ObjectType, ttype);

                                    var me = (MemberExpression)e;
                                    var op = Expression.Parameter(table.ObjectType, "t");

                                    parameters.Add(op);

                                    Expression ex = null;

                                    for (var i = 0; i < table.Association.ThisKey.Length; i++)
                                    {
                                        var field1 = table.ParentAssociation.SqlTable.Fields[table.Association.ThisKey [i]];
                                        var field2 = table.SqlTable.Fields[table.Association.OtherKey[i]];

                                        var ee = Expression.Equal(
                                            Expression.MakeMemberAccess(op, field2.ColumnDescriptor.MemberInfo),
                                            Expression.MakeMemberAccess(me.Expression, field1.ColumnDescriptor.MemberInfo));

                                        ex = ex == null ? ee : Expression.AndAlso(ex, ee);
                                    }

                                    var expr = Expression.Call(null, method, Expression.Constant(tbl), Expression.Lambda(ex, op));

                                    if (e == expression)
                                    {
                                        expr = Expression.Call(
                                            MemberHelper.MethodOf <IEnumerable <int> >(n => n.ToList()).GetGenericMethodDefinition().MakeGenericMethod(table.ObjectType),
                                            expr);
                                    }

                                    return expr;
                                }
                            }
                        }

                        break;
                    }
                }

                return e;
            }));
        }
Esempio n. 30
0
        public override void RecreateControls(bool contructor)
        {
            Controls.Clear();

            m_scale = 0.7f;

            AddCaption(new System.Text.StringBuilder("Render debug"), Color.Yellow.ToVector4());

            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder("(press ALT to share focus)"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);

            Controls.Add(label);

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f;
            AddLabel(new StringBuilder("LODs"), Color.Yellow.ToVector4(), 1.2f);

            var profile = MyRenderConstants.RenderQualityProfile; // Obfuscated MemberHelper can't access property, so store it to field

            //AddCheckBox(new StringBuilder("Show LOD screens"), null, MemberHelper.GetMember(() => MyRender.ShowLODScreens));
            AddCheckBox(new StringBuilder("Show blended screens"), null, MemberHelper.GetMember(() => MyRender.ShowBlendedScreens));
            AddCheckBox(new StringBuilder("Show LOD1 red overlay"), null, MemberHelper.GetMember(() => MyRender.ShowLod1WithRedOverlay));
            AddCheckBox(new StringBuilder("Show green background"), null, MemberHelper.GetMember(() => MyRender.ShowGreenBackground));
            AddCheckBox(new StringBuilder("Show environment screens"), null, MemberHelper.GetMember(() => MyRender.ShowEnvironmentScreens));
            AddSlider(new StringBuilder("Lod near distance"), 0.0f, 20000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceNear));
            AddSlider(new StringBuilder("Lod far distance"), 0.0f, 20000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceFar));
            AddSlider(new StringBuilder("Lod background start"), 0.0f, 50000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceBackgroundStart));
            AddSlider(new StringBuilder("Lod background end"), MyCamera.NEAR_PLANE_DISTANCE + 1, 50000.0f, profile, MemberHelper.GetMember(() => profile.LodTransitionDistanceBackgroundEnd));


            m_currentPosition.Y += 0.01f;
            AddLabel(new StringBuilder("Textures"), Color.Yellow.ToVector4(), 1.2f);

            AddCheckBox(new StringBuilder("Check diffuse textures"), null, MemberHelper.GetMember(() => MyRender.CheckDiffuseTextures));
            AddCheckBox(new StringBuilder("Check normals textures"), null, MemberHelper.GetMember(() => MyRender.CheckNormalTextures));

            AddCheckBox(new StringBuilder("Debug diffuse texture"), null, MemberHelper.GetMember(() => MyRender.DebugDiffuseTexture));
            AddCheckBox(new StringBuilder("Debug normal texture"), null, MemberHelper.GetMember(() => MyRender.DebugNormalTexture));

            m_currentPosition.Y += 0.01f;
            AddLabel(new StringBuilder("Clip planes"), Color.Yellow.ToVector4(), 1.2f);
            AddSlider(new StringBuilder("Near clip"), 0.05f, 10.0f, null, MemberHelper.GetMember(() => MyCamera.NEAR_PLANE_DISTANCE));
            AddSlider(new StringBuilder("Far clip"), 10000.0f, 100000.0f, null, MemberHelper.GetMember(() => MyCamera.FAR_PLANE_DISTANCE));

            AddSlider(new StringBuilder("FOV"), MyCamera.FieldOfViewAngle, 1.00f, 90.0f, new MyGuiControlSlider.OnSliderChangeCallback(OnFovSlider));
        }
Esempio n. 31
0
 public string SelectUserCountGrades(int gid)
 {
     return(MemberHelper.SelectUserCountGrades(gid).ToString());
 }
        protected override void OnConnectionTypeCreated(Type connectionType)
        {
            var typesNamespace = AssemblyName + ".Types.";

            _oracleBFile        = connectionType.Assembly.GetType(typesNamespace + "OracleBFile", true);
            _oracleBinary       = connectionType.Assembly.GetType(typesNamespace + "OracleBinary", true);
            _oracleBlob         = connectionType.Assembly.GetType(typesNamespace + "OracleBlob", true);
            _oracleClob         = connectionType.Assembly.GetType(typesNamespace + "OracleClob", true);
            _oracleDate         = connectionType.Assembly.GetType(typesNamespace + "OracleDate", true);
            _oracleDecimal      = connectionType.Assembly.GetType(typesNamespace + "OracleDecimal", true);
            _oracleIntervalDS   = connectionType.Assembly.GetType(typesNamespace + "OracleIntervalDS", true);
            _oracleIntervalYM   = connectionType.Assembly.GetType(typesNamespace + "OracleIntervalYM", true);
            _oracleRefCursor    = connectionType.Assembly.GetType(typesNamespace + "OracleRefCursor", true);
            _oracleString       = connectionType.Assembly.GetType(typesNamespace + "OracleString", true);
            _oracleTimeStamp    = connectionType.Assembly.GetType(typesNamespace + "OracleTimeStamp", true);
            _oracleTimeStampLTZ = connectionType.Assembly.GetType(typesNamespace + "OracleTimeStampLTZ", true);
            _oracleTimeStampTZ  = connectionType.Assembly.GetType(typesNamespace + "OracleTimeStampTZ", true);
            _oracleRef          = connectionType.Assembly.GetType(typesNamespace + "OracleRef", false);
            _oracleXmlType      = connectionType.Assembly.GetType(typesNamespace + "OracleXmlType", false);
            _oracleXmlStream    = connectionType.Assembly.GetType(typesNamespace + "OracleXmlStream", false);

            SetProviderField(_oracleBFile, _oracleBFile, "GetOracleBFile");
            SetProviderField(_oracleBinary, _oracleBinary, "GetOracleBinary");
            SetProviderField(_oracleBlob, _oracleBlob, "GetOracleBlob");
            SetProviderField(_oracleClob, _oracleClob, "GetOracleClob");
            SetProviderField(_oracleDate, _oracleDate, "GetOracleDate");
            SetProviderField(_oracleDecimal, _oracleDecimal, "GetOracleDecimal");
            SetProviderField(_oracleIntervalDS, _oracleIntervalDS, "GetOracleIntervalDS");
            SetProviderField(_oracleIntervalYM, _oracleIntervalYM, "GetOracleIntervalYM");
            SetProviderField(_oracleString, _oracleString, "GetOracleString");
            SetProviderField(_oracleTimeStamp, _oracleTimeStamp, "GetOracleTimeStamp");
            SetProviderField(_oracleTimeStampLTZ, _oracleTimeStampLTZ, "GetOracleTimeStampLTZ");
            SetProviderField(_oracleTimeStampTZ, _oracleTimeStampTZ, "GetOracleTimeStampTZ");

            try
            {
                if (_oracleRef != null)
                {
                    SetProviderField(_oracleRef, _oracleRef, "GetOracleRef");
                }
            }
            catch
            {
            }

            try
            {
                if (_oracleXmlType != null)
                {
                    SetProviderField(_oracleXmlType, _oracleXmlType, "GetOracleXmlType");
                }
            }
            catch
            {
            }

            var dataReaderParameter = Expression.Parameter(DataReaderType, "r");
            var indexParameter      = Expression.Parameter(typeof(int), "i");

            {
                // static DateTimeOffset GetOracleTimeStampTZ(OracleDataReader rd, int idx)
                // {
                //     var tstz = rd.GetOracleTimeStampTZ(idx);
                //     return new DateTimeOffset(
                //         tstz.Year, tstz.Month,  tstz.Day,
                //         tstz.Hour, tstz.Minute, tstz.Second, (int)tstz.Millisecond,
                //         TimeSpan.Parse(tstz.TimeZone.TrimStart('+')));
                // }

                var tstz = Expression.Parameter(_oracleTimeStampTZ, "tstz");

                ReaderExpressions[new ReaderInfo {
                                      ToType = typeof(DateTimeOffset), ProviderFieldType = _oracleTimeStampTZ
                                  }] =
                    Expression.Lambda(
                        Expression.Block(
                            new[] { tstz },
                            new Expression[]
                {
                    Expression.Assign(tstz, Expression.Call(dataReaderParameter, "GetOracleTimeStampTZ", null, indexParameter)),
                    Expression.Call(
                        MemberHelper.MethodOf(() => ToDateTimeOffset(null)),
                        Expression.Convert(tstz, typeof(object))
                        )
                }),
                        dataReaderParameter,
                        indexParameter);
            }

            {
                // static DateTimeOffset GetOracleTimeStampLTZ(OracleDataReader rd, int idx)
                // {
                //     var tstz = rd.GetOracleTimeStampLTZ(idx).ToOracleTimeStampTZ();
                //     return new DateTimeOffset(
                //         tstz.Year, tstz.Month,  tstz.Day,
                //         tstz.Hour, tstz.Minute, tstz.Second, (int)tstz.Millisecond,
                //         TimeSpan.Parse(tstz.TimeZone.TrimStart('+')));
                // }

                var tstz = Expression.Parameter(_oracleTimeStampTZ, "tstz");

                ReaderExpressions[new ReaderInfo {
                                      ToType = typeof(DateTimeOffset), ProviderFieldType = _oracleTimeStampLTZ
                                  }] =
                    Expression.Lambda(
                        Expression.Block(
                            new[] { tstz },
                            new Expression[]
                {
                    Expression.Assign(
                        tstz,
                        Expression.Call(
                            Expression.Call(dataReaderParameter, "GetOracleTimeStampLTZ", null, indexParameter),
                            "ToOracleTimeStampTZ",
                            null,
                            null)),
                    Expression.Call(
                        MemberHelper.MethodOf(() => ToDateTimeOffset(null)),
                        Expression.Convert(tstz, typeof(object))
                        )
                }),
                        dataReaderParameter,
                        indexParameter);
            }

            {
                // ((OracleCommand)dataConnection.Command).BindByName = true;

                var p = Expression.Parameter(typeof(DataConnection), "dataConnection");

                _setBindByName =
                    Expression.Lambda <Action <DataConnection> >(
                        Expression.Assign(
                            Expression.PropertyOrField(
                                Expression.Convert(
                                    Expression.PropertyOrField(p, "Command"),
                                    connectionType.Assembly.GetType(AssemblyName + ".Client.OracleCommand", true)),
                                "BindByName"),
                            Expression.Constant(true)),
                        p
                        ).Compile();
            }

            {
                // value = new OracleTimeStampTZ(dto.Year, dto.Month, dto.Day, dto.Hour, dto.Minute, dto.Second, dto.Millisecond, zone);

                var dto  = Expression.Parameter(typeof(DateTimeOffset), "dto");
                var zone = Expression.Parameter(typeof(string), "zone");

                _createOracleTimeStampTZ =
                    Expression.Lambda <Func <DateTimeOffset, string, object> >(
                        Expression.Convert(
                            Expression.New(
                                _oracleTimeStampTZ.GetConstructor(new[]
                {
                    typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(int), typeof(string)
                }),
                                Expression.PropertyOrField(dto, "Year"),
                                Expression.PropertyOrField(dto, "Month"),
                                Expression.PropertyOrField(dto, "Day"),
                                Expression.PropertyOrField(dto, "Hour"),
                                Expression.PropertyOrField(dto, "Minute"),
                                Expression.PropertyOrField(dto, "Second"),
                                Expression.PropertyOrField(dto, "Millisecond"),
                                zone),
                            typeof(object)),
                        dto,
                        zone
                        ).Compile();
            }

            _setSingle         = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "BinaryFloat");
            _setDouble         = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "BinaryDouble");
            _setText           = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Clob");
            _setNText          = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "NClob");
            _setImage          = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Blob");
            _setBinary         = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Blob");
            _setVarBinary      = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Blob");
            _setDate           = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Date");
            _setSmallDateTime  = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Date");
            _setDateTime2      = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "TimeStamp");
            _setDateTimeOffset = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "TimeStampTZ");
            _setGuid           = GetSetParameter(connectionType, "OracleParameter", "OracleDbType", "OracleDbType", "Raw");

            MappingSchema.AddScalarType(_oracleBFile, GetNullValue(_oracleBFile), true, DataType.VarChar);                              // ?
            MappingSchema.AddScalarType(_oracleBinary, GetNullValue(_oracleBinary), true, DataType.VarBinary);
            MappingSchema.AddScalarType(_oracleBlob, GetNullValue(_oracleBlob), true, DataType.Blob);                                   // ?
            MappingSchema.AddScalarType(_oracleClob, GetNullValue(_oracleClob), true, DataType.NText);
            MappingSchema.AddScalarType(_oracleDate, GetNullValue(_oracleDate), true, DataType.DateTime);
            MappingSchema.AddScalarType(_oracleDecimal, GetNullValue(_oracleDecimal), true, DataType.Decimal);
            MappingSchema.AddScalarType(_oracleIntervalDS, GetNullValue(_oracleIntervalDS), true, DataType.Time);                       // ?
            MappingSchema.AddScalarType(_oracleIntervalYM, GetNullValue(_oracleIntervalYM), true, DataType.Date);                       // ?
            MappingSchema.AddScalarType(_oracleRefCursor, GetNullValue(_oracleRefCursor), true, DataType.Binary);                       // ?
            MappingSchema.AddScalarType(_oracleString, GetNullValue(_oracleString), true, DataType.NVarChar);
            MappingSchema.AddScalarType(_oracleTimeStamp, GetNullValue(_oracleTimeStamp), true, DataType.DateTime2);
            MappingSchema.AddScalarType(_oracleTimeStampLTZ, GetNullValue(_oracleTimeStampLTZ), true, DataType.DateTimeOffset);
            MappingSchema.AddScalarType(_oracleTimeStampTZ, GetNullValue(_oracleTimeStampTZ), true, DataType.DateTimeOffset);

            if (_oracleRef != null)
            {
                MappingSchema.AddScalarType(_oracleRef, GetNullValue(_oracleRef), true, DataType.Binary);                 // ?
            }
            if (_oracleXmlType != null)
            {
                MappingSchema.AddScalarType(_oracleXmlType, GetNullValue(_oracleXmlType), true, DataType.Xml);
            }

            if (_oracleXmlStream != null)
            {
                MappingSchema.AddScalarType(_oracleXmlStream, GetNullValue(_oracleXmlStream), true, DataType.Xml);                 // ?
            }
        }
Esempio n. 33
0
 public static bool IsInterfaceImplementation(this IMethodDefinition method)
 {
     return(MemberHelper.GetImplicitlyImplementedInterfaceMethods(method).Any() ||
            MemberHelper.GetExplicitlyOverriddenMethods(method).Any());
 }
Esempio n. 34
0
        public void WeixinLoginAction(SiteSettings site, bool isMustLogin)
        {
            this.GetOpenID(site);
            string getCurrentWXOpenId = Globals.GetCurrentWXOpenId;
            string text = Globals.RequestQueryStr("code");

            if (text.Contains(","))
            {
                Globals.Debuglog("code问题获取值为:" + text, "_DebugCodeErr.txt");
                this.Page.Response.Redirect("/default.aspx");
            }
            if (isMustLogin)
            {
                if (string.IsNullOrEmpty(text))
                {
                    Globals.Debuglog("进入1,必须登录的页面,并且无code请求" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                    MemberInfo openIdMember = MemberProcessor.GetOpenIdMember(getCurrentWXOpenId, "wx");
                    if (openIdMember != null && openIdMember.Status == Convert.ToInt32(UserStatus.DEL))
                    {
                        this.Page.Response.Redirect(Globals.ApplicationPath + "/logout.aspx");
                    }
                    if (openIdMember.IsAuthorizeWeiXin == 0)
                    {
                        string text2 = HttpContext.Current.Request.Url.ToString().Replace(":" + HttpContext.Current.Request.Url.Port, "");
                        text2 = Regex.Replace(text2, "&code=(.*)&state=STATE", "");
                        Globals.Debuglog("进入2,检测为匿名用户,并请求授权登录,去获得code参数" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                        string text3 = "snsapi_userinfo";
                        string url   = string.Concat(new string[]
                        {
                            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=",
                            site.WeixinAppId,
                            "&redirect_uri=",
                            Globals.UrlEncode(text2),
                            "&response_type=code&scope=",
                            text3,
                            "&state=STATE#wechat_redirect"
                        });
                        this.Page.Response.Redirect(url);
                        return;
                    }
                    this.setLogin(openIdMember.UserId);
                    return;
                }
                else if (Globals.GetCurrentMemberUserId() == 0)
                {
                    Globals.Debuglog("进入4,code请求地址,获取用户基本信息" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                    string responseResult = this.GetResponseResult(string.Concat(new string[]
                    {
                        "https://api.weixin.qq.com/sns/oauth2/access_token?appid=",
                        site.WeixinAppId,
                        "&secret=",
                        site.WeixinAppSecret,
                        "&code=",
                        text,
                        "&grant_type=authorization_code"
                    }));
                    Globals.Debuglog(responseResult, "_DebuglogLogining.txt");
                    if (responseResult.Contains("access_token"))
                    {
                        Globals.Debuglog("进入5,准备获取到基本信息" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                        JObject jObject         = JsonConvert.DeserializeObject(responseResult) as JObject;
                        string  responseResult2 = this.GetResponseResult(string.Concat(new string[]
                        {
                            "https://api.weixin.qq.com/sns/userinfo?access_token=",
                            jObject["access_token"].ToString(),
                            "&openid=",
                            jObject["openid"].ToString(),
                            "&lang=zh_CN"
                        }));
                        JObject jObject2 = JsonConvert.DeserializeObject(responseResult2) as JObject;
                        if (responseResult2.Contains("nickname"))
                        {
                            Globals.Debuglog("进入16,获取到基本信息" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                            MemberInfo openIdMember2 = MemberProcessor.GetOpenIdMember(getCurrentWXOpenId, "wx");
                            if (openIdMember2 == null)
                            {
                                Globals.Debuglog("进入16,检测用户信息为空,清空Cookie并跳转到首页" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                                Globals.ClearUserCookie();
                                this.Page.Response.Redirect(Globals.ApplicationPath + "/Default.aspx");
                            }
                            MemberHelper.SetUserHeadAndUserName(getCurrentWXOpenId, jObject2["headimgurl"].ToString(), Globals.UrlDecode(jObject2["nickname"].ToString()));
                            this.setLogin(openIdMember2.UserId);
                            return;
                        }
                    }
                    else
                    {
                        string text4 = HttpContext.Current.Request.Url.ToString().Replace(":" + HttpContext.Current.Request.Url.Port, "");
                        text4 = Regex.Replace(text4, "&code=(.*)&state=STATE", "");
                        Globals.Debuglog("获取不到access_token,说明需要授权登录,去获得code参数" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                        string text5 = "snsapi_userinfo";
                        string url2  = string.Concat(new string[]
                        {
                            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=",
                            site.WeixinAppId,
                            "&redirect_uri=",
                            Globals.UrlEncode(text4),
                            "&response_type=code&scope=",
                            text5,
                            "&state=STATE#wechat_redirect"
                        });
                        this.Page.Response.Redirect(url2);
                    }
                }
            }
        }
Esempio n. 35
0
                public Expression GetGrouping(GroupByContext context)
                {
                    if (Configuration.Linq.GuardGrouping)
                    {
                        if (context._element.Lambda.Parameters.Count == 1 &&
                            context._element.Body == context._element.Lambda.Parameters[0])
                        {
                            var ex = new LinqToDBException(
                                "You should explicitly specify selected fields for server-side GroupBy() call or add AsEnumerable() call before GroupBy() to perform client-side grouping.\n" +
                                "Set Configuration.Linq.GuardGrouping = false to disable this check."
                                )
                            {
                                HelpLink = "https://github.com/linq2db/linq2db/issues/365"
                            };

                            throw ex;
                        }
                    }

                    var parameters = context.Builder.CurrentSqlParameters
                                     .Select((p, i) => new { p, i })
                                     .ToDictionary(_ => _.p.Expression, _ => _.i);
                    var paramArray = Expression.Parameter(typeof(object[]), "ps");

                    var groupExpression = context._sequenceExpr.Transform(e =>
                    {
                        int idx;

                        if (parameters.TryGetValue(e, out idx))
                        {
                            return
                            (Expression.Convert(
                                 Expression.ArrayIndex(paramArray, Expression.Constant(idx)),
                                 e.Type));
                        }

                        return(e);
                    });

                    var keyParam = Expression.Parameter(typeof(TKey), "key");

// ReSharper disable AssignNullToNotNullAttribute

                    var expr = Expression.Call(
                        null,
                        MemberHelper.MethodOf(() => Queryable.Where(null, (Expression <Func <TSource, bool> >)null)),
                        groupExpression,
                        Expression.Lambda <Func <TSource, bool> >(
                            ExpressionBuilder.Equal(context.Builder.MappingSchema, context._key.Lambda.Body, keyParam),
                            new[] { context._key.Lambda.Parameters[0] }));

                    expr = Expression.Call(
                        null,
                        MemberHelper.MethodOf(() => Queryable.Select(null, (Expression <Func <TSource, TElement> >)null)),
                        expr,
                        context._element.Lambda);

// ReSharper restore AssignNullToNotNullAttribute

                    var lambda = Expression.Lambda <Func <IDataContext, TKey, object[], IQueryable <TElement> > >(
                        Expression.Convert(expr, typeof(IQueryable <TElement>)),
                        Expression.Parameter(typeof(IDataContext), "ctx"),
                        keyParam,
                        paramArray);

                    var itemReader      = CompiledQuery.Compile(lambda);
                    var keyExpr         = context._key.BuildExpression(null, 0, false);
                    var dataReaderLocal = context.Builder.DataReaderLocal;

                    if (!Configuration.AvoidSpecificDataProviderAPI && keyExpr.Find(e => e == dataReaderLocal) != null)
                    {
                        keyExpr = Expression.Block(
                            new[] { context.Builder.DataReaderLocal },
                            new[]
                        {
                            Expression.Assign(dataReaderLocal, Expression.Convert(ExpressionBuilder.DataReaderParam, context.Builder.DataContext.DataReaderType)),
                            keyExpr
                        });
                    }

                    var keyReader = Expression.Lambda <Func <IQueryRunner, IDataContext, IDataReader, Expression, object[], TKey> >(
                        keyExpr,
                        new []
                    {
                        ExpressionBuilder.QueryRunnerParam,
                        ExpressionBuilder.DataContextParam,
                        ExpressionBuilder.DataReaderParam,
                        ExpressionBuilder.ExpressionParam,
                        ExpressionBuilder.ParametersParam
                    });

                    return(Expression.Call(
                               null,
                               MemberHelper.MethodOf(() => GetGrouping(null, null, null, null, null, null, null, null)),
                               new Expression[]
                    {
                        ExpressionBuilder.QueryRunnerParam,
                        ExpressionBuilder.DataContextParam,
                        ExpressionBuilder.DataReaderParam,
                        Expression.Constant(context.Builder.CurrentSqlParameters),
                        ExpressionBuilder.ExpressionParam,
                        ExpressionBuilder.ParametersParam,
                        Expression.Constant(keyReader.Compile()),
                        Expression.Constant(itemReader)
                    }));
                }
Esempio n. 36
0
        public void GetOpenID(SiteSettings site)
        {
            string text = this.Page.Request.QueryString["code"];
            string getCurrentWXOpenId = Globals.GetCurrentWXOpenId;

            Globals.Debuglog("进入9,获取OpenID的Cookie" + this.Page.Request.Url.ToString(), "_debugtest.txt");
            if (!string.IsNullOrEmpty(getCurrentWXOpenId))
            {
                return;
            }
            if (!string.IsNullOrEmpty(text))
            {
                Globals.Debuglog("无openid Cookie,并请求access_token" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                string responseResult = this.GetResponseResult(string.Concat(new string[]
                {
                    "https://api.weixin.qq.com/sns/oauth2/access_token?appid=",
                    site.WeixinAppId,
                    "&secret=",
                    site.WeixinAppSecret,
                    "&code=",
                    text,
                    "&grant_type=authorization_code"
                }));
                if (responseResult.Contains("access_token"))
                {
                    Globals.Debuglog("获取到access_token" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                    JObject jObject = JsonConvert.DeserializeObject(responseResult) as JObject;
                    string  text2   = jObject["openid"].ToString();
                    Globals.GetCurrentWXOpenId = text2;
                    if (!this.HasLogin(text2, "wx"))
                    {
                        Globals.Debuglog("开始注册匿名会员" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                        string generateId = Globals.GetGenerateId();
                        MemberProcessor.CreateMember(new MemberInfo
                        {
                            GradeId        = MemberProcessor.GetDefaultMemberGrade(),
                            UserName       = Globals.UrlDecode("新用户"),
                            OpenId         = text2,
                            CreateDate     = DateTime.Now,
                            SessionId      = generateId,
                            SessionEndTime = DateTime.Now.AddYears(10),
                            UserHead       = Globals.GetWebUrlStart() + "/templates/common/images/user.png",
                            ReferralUserId = Globals.GetCurrentDistributorId(),
                            Password       = HiCryptographer.Md5Encrypt("888888")
                        });
                        Globals.Debuglog("进入5,准备获取到基本信息" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                        string responseResult2 = this.GetResponseResult(string.Concat(new string[]
                        {
                            "https://api.weixin.qq.com/sns/userinfo?access_token=",
                            jObject["access_token"].ToString(),
                            "&openid=",
                            jObject["openid"].ToString(),
                            "&lang=zh_CN"
                        }));
                        JObject jObject2 = JsonConvert.DeserializeObject(responseResult2) as JObject;
                        if (responseResult2.Contains("nickname"))
                        {
                            Globals.Debuglog("进入116,获取到基本信息" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                            MemberInfo openIdMember = MemberProcessor.GetOpenIdMember(text2, "wx");
                            if (openIdMember == null)
                            {
                                Globals.Debuglog("进入16,检测用户信息为空,清空Cookie并跳转到首页" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                                Globals.ClearUserCookie();
                                this.Page.Response.Redirect("/Default.aspx");
                            }
                            MemberHelper.SetUserHeadAndUserName(text2, jObject2["headimgurl"].ToString(), Globals.UrlDecode(jObject2["nickname"].ToString()));
                            this.setLogin(openIdMember.UserId);
                            return;
                        }
                    }
                }
            }
            else
            {
                Globals.Debuglog("进入11,请求静默登录" + this.Page.Request.Url.ToString(), "_debugtest.txt");
                string url = string.Concat(new string[]
                {
                    "https://open.weixin.qq.com/connect/oauth2/authorize?appid=",
                    site.WeixinAppId,
                    "&redirect_uri=",
                    Globals.UrlEncode(HttpContext.Current.Request.Url.ToString().Replace(":" + HttpContext.Current.Request.Url.Port, "")),
                    "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"
                });
                this.Page.Response.Redirect(url);
            }
        }
                public Expression GetSubquery(
                    ExpressionBuilder builder,
                    AssociatedTableContext tableContext,
                    ParameterExpression parentObject)
                {
                    var lContext = Expression.Parameter(typeof(IDataContext), "ctx");
                    var lParent  = Expression.Parameter(typeof(object), "parentObject");

                    var tableExpression = builder.DataContext.GetTable <T>();

                    var loadWith = tableContext.GetLoadWith();

                    if (loadWith != null)
                    {
                        foreach (var members in loadWith)
                        {
                            var pLoadWith  = Expression.Parameter(typeof(T), "t");
                            var isPrevList = false;

                            Expression obj = pLoadWith;

                            foreach (var member in members)
                            {
                                if (isPrevList)
                                {
                                    obj = new GetItemExpression(obj);
                                }

                                obj = Expression.MakeMemberAccess(obj, member);

                                isPrevList = typeof(IEnumerable).IsSameOrParentOf(obj.Type);
                            }

                            tableExpression = tableExpression.LoadWith(Expression.Lambda <Func <T, object> >(obj, pLoadWith));
                        }
                    }

                    Expression expression;

                    {                     // Where
                        var pWhere = Expression.Parameter(typeof(T), "t");

                        Expression expr = null;

                        for (var i = 0; i < tableContext.Association.ThisKey.Length; i++)
                        {
                            var thisProp  = Expression.PropertyOrField(Expression.Convert(lParent, parentObject.Type), tableContext.Association.ThisKey[i]);
                            var otherProp = Expression.PropertyOrField(pWhere, tableContext.Association.OtherKey[i]);

                            var ex = ExpressionBuilder.Equal(tableContext.Builder.MappingSchema, otherProp, thisProp);

                            expr = expr == null ? ex : Expression.AndAlso(expr, ex);
                        }

                        expression = tableExpression.Where(Expression.Lambda <Func <T, bool> >(expr, pWhere)).Expression;
                    }

                    var lambda      = Expression.Lambda <Func <IDataContext, object, IEnumerable <T> > >(expression, lContext, lParent);
                    var queryReader = CompiledQuery.Compile(lambda);

                    expression = Expression.Call(
                        null,
                        MemberHelper.MethodOf(() => ExecuteSubQuery(null, null, null)),
                        ExpressionBuilder.QueryRunnerParam,
                        Expression.Convert(parentObject, typeof(object)),
                        Expression.Constant(queryReader));

                    var memberType = tableContext.Association.MemberInfo.GetMemberType();

                    if (memberType == typeof(T[]))
                    {
                        return(Expression.Call(null, MemberHelper.MethodOf(() => Enumerable.ToArray <T>(null)), expression));
                    }

                    if (memberType.IsSameOrParentOf(typeof(List <T>)))
                    {
                        return(Expression.Call(null, MemberHelper.MethodOf(() => Enumerable.ToList <T>(null)), expression));
                    }

                    var ctor = memberType.GetConstructorEx(new[] { typeof(IEnumerable <T>) });

                    if (ctor != null)
                    {
                        return(Expression.New(ctor, expression));
                    }

                    var l = builder.MappingSchema.GetConvertExpression(expression.Type, memberType, false, false);

                    if (l != null)
                    {
                        return(l.GetBody(expression));
                    }

                    throw new LinqToDBException($"Expected constructor '{memberType.Name}(IEnumerable<{tableContext.ObjectType}>)'");
                }
Esempio n. 38
0
        private void btnSubmitMemberRanks_Click(object sender, EventArgs e)
        {
            string text  = this.txtRankName.Text;
            string str2  = this.txt_tradeVol.Text;
            string str3  = this.txt_tradeTimes.Text;
            string str4  = this.txtValue.Text;
            string text1 = this.txtRankDesc.Text;

            if (string.IsNullOrEmpty(text))
            {
                this.ShowMsg("会员等级名称不能为空!", false);
            }
            else if (text.Length > 20)
            {
                this.ShowMsg("会员等级名称最长20个字符", false);
            }
            else
            {
                double num = 0.0;
                if (!string.IsNullOrEmpty(str2))
                {
                    double num2 = 0.0;
                    if (!this.bDouble(str2, ref num2))
                    {
                        this.ShowMsg("请输入正确的交易额!", false);
                        return;
                    }
                    num = num2;
                }
                int num3 = 0;
                if (!string.IsNullOrEmpty(str3))
                {
                    int num4 = 0;
                    if (!this.bInt(str3, ref num4))
                    {
                        this.ShowMsg("请输入正确的交易次数!", false);
                        return;
                    }
                    num3 = num4;
                }
                int i = 0;
                if (string.IsNullOrEmpty(str4))
                {
                    this.ShowMsg("会员折扣不能为空!", false);
                }
                else if (!this.bInt(str4, ref i))
                {
                    this.ShowMsg("会员折扣必须是不大于100的正整数!", false);
                }
                else if (i > 100)
                {
                    this.ShowMsg("会员折扣必须是不大于100的正整数!", false);
                }
                else
                {
                    MemberGradeInfo memberGrade;
                    if (_bAdd)
                    {
                        memberGrade = new MemberGradeInfo();
                    }
                    else
                    {
                        memberGrade = MemberHelper.GetMemberGrade(_gradeid);
                    }
                    memberGrade.Name        = text;
                    memberGrade.Description = this.txtRankDesc.Text.Trim();
                    memberGrade.IsDefault   = this.cbIsDefault.Checked;
                    memberGrade.IsDaifa     = this.cbIsDaifa.Checked;
                    memberGrade.IsPifa      = this.cbIsPifa.Checked;
                    memberGrade.TranVol     = new double?(num);
                    memberGrade.TranTimes   = new int?(num3);
                    memberGrade.Discount    = i;
                    if (_bAdd && MemberHelper.IsExist(text))
                    {
                        this.ShowMsg("该等级名称已存在,请修改等级名称", false);
                    }
                    else if (MemberHelper.HasSameMemberGrade(memberGrade))
                    {
                        this.ShowMsg("已经存在相同交易额或交易次数的等级,每个会员等级的交易额或交易次数不能相同", false);
                    }
                    else
                    {
                        try
                        {
                            if (_bAdd)
                            {
                                if (MemberHelper.CreateMemberGrade(memberGrade))
                                {
                                    this.ShowMsgAndReUrl("新增会员等级成功", true, "/Admin/Member/MemberGrades.aspx");
                                }
                                else
                                {
                                    this.ShowMsg("新增会员等级失败", false);
                                }
                            }
                            else if (MemberHelper.UpdateMemberGrade(memberGrade))
                            {
                                this.ShowMsgAndReUrl("修改会员等级成功", true, "/Admin/Member/MemberGrades.aspx");
                            }
                            else
                            {
                                this.ShowMsg("修改会员等级失败", false);
                            }
                        }
                        catch (Exception exception)
                        {
                            this.ShowMsg("操作失败,原因是:" + exception.Message, false);
                        }
                    }
                }
            }
        }
Esempio n. 39
0
        private static Expression GetParseEnum(Type from, Type to, Expression p)
        {
            if (from == typeof(string) && to.IsEnumEx())
            {
#if SL4
                return
                    (Expression.Call(
                         MemberHelper.MethodOf(() => Enum.Parse(to, "", true)),
                         Expression.Constant(to),
                         p,
                         Expression.Constant(true)));
#else
                var values = Enum.GetValues(to);
                var names  = Enum.GetNames(to);

                var dic = new Dictionary <string, object>();

                for (var i = 0; i < values.Length; i++)
                {
                    var val = values.GetValue(i);
                    var lv  = (long)Convert.ChangeType(val, typeof(long)
#if !NETFX_CORE
                                                       , Thread.CurrentThread.CurrentCulture
#endif
                                                       );

                    dic[lv.ToString()] = val;

                    if (lv > 0)
                    {
                        dic["+" + lv] = val;
                    }
                }

                for (var i = 0; i < values.Length; i++)
                {
                    dic[names[i].ToLowerInvariant()] = values.GetValue(i);
                }

                for (var i = 0; i < values.Length; i++)
                {
                    dic[names[i]] = values.GetValue(i);
                }

                var cases =
                    from v in dic
                    group v.Key by v.Value
                    into g
                    select Expression.SwitchCase(Expression.Constant(g.Key), g.Select(Expression.Constant));

                var expr = Expression.Switch(
                    p,
                    Expression.Convert(
                        Expression.Call(_defaultConverter,
                                        Expression.Convert(p, typeof(string)),
                                        Expression.Constant(to)),
                        to),
                    cases.ToArray());

                return(expr);
#endif
            }

            return(null);
        }
        public override void RecreateControls(bool constructor)
        {
            base.RecreateControls(constructor);

            m_scale = .9f;

            AddCaption("Render Global FX", Color.Yellow.ToVector4());
            AddShareFocusHint();

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f * m_scale;

            bool rendererIsDirectX11 = MySandboxGame.Config.GraphicsRenderer.ToString().Equals("DirectX 11");

            if (!rendererIsDirectX11)
            {
                AddLabel("FXAA (DX9)", Color.Yellow.ToVector4(), 1.2f);

                AddCheckBox("Enable FXAA", null, MemberHelper.GetMember(() => MyPostProcessAntiAlias.Enabled));
            }

            m_currentPosition.Y += 0.01f * m_scale;
            AddLabel("Fog", Color.Yellow.ToVector4(), 1.2f);

            var fogObj = MySector.FogProperties;

            if (MySector.MainCamera != null)
            {
                if (!rendererIsDirectX11)
                {
                    AddCheckBox("Enable fog", MySector.FogProperties, MemberHelper.GetMember(() => MySector.FogProperties.EnableFog));
                    AddSlider("Fog near distance", 1.0f, MySector.MainCamera.FarPlaneDistance, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogNear));
                    AddSlider("Fog far distance", 1.0f, MySector.MainCamera.FarPlaneDistance, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogFar));
                }
                AddSlider("Fog multiplier", 0.0f, 0.5f, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogMultiplier));
                AddSlider("Fog backlight multiplier", 0.0f, 5.0f, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogBacklightMultiplier));
                if (rendererIsDirectX11)
                {
                    AddSlider("Fog density", 0.0f, 0.2f, fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogDensity));
                }
                AddColor(new StringBuilder("Fog color"), fogObj, MemberHelper.GetMember(() => MySector.FogProperties.FogColor));
            }
        }
Esempio n. 41
0
        public override void RecreateControls(bool contructor)
        {
            Controls.Clear();

            m_scale = 0.7f;

            AddCaption(new System.Text.StringBuilder("Render HDR"), Color.Yellow.ToVector4());

            MyGuiControlLabel label = new MyGuiControlLabel(this, new Vector2(0.01f, -m_size.Value.Y / 2.0f + 0.07f), null, new System.Text.StringBuilder("(press ALT to share focus)"), Color.Yellow.ToVector4(), MyGuiConstants.LABEL_TEXT_SCALE * 0.7f,
                                                            MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_TOP);

            Controls.Add(label);

            m_currentPosition = -m_size.Value / 2.0f + new Vector2(0.02f, 0.10f);

            m_currentPosition.Y += 0.01f * m_scale;

            MyPostProcessHDR hdr = MyRender.GetPostProcess(MyPostProcessEnum.HDR) as MyPostProcessHDR;

            if (hdr != null)
            {
                AddLabel(new StringBuilder("HDR"), Color.Yellow.ToVector4(), 1.2f);

                AddCheckBox(new StringBuilder("Enable HDR and bloom"), null, MemberHelper.GetMember(() => MyPostProcessHDR.DebugHDRChecked));

                m_currentPosition.Y += 0.01f * m_scale;

                AddSlider(new StringBuilder("Exposure"), 0, 6.0f, hdr, MemberHelper.GetMember(() => hdr.Exposure));
                AddSlider(new StringBuilder("Bloom Threshold"), 0, 4.0f, hdr, MemberHelper.GetMember(() => hdr.Threshold));
                AddSlider(new StringBuilder("Bloom Intensity"), 0, 4.0f, hdr, MemberHelper.GetMember(() => hdr.BloomIntensity));
                AddSlider(new StringBuilder("Bloom Intensity for Background"), 0, 1.5f, hdr, MemberHelper.GetMember(() => hdr.BloomIntensityBackground));
                AddSlider(new StringBuilder("Vertical Blur Amount"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.VerticalBlurAmount));
                AddSlider(new StringBuilder("Horizontal Blur Amount"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.HorizontalBlurAmount));
                AddSlider(new StringBuilder("Number of blur passes (integer)"), 1.0f, 8.0f, hdr, MemberHelper.GetMember(() => hdr.NumberOfBlurPasses));

                m_currentPosition.Y += 0.01f * m_scale;
            }
        }
Esempio n. 42
0
        static DataParameter[] GetDataParameters(DataConnection dataConnection, object parameters)
        {
            if (parameters == null)
            {
                return(null);
            }

            if (parameters is DataParameter[])
            {
                return((DataParameter[])parameters);
            }

            if (parameters is DataParameter)
            {
                return new[] { (DataParameter)parameters }
            }
            ;

            Func <object, DataParameter[]> func;
            var type = parameters.GetType();
            var key  = new ParamKey(type, dataConnection.ID);

            if (!_parameterReaders.TryGetValue(key, out func))
            {
                var td = dataConnection.MappingSchema.GetEntityDescriptor(type);

                var p   = Expression.Parameter(typeof(object), "p");
                var obj = Expression.Parameter(parameters.GetType(), "obj");

                var expr = Expression.Lambda <Func <object, DataParameter[]> >(
                    Expression.Block(
                        new[] { obj },
                        new Expression[]
                {
                    Expression.Assign(obj, Expression.Convert(p, type)),
                    Expression.NewArrayInit(
                        typeof(DataParameter),
                        td.Columns.Select(m =>
                    {
                        if (m.MemberType == typeof(DataParameter))
                        {
                            var pobj = Expression.Parameter(typeof(DataParameter));

                            return(Expression.Block(
                                       new[] { pobj },
                                       new Expression[]
                            {
                                Expression.Assign(pobj, Expression.PropertyOrField(obj, m.MemberName)),
                                Expression.MemberInit(
                                    Expression.New(typeof(DataParameter)),
                                    Expression.Bind(
                                        _dataParameterName,
                                        Expression.Coalesce(
                                            Expression.MakeMemberAccess(pobj, _dataParameterName),
                                            Expression.Constant(m.ColumnName))),
                                    Expression.Bind(
                                        _dataParameterDataType,
                                        Expression.MakeMemberAccess(pobj, _dataParameterDataType)),
                                    Expression.Bind(
                                        _dataParameterValue,
                                        Expression.Convert(
                                            Expression.MakeMemberAccess(pobj, _dataParameterValue),
                                            typeof(object))))
                            }));
                        }

                        var memberType  = m.MemberType.ToNullableUnderlying();
                        var valueGetter = Expression.PropertyOrField(obj, m.MemberName) as Expression;
                        var mapper      = dataConnection.MappingSchema.GetConvertExpression(memberType, typeof(DataParameter), createDefault: false);

                        if (mapper != null)
                        {
                            return(Expression.Call(
                                       MemberHelper.MethodOf(() => PrepareDataParameter(null, null)),
                                       mapper.GetBody(valueGetter),
                                       Expression.Constant(m.ColumnName)));
                        }

                        if (memberType.IsEnumEx())
                        {
                            var mapType  = ConvertBuilder.GetDefaultMappingFromEnumType(dataConnection.MappingSchema, memberType);
                            var convExpr = dataConnection.MappingSchema.GetConvertExpression(m.MemberType, mapType);

                            memberType  = mapType;
                            valueGetter = convExpr.GetBody(valueGetter);
                        }

                        return((Expression)Expression.MemberInit(
                                   Expression.New(typeof(DataParameter)),
                                   Expression.Bind(
                                       _dataParameterName,
                                       Expression.Constant(m.ColumnName)),
                                   Expression.Bind(
                                       _dataParameterDataType,
                                       Expression.Constant(dataConnection.MappingSchema.GetDataType(memberType).DataType)),
                                   Expression.Bind(
                                       _dataParameterValue,
                                       Expression.Convert(valueGetter, typeof(object)))));
                    }))
                }
                        ),
                    p);

                _parameterReaders[key] = func = expr.Compile();
            }

            return(func(parameters));
        }
Esempio n. 43
0
 public override void TraverseChildren(IFieldReference fieldReference)
 {
     this.sourceEmitterOutput.Write(MemberHelper.GetMemberSignature(fieldReference, NameFormattingOptions.None));
 }
Esempio n. 44
0
 public static bool IsExplicitInterfaceMethod(this IMethodDefinition method)
 {
     return(MemberHelper.GetExplicitlyOverriddenMethods(method).Any());
 }