コード例 #1
0
    public void AddItem(string _name, string _info)
    {
        GameObject _obj   = Utils.Spawn(pfLocale, rect);
        RouteUnit  _route = _obj.GetComponent <RouteUnit>();

        _route.Init(_name, _info);
    }
コード例 #2
0
        public string ToString(RouteUnit routeUnit)
        {
            String actualTableName = GetLogicAndActualTables(routeUnit)[identifier.GetValue().ToLower()];

            actualTableName = null == actualTableName?identifier.GetValue().ToLower() : actualTableName;

            var quoteCharacterEnum = identifier.GetQuoteCharacter();

            return($"{QuoteCharacter.Get(quoteCharacterEnum).GetStartDelimiter()}{actualTableName}{QuoteCharacter.Get(quoteCharacterEnum).GetEndDelimiter()}");
        }
コード例 #3
0
 private void AppendInsertValue(RouteUnit routeUnit, StringBuilder stringBuilder)
 {
     foreach (var insertValue in InsertValues)
     {
         if (IsAppend(routeUnit, (ShardingInsertValue)insertValue))
         {
             stringBuilder.Append(insertValue).Append(", ");
         }
     }
 }
コード例 #4
0
 private void CancelButtonInteraction(RouteUnit _unit, int count)
 {
     if (_unit.IsInUse)
     {
         routeCancelButtons [count].CancelRouteButton.interactable = false;
     }
     else
     {
         routeCancelButtons [count].CancelRouteButton.interactable = true;
     }
 }
コード例 #5
0
        public string ToString(RouteUnit routeUnit)
        {
            StringBuilder result = new StringBuilder();

            AppendInsertValue(routeUnit, result);
            if (result.Length > 2)
            {
                result.Remove(result.Length - 2, 2);
            }
            return(result.ToString());
        }
コード例 #6
0
        private IDictionary <string, string> GetLogicAndActualTables(RouteUnit routeUnit)
        {
            ICollection <string>         tableNames = sqlCommandContext.GetTablesContext().GetTableNames();
            IDictionary <string, string> result     = new Dictionary <string, string>(tableNames.Count);

            foreach (var tableMapper in routeUnit.TableMappers)
            {
                result.Add(tableMapper.LogicName.ToLower(), tableMapper.ActualName);
                result.AddAll(shardingRule.GetLogicAndActualTablesFromBindingTable(routeUnit.DataSourceMapper.LogicName, tableMapper.LogicName, tableMapper.ActualName, tableNames));
            }
            return(result);
        }
コード例 #7
0
 private bool IsInSameDataNode(ICollection <DataNode> dataNodes, RouteUnit routeUnit)
 {
     if (dataNodes.IsEmpty())
     {
         return(true);
     }
     foreach (var dataNode in dataNodes)
     {
         if (routeUnit.FindTableMapper(dataNode.GetDataSourceName(), dataNode.GetTableName()) != null)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #8
0
        private ICollection <RouteUnit> GetAllRouteUnits(ShardingRule shardingRule, String logicTableName)
        {
            ICollection <RouteUnit> result = new LinkedList <RouteUnit>();
            TableRule tableRule            = shardingRule.GetTableRule(logicTableName);

            foreach (var dataNode in tableRule.ActualDataNodes)
            {
                RouteUnit routeUnit = new RouteUnit(new RouteMapper(dataNode.GetDataSourceName(), dataNode.GetDataSourceName()), new List <RouteMapper>()
                {
                    new RouteMapper(logicTableName, dataNode.GetTableName())
                });
                result.Add(routeUnit);
            }

            return(result);
        }
コード例 #9
0
        public string ToString(RouteUnit routeUnit)
        {
            StringBuilder result             = new StringBuilder();
            var           quoteCharacterEnum = _identifier.GetQuoteCharacter();
            var           quoteCharacter     = QuoteCharacter.Get(quoteCharacterEnum);

            result.Append(quoteCharacter.GetStartDelimiter()).Append(_identifier.GetValue());
            IDictionary <string, string> logicAndActualTables = GetLogicAndActualTables(routeUnit);

            if (logicAndActualTables.Any())
            {
                result.Append("_").Append(logicAndActualTables.Values.FirstOrDefault());
            }
            result.Append(quoteCharacter.GetEndDelimiter());
            return(result.ToString());
        }
コード例 #10
0
        private bool IsAppend(RouteUnit routeUnit, ShardingInsertValue insertValueToken)
        {
            if (insertValueToken.GetDataNodes().IsEmpty() || null == routeUnit)
            {
                return(true);
            }

            foreach (var dataNode in insertValueToken.GetDataNodes())
            {
                if (routeUnit.FindTableMapper(dataNode.GetDataSourceName(), dataNode.GetTableName()) != null)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #11
0
 private void UpdateRouteCancelButtons()
 {
     if (routePanel.activeSelf)
     {
         routesCount = Route.Instance.Routes.Count;
         routeList   = Route.Instance.Routes;
         for (int i = 0; i < routeCancelButtons.Length; i++)
         {
             if (routesCount > i)
             {
                 unit = RouteDictionary.Instance.PanelRoutes [routeList [i]];
                 routeCancelButtons [i].gameObject.SetActive(true);
                 routeCancelButtons [i].RouteExistNumber = routeList [i];
                 routeCancelButtons [i].SetTextRouteNumber(unit.RouteStringName);
                 CancelButtonInteraction(unit, i);
             }
             else
             {
                 routeCancelButtons [i].gameObject.SetActive(false);
             }
         }
     }
 }
コード例 #12
0
        private ParameterContext GetParameterContext(IParameterBuilder parameterBuilder, RouteResult routeResult, RouteUnit routeUnit)
        {
            if (parameterBuilder is StandardParameterBuilder || routeResult.GetOriginalDataNodes().IsEmpty() || parameterBuilder.GetParameterContext().IsEmpty())
            {
                return(parameterBuilder.GetParameterContext());
            }
            var result = new ParameterContext();
            int count  = 0;

            foreach (var originalDataNode in routeResult.GetOriginalDataNodes())
            {
                if (IsInSameDataNode(originalDataNode, routeUnit))
                {
                    result.AddParameters(((GroupedParameterBuilder)parameterBuilder).GetParameterContext(count).GetDbParameters());
                }
                count++;
            }
            return(result);
        }
コード例 #13
0
ファイル: RouteService.cs プロジェクト: AllahEdin/JwtNetCore
        public async Task <string> RecalculateLength(int routeId)
        {
            const string profile = "driving";

            var list =
                new List <(double lat, double longt)>();

            var searchModel =
                new SearchModel()
            {
                Filter = new BinaryFilterUnit()
                {
                    OperatorType = OperatorType.Equals,
                    Unit1        = new ParameterFilterUnit()
                    {
                        PropertyName = "Id"
                    },
                    Unit2 = new ConstFilterUnit()
                    {
                        Value = routeId
                    },
                }
            };

            var paging =
                await Get(1, 1, searchModel);

            if (paging.Total != 1)
            {
                throw new InvalidOperationException();
            }

            var ra =
                await GetLink <RouteAttraction>(paging.Items,
                                                opt => paging.Items.Select(t => t.Id).Contains(opt.RouteId));

            var withAttr =
                ra.OrderBy(o => o.Order).ThenBy(o => o.Id).Where(w => w.RouteId == routeId)
                .Select(s => s.AttractionId).ToList();

            var additionDurationMinutes = 0;

            foreach (var attractionId in withAttr)
            {
                var attr =
                    await _attractionService.Get(attractionId);

                list.Add((double.Parse(attr.Latitude, CultureInfo.InvariantCulture), double.Parse(attr.Longitude, CultureInfo.InvariantCulture)));

                additionDurationMinutes += attr.Duration;
            }

            RouteUnit resultUnit;
            string    returnValue;

            if (withAttr.Count < 2)
            {
                resultUnit = new RouteUnit {
                    Distance = 0, Duration = 0
                };
                returnValue = "No traveling";
            }
            else
            {
                using var client = new HttpClient(new HttpClientHandler())
                      {
                          BaseAddress = new Uri("http://router.project-osrm.org/")
                      };

                var points = list.Select(s =>
                                         $"{s.longt.ToString(CultureInfo.InvariantCulture)},{s.lat.ToString(CultureInfo.InvariantCulture)}");
                var res =
                    await client.GetAsync(
                        $"route/v1/{profile}/{string.Join(';', points)}?alternatives=false&steps=false&overview=false&annotations=false");

                var resp =
                    JsonConvert.DeserializeObject <RouteResponse>(await res.Content.ReadAsStringAsync());

                if (resp.Code != "Ok")
                {
                    throw new InvalidOperationException(resp.Code);
                }

                resultUnit =
                    resp.Routes.FirstOrDefault();

                if (resultUnit == null)
                {
                    throw new InvalidOperationException(resp.Code);
                }

                returnValue = await res.Content.ReadAsStringAsync();
            }

            var distance = Convert.ToInt32(resultUnit.Distance / 1000);

            using var cp = ContextProviderFactory.Create();

            await cp.GetTable <Route>()
            .Where(w => w.Id == routeId)
            .UpdateAsync(route => new Route()
            {
                Length = distance,
                Time   = (distance <= 2)
                                                ? Convert.ToInt32(resultUnit.Distance * 60 / 5000) + additionDurationMinutes
                                                : Convert.ToInt32(TimeSpan.FromSeconds(Convert.ToInt32(resultUnit.Duration)).TotalMinutes) + additionDurationMinutes
            });

            return(returnValue);
        }
コード例 #14
0
 private void Start()
 {
     Unit = RouteDictionary.Instance.PanelRoutes [RouteNumber];
 }
コード例 #15
0
 public RouteSqlBuilder(SqlRewriteContext context, RouteUnit routeUnit) : base(context)
 {
     _routeUnit = routeUnit;
 }