Пример #1
0
        /// <summary>
        /// Queries the push message status.
        /// JPush has official limitation. One query support no more than 100 IDs. So if the input has more than 100 IDs, only the first 100 IDs would be queried.
        /// </summary>
        /// <param name="messageIdCollection">The message unique identifier collection.</param>
        /// <returns>List{PushMessageStatus}.</returns>
        /// <exception cref="System.InvalidOperationException">Failed to QueryPushMessageStatus.</exception>
        public List <PushMessageStatus> QueryPushMessageStatus(List <string> messageIdCollection)
        {
            // JPush has limitation officially. One query support no more than 100 IDs.
            const int limitation = 100;

            List <PushMessageStatus> result = new List <PushMessageStatus>();

            string idCollection = string.Empty;

            if (messageIdCollection.HasItem())
            {
                if (messageIdCollection.Count > limitation)
                {
                    messageIdCollection.RemoveRange(limitation, messageIdCollection.Count - limitation);
                }

                idCollection = string.Join(",", messageIdCollection);
            }

            if (!string.IsNullOrWhiteSpace(idCollection))
            {
                try
                {
                    var httpRequest  = this.CreatePushQueryRequest(idCollection);
                    var responseBody = httpRequest.ReadResponseAsText(Encoding.UTF8);
                    result = JsonConvert.DeserializeObject <List <PushMessageStatus> >(responseBody);
                }
                catch (Exception ex)
                {
                    throw ex.Handle(messageIdCollection);
                }
            }

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Invokes this instance.
        /// </summary>
        /// <returns></returns>
        public T Invoke()
        {
            if (_hasCacheValue)
            {
                return(_cachedResult);
            }

            if (!_injectionChain.HasItem())
            {
                throw new NotImplementedException();
            }

            T result = default(T);

            try
            {
                result = (_injectionChain.FirstOrDefault()).Invoke();

                if (_isStatic)
                {
                    _cachedResult  = result;
                    _hasCacheValue = true;
                }

                return(result);
            }
            catch (Exception ex)
            {
                throw ex.Handle();
            }
        }
Пример #3
0
 public InterfaceMakeApiControll BlackMethodList(List <string> methodList)
 {
     if (methodList.HasItem())
     {
         this.MethodBlackList.AddRange(methodList);
     }
     return(this);
 }
Пример #4
0
 public InterfaceMakeApiControll SetAttrs(List <string> attrs)
 {
     if (attrs.HasItem())
     {
         ControllerAttributes.AddRange(attrs);
     }
     return(this);
 }
Пример #5
0
 /// <summary>
 /// Sorts the by sequence.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="sequenceList">The sequence list.</param>
 public static void SortBySequence <T>(this List <T> sequenceList)
     where T : ISequence
 {
     if (sequenceList.HasItem())
     {
         sequenceList.Sort(x => x.Sequence);
     }
 }
Пример #6
0
        public static bool HasItems(this List <vItem> itemList, params string[] names)
        {
            bool has = true;

            for (int i = 0; i < names.Length; i++)
            {
                if (!itemList.HasItem(names[i]))
                {
                    has = false;
                    break;
                }
            }
            return(has);
        }
Пример #7
0
        public static bool HasItems(this List <vItem> itemList, params int[] ids)
        {
            bool has = true;

            for (int i = 0; i < ids.Length; i++)
            {
                if (!itemList.HasItem(ids[i]))
                {
                    has = false;
                    break;
                }
            }
            return(has);
        }
Пример #8
0
 protected BaseLeaf <TKey> FindNodeByName(string name, List <TNode> currNode)
 {
     if (currNode.HasItem())
     {
         foreach (var item in currNode)
         {
             if (item.Name.Equals(name))
             {
                 return(item);
             }
             if (item is TNode)
             {
                 return(FindNodeByName(name, item));
             }
         }
     }
     return(default(TNode));
 }
Пример #9
0
        private ProductSaleDetail GetProductSales(string productID, List <LineItemDetailData> lineItemList)
        {
            var result = new ProductSaleDetail();

            if (!lineItemList.HasItem())
            {
                return(result);
            }

            List <LineItemDetailData> twelveMonthLineItems = lineItemList?.Where(x => x.Data.LineItems.Any(y => y.Product.ID == productID)).ToList();

            List <LineItemDetailData> sixMonthLineItems   = twelveMonthLineItems.Where(x => x.Data.Order.DateCreated > DateTime.Now.AddMonths(-6)).ToList();
            List <LineItemDetailData> threeMonthLineItems = twelveMonthLineItems.Where(x => x.Data.Order.DateCreated > DateTime.Now.AddMonths(-3)).ToList();

            //3MO sales
            foreach (LineItemDetailData lineItemDetail in threeMonthLineItems)
            {
                result.ThreeMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.ThreeMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            //6MO sales
            foreach (LineItemDetailData lineItemDetail in sixMonthLineItems)
            {
                result.SixMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.SixMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            //12MO sales
            foreach (LineItemDetailData lineItemDetail in twelveMonthLineItems)
            {
                result.TwelveMonthQuantity = lineItemDetail.Data.LineItems.Sum(x => x.Quantity);
                result.TwelveMonthTotal    = lineItemDetail.Data.LineItems.Sum(x => x.LineSubtotal);
            }

            return(result);
        }
Пример #10
0
 internal bool HasItem(ItemCategory cat)
 {
     return(Inv.HasItem(cat));
 }
Пример #11
0
        /// <summary>
        /// Creates the dynamic assembly.
        /// </summary>
        /// <param name="provider">The provider.</param>
        /// <param name="referencedAssemblies">The referenced assemblies.</param>
        /// <param name="namespace">The namespace.</param>
        /// <param name="usingNameSpaces">The using nameSpaces.</param>
        /// <param name="classCodesToCompile">The class codes to compile.</param>
        /// <returns>Assembly.</returns>
        /// <exception cref="OperationFailureException">CompileAssemblyFromSource;null</exception>
        public SandboxAssembly CreateDynamicAssembly(CodeDomProvider provider, List<string> referencedAssemblies, string @namespace, IEnumerable<string> usingNameSpaces, string classCodesToCompile)
        {
            try
            {
                provider.CheckNullObject("provider");
                classCodesToCompile.CheckEmptyString("classCodesToCompile");

                @namespace = @namespace.SafeToString("Beyova.DynamicCompile.Sandbox");

                var objCompilerParameters = new CompilerParameters
                {
                    GenerateExecutable = false,
                    GenerateInMemory = true
                };

                // Prepare references.

                var references = GetCommonAssemblyNameList();

                if (referencedAssemblies.HasItem())
                {
                    references.AddRange(referencedAssemblies);
                }

                objCompilerParameters.ReferencedAssemblies.AddRange(references.ToArray());

                // Prepare references done.

                // Prepare namespace

                var nameSpaces = GetCommonNamespaces();

                if (usingNameSpaces.HasItem())
                {
                    nameSpaces.AddRange(usingNameSpaces);
                }

                // Prepare namespace done;

                StringBuilder builder = new StringBuilder(512);
                foreach (var one in nameSpaces)
                {
                    builder.AppendLineWithFormat("using {0};", one);
                }

                builder.AppendLineWithFormat("namespace {0}", @namespace);
                //Namespace start
                builder.AppendLine("{");
                builder.AppendLine(classCodesToCompile);

                //End of namespace
                builder.Append("}");

                var compilerResult = provider.CompileAssemblyFromSource(objCompilerParameters, classCodesToCompile);

                if (compilerResult.Errors.HasErrors)
                {
                    List<dynamic> errors = new List<dynamic>();
                    foreach (CompilerError one in compilerResult.Errors)
                    {
                        errors.Add(new
                        {
                            one.ErrorText,
                            one.ErrorNumber,
                            one.Line
                        });
                    }

                    throw new OperationFailureException("CompileAssemblyFromSource", null, errors);
                }

                return new SandboxAssembly(compilerResult.CompiledAssembly, @namespace);
            }
            catch (Exception ex)
            {
                throw ex.Handle("CreateDynamicAssembly");
            }
        }
        public static void mod_MoveSelectedUnitsToPoint(Vector3 worldPosition, Vector3 direction, bool preview = false, float formationSpaceFactor = 1f, Action <UnitEntityData, Vector3, float?, float, float> commandRunner = null)
        {
            if (!KingmakerPatchSettings.Game.NoManLeftBehind)
            {
                source_MoveSelectedUnitsToPoint(worldPosition, direction, preview, formationSpaceFactor, commandRunner);
                return;
            }

            if (!preview)
            {
                mod_m_UnitWaitAgentList.Clear();
            }

            List <UnitEntityData> selectedUnits = Kingmaker.Game.Instance.UI.SelectionManager.GetSelectedUnits();

            List <UnitEntityData> allUnits;

            if (selectedUnits.Count == 1)
            {
                allUnits = selectedUnits;
            }
            else
            {
                allUnits = Kingmaker.Game.Instance.Player.ControllableCharacters.Where(c => c.IsDirectlyControllable).ToList();
            }

            float orientation = Mathf.Atan2(direction.x, direction.z) * 57.29578f;

            var speedLimit = 0f;

            if (selectedUnits.Count > 1)
            {
                speedLimit = selectedUnits.Aggregate(float.MinValue, (current, u) => Mathf.Max(current <= 0f ? 0f : current, u.ModifiedSpeedMps));
            }

            if (selectedUnits.Count <= 0)
            {
                return;
            }

            var array = new int[allUnits.Count];

            for (var i = 0; i < array.Length; i++)
            {
                array[i] = i;
            }

            Array.Sort(array, (o1, o2) => (allUnits[o1].Position - worldPosition).sqrMagnitude.CompareTo((allUnits[o2].Position - worldPosition).sqrMagnitude));

            PartyFormationHelper.FillFormationPositions(worldPosition, FormationAnchor.Front, direction, allUnits, selectedUnits, formationSpaceFactor);

            var count = 0;

            for (var i = 0; i < allUnits.Count; i++)
            {
                UnitEntityData unit = allUnits[i];

                if (!selectedUnits.HasItem(unit))
                {
                    continue;
                }

                if (preview)
                {
                    ShowDestination(unit, PartyFormationHelper.ResultPositions[i], true);
                }
                else
                {
                    if (commandRunner == null)
                    {
                        commandRunner = mod_RunCommand;
                    }

                    commandRunner(unit, PartyFormationHelper.ResultPositions[i], speedLimit > unit.CurrentSpeedMps ? speedLimit : unit.CurrentSpeedMps, orientation, array[count] * 0.05f);
                }

                count++;
            }

            var previousMagnitude = 0f;

            for (var i = 0; i < allUnits.Count; i++)
            {
                UnitEntityData unit = allUnits[i];

                if (!selectedUnits.HasItem(unit))
                {
                    continue;
                }

                float currentMagnitude = (worldPosition - PartyFormationHelper.ResultPositions[i]).To2D().magnitude;

                if (currentMagnitude > previousMagnitude)
                {
                    previousMagnitude = currentMagnitude;
                }
            }

            for (var i = 0; i < selectedUnits.Count; i++)
            {
                UnitEntityData selectedUnit = selectedUnits[i];

                if (allUnits.HasItem(selectedUnit))
                {
                    continue;
                }

                Vector3 vector = selectedUnits.Count == 1 ? worldPosition : GeometryUtils.ProjectToGround(worldPosition - direction.normalized * (previousMagnitude + 2f));

                if (preview)
                {
                    ShowDestination(selectedUnit, vector, true);
                }
                else
                {
                    if (commandRunner == null)
                    {
                        commandRunner = mod_RunCommand;
                    }

                    commandRunner(selectedUnit, vector, speedLimit > selectedUnit.CurrentSpeedMps ? speedLimit : selectedUnit.CurrentSpeedMps, orientation, 0f);
                }
            }

            if (preview)
            {
                Kingmaker.Game.Instance.UI.ClickPointerManager.ShowPreviewArrow(worldPosition, direction);
            }
            else
            {
                Kingmaker.Game.Instance.UI.ClickPointerManager.CancelPreview();
            }

            EventBus.RaiseEvent <IClickActionHandler>(h => h.OnMoveRequested(worldPosition));
        }
Пример #13
0
        /// <summary>
        /// Selects all demand quotes by wechat user id.
        /// </summary>
        /// <param name="conn"></param>
        /// <param name="demandId"></param>
        /// <returns></returns>
        public List<Demand> SelectRecievedQuotes(SqlConnection conn, int wechatUserId, int pageSize, int pageIndex, out int totalCount)
        {
            var quotes = new List<DemandQuote>();
            var demands = new List<Demand>();
            totalCount = 0;

            SqlParameter[] parameters = new SqlParameter[]
            {
                new SqlParameter(Parameter_WeChatUserId, wechatUserId),
                new SqlParameter("@PageIndex", pageIndex),
                new SqlParameter("@PageSize", pageSize)
            };

            var dts = DBHelper.GetMuiltiDataFromDB(conn, "sp_SelectRecievedQuotes", parameters);

            totalCount = Int32.Parse(dts["0"].Rows[0][0].ToString());
            demands = DBHelper.DataTableToList<Demand>(dts["1"]);
            quotes = DBHelper.DataTableToList<DemandQuote>(dts["2"]);

            if (quotes.HasItem() && demands.HasItem())
            {
                foreach (var quote in quotes)
                {
                    var demand = demands.FirstOrDefault(x => x.Id == quote.DemandId);
                    if (demand.IsNotNull())
                    {
                        demand.QuoteEntities.Add(quote);
                    }
                }
            }

            return demands;
        }
Пример #14
0
        /// <summary>
        /// Selects quotes without histories for one specified demand.
        /// </summary>
        /// <param name="demandId"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <returns></returns>
        //public List<DemandQuote> GetAllDemandQuotesForOneDemand(int demandId, int pageSize, int pageIndex, out int totalCount)
        //{
        //    var quotes = new List<DemandQuote>();
        //    var conn = DBHelper.GetSqlConnection();
        //    totalCount = 0;
        //    try
        //    {
        //        conn.Open();
        //        quotes = quoteDao.SelectDemandQuotesByDemandId(conn, demandId, pageSize, pageIndex, out totalCount);
        //        if (quotes.HasItem())
        //        {
        //            foreach (var quote in quotes)
        //            {
        //                var history = GetDemandQuote(quote.QuoteId, true);
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        LogService.Log("Failed to select quotes without histories for one demand.", ex.ToString());
        //    }
        //    finally
        //    {
        //        conn.Close();
        //    }
        //    return quotes;
        //}
        /// <summary>
        /// Selects quotes without histories for one specified demand.
        /// </summary>
        /// <param name="demandId"></param>
        /// <param name="pageSize"></param>
        /// <param name="pageIndex"></param>
        /// <returns></returns>
        public List<DemandQuote> GetAllDemandQuotesForOneDemand(int demandId)
        {
            var quotes = new List<DemandQuote>();
            var conn = DBHelper.GetSqlConnection();

            try
            {
                conn.Open();
                quotes = quoteDao.SelectDemandQuotesByDemandId(conn, demandId);

                if (quotes.HasItem())
                {
                    foreach (var quote in quotes)
                    {
                        var history = GetDemandQuote(quote.QuoteId, true);
                    }
                }
            }
            catch (Exception ex)
            {
                LogService.Log("Failed to select quotes without histories for one demand.", ex.ToString());
            }
            finally
            {
                conn.Close();
            }

            return quotes;
        }
Пример #15
0
        /// <summary>
        /// Initializes the by custom assembly attributes.
        /// </summary>
        private static void InitializeByCustomAssemblyAttributes()
        {
            string currentAssemblyName = null;

            //Api track type need to stay on top and out of this. It is set in loop and be used after loop, to ensure required parameter from configuration is initialized.
            List <Type> apiTrackTypes = new List <Type>();

            try
            {
                foreach (var assembly in EnvironmentCore.DescendingAssemblyDependencyChain)
                {
                    BeyovaComponentInfo componentInfo = null;
                    var assemblyName = assembly.GetName();
                    currentAssemblyName = assemblyName.Name;

                    if (!assemblyName.IsSystemAssembly())
                    {
                        #region BeyovaComponentAttribute

                        var componentAttribute = assembly.GetCustomAttribute <BeyovaComponentAttribute>();
                        if (componentAttribute != null)
                        {
                            componentInfo = componentAttribute.UnderlyingObject;

                            // APITRACKING
                            if (ApiTracking == null)
                            {
                                apiTrackTypes.Add(componentInfo?.ApiTrackingType);
                            }
                        }

                        #endregion BeyovaComponentAttribute

                        #region DataSecurityAttribute

                        var dataSecurty = assembly.GetCustomAttribute <DataSecurityAttribute>();
                        if (dataSecurty != null)
                        {
                            if (DataSecurityProvider == null)
                            {
                                DataSecurityProvider = dataSecurty.DataSecurityProvider;
                            }
                        }

                        #endregion DataSecurityAttribute

                        #region BeyovaConfigurationLoaderAttribute

                        var configurationLoaders = assembly.GetCustomAttributes <BeyovaConfigurationLoaderAttribute>();
                        if (configurationLoaders.HasItem())
                        {
                            foreach (var one in configurationLoaders)
                            {
                                ConfigurationHub.RegisterConfigurationReader(one?.Loader?.GetReader(currentAssemblyName, componentInfo?.Version));
                            }
                        }
                        else
                        {
                            // To be obsoleted
                            //var configurationAttribute = assembly.GetCustomAttribute<BeyovaConfigurationAttribute>();
                            //if (configurationAttribute != null)
                            //{
                            //    ConfigurationHub.RegisterConfigurationReader(new JsonConfigurationReader(currentAssemblyName, componentInfo?.Version, nameof(JsonConfigurationReader), configurationAttribute.Options));
                            //}
                        }

                        #endregion BeyovaConfigurationLoaderAttribute

                        #region BeyovaCultureResourceAttribute

                        var cultureResourceAttribute = assembly.GetCustomAttribute <BeyovaCultureResourceAttribute>();
                        if (cultureResourceAttribute != null)
                        {
                            if (!string.IsNullOrWhiteSpace(cultureResourceAttribute.UnderlyingObject.DefaultCultureCode))
                            {
                                _resourceHub.DefaultCultureInfo = cultureResourceAttribute.UnderlyingObject.DefaultCultureCode.AsCultureInfo();
                            }

                            cultureResourceAttribute?.UnderlyingObject.FillResources(_resourceHub._cultureBasedResources);
                        }

                        #endregion BeyovaCultureResourceAttribute
                    }
                }

                if (ApiTracking == null && apiTrackTypes.HasItem())
                {
                    foreach (var one in apiTrackTypes)
                    {
                        var instance = one.CreateInstance() as IApiTracking;
                        if (instance != null)
                        {
                            ApiTracking = instance;
                            break;
                        }
                    }
                }

                // To check and ensure
                if (DataSecurityProvider == null)
                {
                    DataSecurityProvider = DefaultDataSecurityProvider.Instance;
                }
            }
            catch (Exception ex)
            {
                throw ex.Handle(new
                {
                    currentAssemblyName
                });
            }
        }