public QueryOver(QueryPartition partition, QueryOrder orderBy, params string[] columns)
 {
     // Initialize.
     Partition = partition;
     OrderBy   = orderBy;
     Columns   = columns.AsEnumerable();
 }
Example #2
0
        public string Build <T>(string endPoint, QueryOrder sorting = QueryOrder.Ascending, Expression <Func <T, object> > sortSelector = null, PropertyFilters <T> propertyFilters = null)
        {
            var dict = new Dictionary <string, string>();

            if (sorting == QueryOrder.Descending)
            {
                dict.Add("sortReverse", "true");
            }

            if (sortSelector != null)
            {
                dict.Add("sort", GetSortingKey(sortSelector));
            }

            if (propertyFilters != null)
            {
                var filters = propertyFilters.GetProperties().ToList();

                if (filters.Any())
                {
                    dict.Add("columns", string.Join(",", filters.Select(GetSortingKey).ToArray()));
                }
            }

            return(endPoint + (dict.Any() ? "?" + string.Join("&", dict.Select(x => x.Key + "=" + x.Value).ToArray()) : string.Empty));
        }
Example #3
0
    /// <summary>
    /// 微信订单查询接口XML参数整理
    /// </summary>
    /// <param name="queryorder">微信订单查询参数实例</param>
    /// <param name="key">密钥</param>
    /// <returns></returns>
    protected string getQueryOrderXml(QueryOrder queryorder, string key)
    {
        string return_string = string.Empty;
        SortedDictionary <string, string> sParams = new SortedDictionary <string, string>();

        sParams.Add("appid", queryorder.appid);
        sParams.Add("mch_id", queryorder.mch_id);
        sParams.Add("transaction_id", queryorder.transaction_id);
        sParams.Add("out_trade_no", queryorder.out_trade_no);
        sParams.Add("nonce_str", queryorder.nonce_str);
        queryorder.sign = getsign(sParams, key);
        sParams.Add("sign", queryorder.sign);

        //拼接成XML请求数据
        StringBuilder sbPay = new StringBuilder();

        foreach (KeyValuePair <string, string> k in sParams)
        {
            if (k.Key == "attach" || k.Key == "body" || k.Key == "sign")
            {
                sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">");
            }
            else
            {
                sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");
            }
        }
        return_string = string.Format("<xml>{0}</xml>", sbPay.ToString().TrimEnd(','));
        return(return_string);
    }
Example #4
0
        /// <summary>
        /// Returns an OrderBy fragment
        /// </summary>
        /// <param name="type">The type to generate the clause for.</param>
        /// <param name="order">The order to render</param>
        /// <returns>The SQL order-by fragment</returns>
        public override string OrderBy(Type type, QueryOrder order)
        {
            var map = GetTypeMap(type);

            if (order == null)
            {
                return(string.Empty);
            }

            var o  = order;
            var sb = new System.Text.StringBuilder();

            while (o != null)
            {
                if (sb.Length != 0)
                {
                    sb.Append(", ");
                }
                sb.Append(map.QuotedColumnName(o.Property));
                sb.Append(o.Descending ? " DESC" : " ASC");
                o = o.Next;
            }

            if (sb.Length == 0)
            {
                return(string.Empty);
            }

            return("ORDER BY " + sb.ToString());
        }
Example #5
0
 public Query(string term, int page, int category, QueryOrder order)
 {
     Category = category;
     Order    = order;
     Page     = page;
     Term     = term;
 }
Example #6
0
        /// <summary>
        /// 获取微信订单明细
        /// </summary>
        public static OrderDetail getOrderDetail(QueryOrder queryorder, string key)
        {
            string post_data    = getQueryOrderXml(queryorder, key);
            string request_data = PostXmlToUrl(OrderQueryUrl, post_data);

            return(GetOrderDetialFromXML(request_data));
        }
Example #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //EneryOrderList list = new EneryOrderList();
            //list.TotalEneryOrderList = new List<EneryOrder>();
            //list.TotalEneryOrderList.Add(new EneryOrder() { OrderNum = 1, BuildingName = "新城科技园1号楼", EneryValue = 1230.22 });
            //list.TotalEneryOrderList.Add(
            //    new EneryOrder() { OrderNum = 2, BuildingName = "新城科技园2号楼", EneryValue = 2230.22 }
            //    );
            //list.TotalEneryOrderList.Add(
            //    new EneryOrder() { OrderNum = 3, BuildingName = "新城科技园3号楼", EneryValue = 3230.22 }
            //    );
            //list.AreaEneryOrderList = new List<EneryOrder>();
            //list.AreaEneryOrderList.Add(new EneryOrder() { OrderNum = 1, BuildingName = "新城科技园6号楼", EneryValue = 130.22 });
            //list.AreaEneryOrderList.Add(
            //    new EneryOrder() { OrderNum = 2, BuildingName = "新城科技园7号楼", EneryValue = 230.22 }
            //    );
            //list.AreaEneryOrderList.Add(
            //    new EneryOrder() { OrderNum = 3, BuildingName = "新城科技园8号楼", EneryValue = 330.22 }
            //    );

            NTS.WEB.DataContact.QueryOrder query = new QueryOrder();
            query.ItemCode  = "00000";
            query.EndTime   = DateTime.Parse("2013-11-30");
            query.ObjectNum = new List <int>()
            {
                889, 1
            };
            query.OrderWay    = "asc";
            query.PageCurrent = 1;
            query.PageSize    = 10;
            query.Particle    = "all";
            query.StartTime   = DateTime.Parse("2013-10-1");
            Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(query));
        }
Example #8
0
        private static void TestKeyOrder <T>(QueryOrder <T> o, DatastoreKey[] datastoreKeys, DatastoreKey[] expected)
        {
            var e   = datastoreKeys.Select(key => new DatastoreEntry <T>(key, default(T))).ToArray();
            var res = DatastoreResults <T> .WithEntries(new DatastoreQuery <T>(), e).NaiveOrder(o);

            var actualE = res.Rest();
            var actual  = actualE.Select(x => x.DatastoreKey).ToArray();

            Assert.That(actual, Is.EqualTo(expected));
        }
        public SmartPlaylistSource(string name, QueryNode condition, QueryOrder order, QueryLimit limit, IntegerQueryValue limit_value, bool hiddenWhenEmpty, PrimarySource parent)
            : this(name, parent)
        {
            ConditionTree     = condition;
            QueryOrder        = order;
            Limit             = limit;
            LimitValue        = limit_value;
            IsHiddenWhenEmpty = hiddenWhenEmpty;

            UpdateDependencies();
        }
        public SmartPlaylistSource(string name, QueryNode condition, QueryOrder order, QueryLimit limit, IntegerQueryValue limit_value, PrimarySource parent)
            : this(name, parent)
        {
            ConditionTree = condition;
            QueryOrder    = order;
            Limit         = limit;
            LimitValue    = limit_value;

            SetProperties();
            UpdateDependencies();
        }
 public SmartPlaylistDefinition(string name, string description, string condition,
                                int limit_number, QueryLimit limit, QueryOrder order)
 {
     Name        = name;
     Description = description;
     Condition   = condition;
     LimitNumber = new IntegerQueryValue();
     LimitNumber.SetValue(limit_number);
     Limit = limit;
     Order = order;
 }
Example #12
0
        /// <summary>
        /// Parses an order string
        /// </summary>
        /// <param name="map">The table map to yse</param>
        /// <param name="order">The order string</param>
        /// <returns>The parsed order</returns>
        public static QueryOrder ParseOrder(TableMapping map, string order)
        {
            QueryOrder res = null;

            foreach (var n in ParseOrderList(map, order).Reverse())
            {
                res = new QueryOrder(n, res);
            }

            return(res);
        }
Example #13
0
        /// <summary>
        /// 支付宝查询
        /// </summary>
        /// <param name="query">查询实体</param>
        /// <param name="queryBack">查询返回寮体</param>
        /// <param name="message">错误信息</param>
        /// <returns></returns>
        internal bool Query(QueryOrder query, out QueryOrderBack queryBack, out string message)
        {
            _log.Info("支付宝查询 QueryOrder 开始");
            var queryRequst = new AlipayTradeQueryRequest();

            queryRequst.BizContent = Newtonsoft.Json.JsonConvert.SerializeObject(query, new JsonSerializerSettings()
            {
                DefaultValueHandling = DefaultValueHandling.Ignore
            }).ToLower();
            var queryResponse = client.Execute(queryRequst);

            if (queryResponse.Code == "10000")
            {
                _log.Info("支付宝查询成功!");
                queryBack = new QueryOrderBack()
                {
                    Buyer_Logon_Id        = queryResponse.BuyerLogonId,
                    Buyer_Pay_Amount      = Convert.ToDecimal(queryResponse.BuyerPayAmount),
                    Buyer_User_Id         = queryResponse.BuyerUserId,
                    Code                  = queryResponse.Code,
                    Discount_Goods_Detail = queryResponse.DiscountGoodsDetail,
                    Fund_Bill_List        = GetTradeFundBills(queryResponse.FundBillList),
                    Industry_Sepc_Detail  = queryResponse.IndustrySepcDetail,
                    Invoice_Amount        = Convert.ToDecimal(queryResponse.InvoiceAmount),
                    Msg                 = queryResponse.Msg,
                    Out_Trade_No        = queryResponse.OutTradeNo,
                    Point_Amount        = Convert.ToDecimal(queryResponse.PointAmount),
                    Receipt_Amount      = Convert.ToDecimal(queryResponse.ReceiptAmount),
                    Store_Name          = queryResponse.StoreName,
                    Sub_Code            = queryResponse.SubCode,
                    Sub_Msg             = queryResponse.SubMsg,
                    Total_Amount        = queryResponse.TotalAmount,
                    Trade_No            = queryResponse.TradeNo,
                    Voucher_Detail_List = GetVoucherDetails(queryResponse.VoucherDetailList),
                    Alipay_Store_ID     = queryResponse.AlipayStoreId,
                    Send_Pay_Date       = Convert.ToDateTime(queryResponse.SendPayDate),
                    Store_ID            = queryResponse.StoreId,
                    Terminal_ID         = queryResponse.TerminalId,
                    Trade_Status        = queryResponse.TradeStatus
                };
                message = "";
                return(true);
            }
            else
            {
                queryBack = null;
                message   = $"{ queryResponse.Msg},{queryResponse.SubMsg}";
                _log.Error($"支付宝查询失败:{message}");
                return(false);
            }
        }
Example #14
0
        /// <summary>
        /// Gets a list of cards specified by a query.
        /// If the query array is null or the lenght is 0 then all cards are returned.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="orderBy">The order by.</param>
        /// <param name="orderDir">The order dir.</param>
        /// <param name="number">The number of cards to return (0 for all).</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev03, 2007-09-04</remarks>
        /// <remarks>Documented by Dev03, 2009-01-13</remarks>
        public List <ICard> GetCards(QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
        {
            List <ICard> cards        = connector.GetCardsByQuery(LearningModuleId, query, orderBy, orderDir, number);
            List <ICard> visibleCards = new List <ICard>();

            foreach (ICard card in cards)
            {
                if (this.HasPermission(PermissionTypes.Visible))
                {
                    visibleCards.Add(card);
                }
            }
            return(visibleCards);
        }
Example #15
0
        protected override void GenerateOrderSkipTake(QueryOrder order, int?skip, int?take, ref CharWriteBuffer sb, ParameterDependant rootDependant, MemberContext operationContext)
        {
            if (order?.OrderExpressions.Length > 0)
            {
                sb.Write("ORDER BY");
                var hasOrder = false;
                foreach (var orderExp in order.OrderExpressions)
                {
                    var context = new BuilderContext(rootDependant, operationContext);
                    if (hasOrder)
                    {
                        sb.Write(',');
                    }
                    else
                    {
                        hasOrder = true;
                    }
                    ConvertToSql(orderExp.Expression, ref sb, context);
                    if (orderExp.Descending)
                    {
                        sb.Write("DESC");
                    }
                }
                AppendLineBreak(ref sb);
            }
            else if (skip.HasValue || take.HasValue)
            {
                sb.Write("ORDER BY CURRENT_TIMESTAMP");
                AppendLineBreak(ref sb);
            }

            if (skip.HasValue || take.HasValue)
            {
                sb.Write("OFFSET ");
                sb.Write(skip ?? 0);
                sb.Write(" ROWS");
                AppendLineBreak(ref sb);
                if (take.HasValue)
                {
                    sb.Write("FETCH NEXT ");
                    sb.Write(take.Value);
                    sb.Write(" ROWS ONLY");
                    AppendLineBreak(ref sb);
                }
            }
        }
Example #16
0
        public static HttpRequestArgs GetHttpRequestArgs(string userName, string url, string token, string userId, string GD)
        {
            QueryOrder queryOrder = new QueryOrder()
            {
                pageIndex       = 1,
                pageSize        = 40,
                sidx            = "",
                sord            = "desc",
                currentNode     = "RD",
                currentUserCode = userName
            };

            HttpRequestArgs httpRequestArgs = GetHttpRequestArgs(url + "?problemCode=" + GD, queryOrder);

            httpRequestArgs.Heads = new Dictionary <string, string>();
            httpRequestArgs.Heads.Add("userId", token);
            httpRequestArgs.Heads.Add("X-Token", userId);
            return(httpRequestArgs);
        }
 public JsonResult QueryOrder(string Out_Trade_No)
 {
     try
     {
         _log.Info("查询交易");
         QueryOrderBack queryBack;
         string         message;
         var            query = new QueryOrder()
         {
             Out_Trade_No = Out_Trade_No
         };
         var result = alipayHandle.Query(query, out queryBack, out message);
         return(BuildJsonResult(queryBack, result, message));
     }
     catch (Exception exc)
     {
         _log.Fatal(exc, $"查询交易:{exc.Message}");
         return(BuildJsonResult <QueryOrderBack>(null, false, exc.Message));
     }
 }
Example #18
0
 public dynamic QueryPayResult(string orderNo)
 {
     try
     {
         _log.Info("查询交易结果");
         QueryOrderBack queryOrderBack;
         string         message;
         var            queryOrder = new QueryOrder()
         {
             Out_Trade_No = orderNo
         };
         var result = wxHandle.QueryOrder(queryOrder, out queryOrderBack, out message);
         return(BuildJsonResult(queryOrderBack, result, message));
     }
     catch (Exception exc)
     {
         _log.Fatal(exc, $"查询交易结果:{exc.Message}");
         return(BuildJsonResult <QueryOrderBack>(null, false, exc.Message));
     }
 }
Example #19
0
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public LexResponse FunctionHandler(LexEvent request, ILambdaContext context)
        {
            LambdaLogger.Log(JsonSerializer.Serialize(request));

            if (request.SessionAttributes == null || !request.SessionAttributes.ContainsKey("Initialized"))
            {
                var validationResult = new InitialValidation(request).HandleJob();
                if (validationResult.DialogAction.FulfillmentState == FulfillmentState.Failed.ToString())
                {
                    return(validationResult);
                }
            }

            IIntentHandler validator = null;

            switch (request.CurrentIntent.Name)
            {
            case "OrderPizza":
                switch (request.InvocationSource)
                {
                case "DialogCodeHook":
                    validator = new OrderPizzaIntentValidation(request);
                    break;

                case "FulfillmentCodeHook":
                    validator = new SaveOrder(request);
                    break;
                }

                break;

            case "QueryOrder":
                validator = new QueryOrder(request);
                break;

            default:
                return(new HandlerBase(request).DelegateToLex());
            }

            return(validator?.HandleJob());
        }
Example #20
0
 public void TestOrderByKey()
 {
     TestKeyOrder(QueryOrder <object> .ByKeyAscending(), FilterTests.SampleDatastoreKeys, new[]
     {
         new DatastoreKey("/a"),
         new DatastoreKey("/ab"),
         new DatastoreKey("/ab/c"),
         new DatastoreKey("/ab/cd"),
         new DatastoreKey("/abce"),
         new DatastoreKey("/abcf")
     });
     TestKeyOrder(QueryOrder <object> .ByKeyDescending(), FilterTests.SampleDatastoreKeys, new[]
     {
         new DatastoreKey("/abcf"),
         new DatastoreKey("/abce"),
         new DatastoreKey("/ab/cd"),
         new DatastoreKey("/ab/c"),
         new DatastoreKey("/ab"),
         new DatastoreKey("/a")
     });
 }
Example #21
0
        /// <summary>
        /// Gets the selection of the form controls.
        /// </summary>
        /// <param name="boxes">The boxes.</param>
        /// <param name="cardorder">The cardorder.</param>
        /// <param name="cardorderdir">The cardorderdir.</param>
        /// <param name="cardstate">The cardstate.</param>
        /// <remarks>Documented by Dev02, 2007-11-26</remarks>
        private void GetGUISelection(out List <int> boxes, out QueryOrder cardorder, out QueryOrderDir cardorderdir, out QueryCardState cardstate)
        {
            boxes = new System.Collections.Generic.List <int>();
            if (checkBoxAllBoxes.Checked)
            {
                for (int index = 0; index <= Dictionary.Boxes.Count; index++)
                {
                    boxes.Add(index);
                }
            }
            else
            {
                foreach (int index in listViewBoxesSelection.CheckedIndices)
                {
                    boxes.Add(index);
                }
            }

            cardorder    = QueryOrdersEnum[comboBoxCardOrder.SelectedIndex < 0 ? 0 : comboBoxCardOrder.SelectedIndex];
            cardorderdir = cbReverseOrder.Checked ? QueryOrderDir.Descending : QueryOrderDir.Ascending;
            cardstate    = QueryCardState.Active;
        }
Example #22
0
        // Type Initializer
        static BansheeQuery()
        {
            // Translators: noun
            BpmField.ShortLabel       = Catalog.GetString("BPM");
            SkipCountField.ShortLabel = Catalog.GetString("Skips");
            PlayCountField.ShortLabel = Catalog.GetString("Plays");

            default_sort         = String.Format(default_sort_template, "");
            default_sort_by_year = String.Format(default_sort_template, YearField.Column + " ASC, ");

            RandomOrder = CreateRandomQueryOrder();

            Orders = new QueryOrder [] {
                RandomOrder,
                CreateQueryOrder("Album", asc, Catalog.GetString("Album"), AlbumField),
                CreateQueryOrder("Artist", asc, Catalog.GetString("Artist"), ArtistField),
                // Translators: noun
                CreateQueryOrder("Title", asc, Catalog.GetString("Name"), TitleField),
                CreateQueryOrder("Genre", asc, Catalog.GetString("Genre"), GenreField),
                null,
                CreateQueryOrder("Rating", desc, Catalog.GetString("Highest Rating"), RatingField),
                CreateQueryOrder("Rating", asc, Catalog.GetString("Lowest Rating"), RatingField),
                null,
                CreateQueryOrder("Score", desc, Catalog.GetString("Highest Score"), ScoreField),
                CreateQueryOrder("Score", asc, Catalog.GetString("Lowest Score"), ScoreField),
                null,
                CreateQueryOrder("PlayCount", desc, Catalog.GetString("Most Often Played"), PlayCountField),
                CreateQueryOrder("PlayCount", asc, Catalog.GetString("Least Often Played"), PlayCountField),
                null,
                CreateQueryOrder("LastPlayedStamp", desc, Catalog.GetString("Most Recently Played"), LastPlayedField),
                CreateQueryOrder("LastPlayedStamp", asc, Catalog.GetString("Least Recently Played"), LastPlayedField),
                null,
                CreateQueryOrder("DateAddedStamp", desc, Catalog.GetString("Most Recently Added"), DateAddedField),
                CreateQueryOrder("DateAddedStamp", asc, Catalog.GetString("Least Recently Added"), DateAddedField)
            };
        }
Example #23
0
        private void Migrate(int dbid, string Name, string Condition, string OrderBy, string LimitNumber, string LimitCriterion)
        {
            if (OrderBy != null && OrderBy != String.Empty)
            {
                QueryOrder order = order_hash [OrderBy];
                OrderBy = order.Name;
            }

            LimitCriterion = criteria [Convert.ToInt32(LimitCriterion)];
            string ConditionXml = ParseCondition(Condition);

            ServiceManager.DbConnection.Execute(new HyenaSqliteCommand(@"
                UPDATE CoreSmartPlaylists
                    SET Name = ?,
                        Condition = ?,
                        OrderBy = ?,
                        LimitNumber = ?,
                        LimitCriterion = ?
                    WHERE SmartPlaylistID = ?",
                                                                       Name, ConditionXml, OrderBy, LimitNumber, LimitCriterion, dbid
                                                                       ));

            Log.Debug(String.Format("Migrated Smart Playlist {0}", Name));
        }
Example #24
0
 public Query(string term, int page, QueryOrder order)
     : this(term, page, TorrentCategory.All, order)
 {
 }
Example #25
0
 public TemporalQueryNewest(DateTime?temporalDateFrom, DateTime?temporalDateTo, ulong?temporalNumberFrom, ulong?temporalNumberTo, Expression <Func <TModel, bool> > where, QueryOrder <TModel> order, Graph <TModel> graph)
     : base(where, order, graph)
 {
     this.TemporalOrder      = Repository.TemporalOrder.Newest;
     this.TemporalDateFrom   = temporalDateFrom;
     this.TemporalDateTo     = temporalDateTo;
     this.TemporalNumberFrom = temporalNumberFrom;
     this.TemporalNumberTo   = temporalNumberTo;
 }
Example #26
0
        protected override IQueryable <Post> Order(IQueryable <Post> items, bool isFirst, QueryOrder <PostSortType> order)
        {
            switch (order.OrderType)
            {
            case PostSortType.ChannelTitle:
                return(items.OrderWithDirectionBy(isFirst, order.Direction, x => x.Channel.Title));

            case PostSortType.PublishDate:
                return(items.OrderWithDirectionBy(isFirst, order.Direction, x => x.CreatedAt));
            }

            throw new ArgumentOutOfRangeException(nameof(order.OrderType));
        }
Example #27
0
File: Print.cs Project: hmehr/OSS
        /// <summary>
        /// Gets the selection of the form controls.
        /// </summary>
        /// <param name="boxes">The boxes.</param>
        /// <param name="cardorder">The cardorder.</param>
        /// <param name="cardorderdir">The cardorderdir.</param>
        /// <param name="cardstate">The cardstate.</param>
        /// <remarks>Documented by Dev02, 2007-11-26</remarks>
        private void GetGUISelection(out List<int> boxes, out QueryOrder cardorder, out QueryOrderDir cardorderdir, out QueryCardState cardstate)
        {
            boxes = new System.Collections.Generic.List<int>();
            if (checkBoxAllBoxes.Checked)
            {
                for (int index = 0; index <= Dictionary.Boxes.Count; index++)
                    boxes.Add(index);
            }
            else
            {
                foreach (int index in listViewBoxesSelection.CheckedIndices)
                    boxes.Add(index);
            }

            cardorder = QueryOrdersEnum[comboBoxCardOrder.SelectedIndex < 0 ? 0 : comboBoxCardOrder.SelectedIndex];
            cardorderdir = cbReverseOrder.Checked ? QueryOrderDir.Descending : QueryOrderDir.Ascending;
            cardstate = QueryCardState.Active;
        }
Example #28
0
 public TemporalQueryNewest(ulong?temporalNumberFrom, ulong?temporalNumberTo, Expression <Func <TModel, bool> > where, QueryOrder <TModel> order, Graph <TModel> graph) : this(null, null, temporalNumberFrom, temporalNumberTo, where, order, graph)
 {
 }
Example #29
0
        /// <summary>
        /// Gets the cards.
        /// </summary>
        /// <param name="query">The query.</param>
        /// <param name="orderBy">The order type.</param>
        /// <param name="orderDir">The order direction. The orderDir has no effect if <see cref="T:MLifter.DAL.QueryOrder">orderBy</see> is Random or None.</param>
        /// <param name="number">The number cards to return (0 for all).</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev03, 2007-08-30</remarks>
        public List<ICard> GetCards(QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
        {
            //filter the cards
            List<ICard> cards = new List<ICard>();
            if ((query != null) && (query.Length != 0))
            {
                foreach (QueryStruct qry in query)
                {
                    List<ICard> foundCards = m_cards.FindAll(
                        delegate(ICard card)
                        {
                            bool isMatch = true;
                            if (qry.BoxId >= 0) isMatch = isMatch && (qry.BoxId == card.Box);
                            if (qry.ChapterId >= 0) isMatch = isMatch && (qry.ChapterId == card.Chapter);
                            switch (qry.CardState)
                            {
                                case QueryCardState.Active:
                                    isMatch = isMatch && (card.Box >= 0);
                                    break;
                                case QueryCardState.Inactive:
                                    isMatch = isMatch && (card.Box < 0);
                                    break;
                                case QueryCardState.All:
                                default:
                                    break;
                            }
                            return isMatch;
                        });
                    cards.AddRange(foundCards);
                }
            }
            else
            {
                cards.AddRange(m_cards);    //add all cards
            }

            //sort the cards
            if (orderBy != QueryOrder.None)
            {
                if (orderBy == QueryOrder.Random)
                {
                    foreach(ICard card in cards)
                        ((XmlCard)card).Random = m_oDictionary.GetRandomNumber();
                }
                cards.Sort(
                    delegate(ICard left, ICard right)
                    {
                        int result;
                        switch (orderBy)
                        {
                            case QueryOrder.Id:
                                result = Comparer<int>.Default.Compare(left.Id, right.Id);
                                break;
                            case QueryOrder.Chapter:
                                result = Comparer<int>.Default.Compare(left.Chapter, right.Chapter);
                                break;
                            case QueryOrder.Box:
                                result = Comparer<int>.Default.Compare(left.Box, right.Box);
                                break;
                            case QueryOrder.Answer:
                                result = Comparer<string>.Default.Compare(left.Answer.ToString(), right.Answer.ToString());
                                break;
                            case QueryOrder.Question:
                                result = Comparer<string>.Default.Compare(left.Question.ToString(), right.Question.ToString());
                                break;
                            case QueryOrder.Timestamp:
                                result = Comparer<DateTime>.Default.Compare(left.Timestamp, right.Timestamp);
                                break;
                            case QueryOrder.Random:
                                result = Comparer<int>.Default.Compare(((XmlCard)left).Random, ((XmlCard)right).Random);
                                break;
                            default:
                                result = 0;
                                break;
                        }
                        return result;
                    });
            }

            if ((orderBy != QueryOrder.Random) && (orderBy != QueryOrder.None))
            {
                if (orderDir == QueryOrderDir.Descending)
                {
                    cards.Reverse();
                }
            }

            if ((number > 0) && (number < cards.Count))
            {
                return cards.GetRange(0, number); ;
            }
            else
            {
                return cards;
            }
        }
Example #30
0
 /// <summary>
 /// Gets the selection of the controls on the wizard page
 /// </summary>
 /// <param name="cardorder">The cardorder.</param>
 /// <param name="cardorderdir">The cardorderdir.</param>
 /// <remarks>Documented by Dev02, 2008-01-03</remarks>
 private void GetSelection(out QueryOrder cardorder, out QueryOrderDir cardorderdir)
 {
     cardorder = QueryOrdersEnum[comboBoxSorting.SelectedIndex < 0 ? 0 : comboBoxSorting.SelectedIndex];
     cardorderdir = checkBoxReverseOrder.Checked ? QueryOrderDir.Descending : QueryOrderDir.Ascending;
 }
Example #31
0
 /// <summary>
 /// Gets a list of cards specified by a query.
 /// If the query array is null or the lenght is 0 then all cards are returned.
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="orderBy">The order by.</param>
 /// <param name="orderDir">The order dir.</param>
 /// <param name="number">The number of cards to return (0 for all).</param>
 /// <returns></returns>
 /// <remarks>Documented by Dev03, 2007-09-04</remarks>
 /// <remarks>Documented by Dev03, 2009-01-13</remarks>
 public List<ICard> GetCards(QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
 {
     List<ICard> cards = connector.GetCardsByQuery(LearningModuleId, query, orderBy, orderDir, number);
     List<ICard> visibleCards = new List<ICard>();
     foreach (ICard card in cards)
         if (this.HasPermission(PermissionTypes.Visible))
             visibleCards.Add(card);
     return visibleCards;
 }
Example #32
0
        public List<ICard> GetCardsByQuery(int id, QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
        {
            using (NpgsqlConnection con = PostgreSQLConn.CreateConnection(Parent.CurrentUser))
            {
                using (NpgsqlCommand cmd = con.CreateCommand())
                {
                    //create entries in UserCardState for all cards in lm
                    cmd.CommandText = "SELECT \"FillUpUserCardState\"(:userid, :lmid)";
                    cmd.Parameters.Add("userid", Parent.CurrentUser.Id);
                    cmd.Parameters.Add("lmid", id);
                    PostgreSQLConn.ExecuteNonQuery(cmd, Parent.CurrentUser);
                }
                using (NpgsqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = "SELECT \"Cards\".id as cid FROM \"Cards\", \"UserCardState\"";

                    List<string> conditions = new List<string>();
                    foreach (QueryStruct q in query)
                    {
                        string cond = " \"Cards\".lm_id=:lmid AND \"Cards\".id=\"UserCardState\".cards_id AND \"UserCardState\".user_id=:uid";
                        if (q.ChapterId != -1)
                            cond += string.Format(" AND \"Cards\".chapters_id={0}", q.ChapterId);
                        if (q.BoxId != -1)
                            cond += string.Format(" AND \"UserCardState\".box={0}", q.BoxId);
                        switch (q.CardState)
                        {
                            case QueryCardState.Active:
                                cond += " AND \"UserCardState\".active=true";
                                break;
                            case QueryCardState.Inactive:
                                cond += " AND \"UserCardState\".active=false";
                                break;
                            default:
                                break;
                        }

                        conditions.Add(cond);
                    }
                    if (conditions.Count > 0)
                    {
                        cmd.CommandText += " WHERE " + conditions[0];
                        conditions.RemoveAt(0);
                        foreach (string cond in conditions)
                            cmd.CommandText += " OR " + cond;
                    }
                    else
                        cmd.CommandText += " WHERE \"Cards\".id=\"UserCardState\".cards_id AND \"UserCardState\".user_id=:uid AND \"Cards\".lm_id=:lmid";

                    switch (orderBy)
                    {
                        case QueryOrder.Id:
                            cmd.CommandText += " ORDER BY \"Cards\".id";
                            break;
                        case QueryOrder.Chapter:
                            cmd.CommandText += " ORDER BY \"Cards\".chapter_id";
                            break;
                        case QueryOrder.Random:
                            cmd.CommandText += " ORDER BY random()";
                            break;
                        case QueryOrder.Timestamp:
                            cmd.CommandText += " ORDER BY \"UserCardState\".timestamp";
                            break;
                        default:
                            break;
                    }
                    if (orderBy == QueryOrder.Chapter || orderBy == QueryOrder.Id)
                        switch (orderDir)
                        {
                            case QueryOrderDir.Ascending:
                                cmd.CommandText += " ASC";
                                break;
                            case QueryOrderDir.Descending:
                                cmd.CommandText += " DESC";
                                break;
                        }
                    if (orderBy == QueryOrder.Timestamp)
                        cmd.CommandText += ", \"Cards\".id " + (orderDir == QueryOrderDir.Ascending ? "ASC" : "DESC");

                    cmd.CommandText = string.Format("SELECT cid FROM ({0}) as cards {1}",
                        cmd.CommandText, number > 0 ? "LIMIT " + number : string.Empty);
                    cmd.Parameters.Add("lmid", id);
                    cmd.Parameters.Add("uid", Parent.CurrentUser.Id);

                    NpgsqlDataReader reader = PostgreSQLConn.ExecuteReader(cmd, Parent.CurrentUser);

                    List<ICard> cards = new List<ICard>();
                    while (reader.Read())
                        cards.Add(new DbCard(Convert.ToInt32(reader["cid"]), false, Parent));
                    return cards;
                }
            }
        }
Example #33
0
        /// <summary>
        /// 撤销订单
        /// </summary>
        public static ReverseRes ReverseOrder(QueryOrder order, string key, string certpath, string certpwd)
        {
            var url = "https://api.mch.weixin.qq.com/secapi/pay/reverse";

            return(PayRequest <ReverseRes>(order, key, url, certpath, certpwd));
        }
Example #34
0
 /// <summary>
 /// Returns an OrderBy fragment
 /// </summary>
 /// <param name="type">The type to generate the clause for.</param>
 /// <param name="order">The order to render</param>
 /// <returns>The SQL order-by fragment</returns>
 public abstract string OrderBy(Type type, QueryOrder order);
        /// <summary>
        /// Gets the cards by query.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="query">The query.</param>
        /// <param name="orderBy">The order by.</param>
        /// <param name="orderDir">The order dir.</param>
        /// <param name="number">The number.</param>
        /// <returns></returns>
        /// <remarks>Documented by Dev08, 2009-01-19</remarks>
        public List<ICard> GetCardsByQuery(int id, QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
        {
            List<int> ids = new List<int>();
            if (cardStateCount < 0)
            {
                int cardCount;
                using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
                {
                    //create entries in UserCardState for all cards in lm
                    cmd.CommandText = "SELECT count(*) FROM \"LearningModules_Cards\" WHERE lm_id=@lmid";
                    cmd.Parameters.Add("@lmid", id);
                    cardCount = MSSQLCEConn.ExecuteScalar<int>(cmd).Value;
                }
                using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
                {
                    //create entries in UserCardState for all cards in lm
                    cmd.CommandText = "SELECT count(*) FROM UserCardState CS INNER JOIN Cards C ON C.ID = CS.cards_id WHERE CS.user_id=@userid AND C.lm_id=@lmid";
                    cmd.Parameters.Add("@userid", Parent.CurrentUser.Id);
                    cmd.Parameters.Add("@lmid", id);
                    cardStateCount = MSSQLCEConn.ExecuteScalar<int>(cmd).Value;
                }
                if (cardCount != cardStateCount)
                {
                    using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
                    {
                        cmd.CommandText = "INSERT INTO UserCardState (user_id, cards_id, box, active) " +
                            String.Format("SELECT {0}, C.id, 0, 1 FROM Cards C LEFT OUTER JOIN (SELECT * FROM UserCardState WHERE user_id = {0}) CS ON C.ID = CS.cards_id WHERE CS.cards_id IS NULL AND C.lm_id=@lmid", Parent.CurrentUser.Id);
                        cmd.Parameters.Add("@lmid", id);
                        MSSQLCEConn.ExecuteNonQuery(cmd);
                    }
                }
            }

            using (SqlCeCommand cmd = MSSQLCEConn.CreateCommand(Parent.CurrentUser))
            {
                cmd.CommandText = string.Format("SELECT {0}C.id as cid FROM Cards C INNER JOIN UserCardState CS ON C.id=CS.cards_id", number > 0 ? "TOP (" + number + ") " : string.Empty);

                List<string> conditions = new List<string>();
                foreach (QueryStruct q in query)
                {
                    string cond = "CS.user_id=@uid";
                    if (q.ChapterId != -1)
                        cond += string.Format(" AND C.chapters_id={0}", q.ChapterId);
                    if (q.BoxId != -1)
                        cond += string.Format(" AND CS.box={0}", q.BoxId);
                    switch (q.CardState)
                    {
                        case QueryCardState.Active:
                            cond += " AND CS.active=1";
                            break;
                        case QueryCardState.Inactive:
                            cond += " AND CS.active=0";
                            break;
                        default:
                            break;
                    }

                    conditions.Add(cond);
                }
                cmd.CommandText += " WHERE C.lm_id=@lmid AND (";
                if (conditions.Count > 0)
                {
                    cmd.CommandText += " " + conditions[0];
                    conditions.RemoveAt(0);
                    foreach (string cond in conditions)
                        cmd.CommandText += " OR " + cond;
                }
                else
                    cmd.CommandText += " 1=1";
                cmd.CommandText += ")";

                switch (orderBy)
                {
                    case QueryOrder.Id:
                        cmd.CommandText += " ORDER BY C.id";
                        break;
                    case QueryOrder.Chapter:
                        cmd.CommandText += " ORDER BY C.chapters_id";
                        break;
                    case QueryOrder.Random:
                        cmd.CommandText += " ORDER BY newid()";
                        break;
                    case QueryOrder.Timestamp:
                        cmd.CommandText += " ORDER BY CS.timestamp";
                        break;
                    default:
                        break;
                }
                if (orderBy == QueryOrder.Chapter || orderBy == QueryOrder.Id)
                    switch (orderDir)
                    {
                        case QueryOrderDir.Ascending:
                            cmd.CommandText += " ASC";
                            break;
                        case QueryOrderDir.Descending:
                            cmd.CommandText += " DESC";
                            break;
                    }
                if (orderBy == QueryOrder.Timestamp)
                    cmd.CommandText += ", C.id " + (orderDir == QueryOrderDir.Ascending ? "ASC" : "DESC");

                cmd.Parameters.Add("@lmid", id);
                cmd.Parameters.Add("@uid", Parent.CurrentUser.Id);

                SqlCeDataReader reader = MSSQLCEConn.ExecuteReader(cmd);
                List<ICard> cards = new List<ICard>();
                //Performance: 180ms!!!
                while (reader.Read())
                    cards.Add(new DbCard(Convert.ToInt32(reader["cid"]), false, Parent));
                reader.Close();

                return cards;
            }
        }
Example #36
0
        /// <summary>
        /// 查询订单
        /// </summary>
        /// <param name="orderQuery">订单查询实体</param>
        /// <param name="key">支付密钥</param>
        /// <returns></returns>
        public static OrderQueryRes QueryOrder(QueryOrder orderQuery, string key)
        {
            var url = "https://api.mch.weixin.qq.com/pay/orderquery";

            return(PayRequest <OrderQueryRes>(orderQuery, key, url));
        }
Example #37
0
 /// <summary>
 /// Gets a list of cards specified by a query.
 /// If the query array is null or the lenght is 0 then all cards are returned.
 /// </summary>
 /// <param name="query">The query.</param>
 /// <param name="orderBy">The order by.</param>
 /// <param name="orderDir">The order dir.</param>
 /// <param name="number">The number of cards to return (0 for all).</param>
 /// <returns></returns>
 /// <remarks>Documented by Dev03, 2007-09-04</remarks>
 /// <remarks>Documented by Dev03, 2009-03-23</remarks>
 public List<ICard> GetCards(QueryStruct[] query, QueryOrder orderBy, QueryOrderDir orderDir, int number)
 {
     throw new NotImplementedException();
 }