コード例 #1
0
 /// <summary>
 /// This constructor is intended for the API only.
 /// Initializes a new instance of the <see cref="Matrix.Client.MatrixRoom"/> class.
 /// </summary>
 /// <param name="api">The API to send/recieve requests from</param>
 /// <param name="roomId">Roomid</param>
 public MatrixRoom(MatrixApi api, string roomId)
 {
     Id              = roomId;
     _api            = api;
     _jsonSerializer = new JsonSerializer();
     Members         = new SortedDictionary <string, RoomMembershipContent>();
 }
コード例 #2
0
        public MatrixMediaFile(MatrixApi api, Uri mxcUrl, string contentType)
        {
            if (api == null)
            {
                throw new ArgumentNullException(nameof(api));
            }

            _baseUrl     = api.BaseUrl;
            _mxcUrl      = mxcUrl;
            _contentType = contentType;
        }
コード例 #3
0
        public MatrixAppservice(ServiceRegistration registration, string domain,
                                Uri url, int maxRequests = DefaultMaxRequests)
        {
            HomeserverUrl   = url ?? DefaultUri;
            Domain          = domain ?? throw new ArgumentNullException(nameof(domain));
            MaximumRequests = maxRequests;
            Registration    = registration ?? throw new ArgumentNullException(nameof(registration));
            AppserviceUrl   = registration.Url;
            _botUserId      = "@" + registration.Localpart + ":" + Domain;
            _urlMatcher     =
                new Regex("\\/(rooms|transactions|users)\\/(.+)\\?access_token=(.+)",
                          RegexOptions.Compiled | RegexOptions.ECMAScript);

            _api = new MatrixApi(url, registration.AppserviceToken, "");
        }
コード例 #4
0
 public MediaApi(MatrixApi matrixApi) =>
コード例 #5
0
ファイル: RoomApi.cs プロジェクト: MrLenin/matrix-dotnet-sdk
 public RoomApi(MatrixApi matrixApi) => _matrixApi = matrixApi ?? throw new ArgumentNullException(nameof(matrixApi));
コード例 #6
0
 public ProfileApi(MatrixApi matrixApi) =>
コード例 #7
0
 public Keys(MatrixApi api)
 {
     _api = api;
 }
コード例 #8
0
 public void Init()
 {
     instance = new MatrixApi();
 }
コード例 #9
0
 public LoginEndpoint(MatrixApi matrixApi)
 {
     _matrixApi = matrixApi ?? throw new ArgumentNullException(nameof(matrixApi));
     _apiPath   = new Uri(@"/_matrix/client/r0/login", UriKind.Relative);
 }
コード例 #10
0
 public SyncEndpoint(MatrixApi matrixApi, int timeout = 10000)
 {
     Timeout    = timeout;
     _matrixApi = matrixApi ?? throw new ArgumentNullException(nameof(matrixApi));
     _apiPath   = new Uri(@"/_matrix/client/r0/sync", UriKind.Relative);
 }
コード例 #11
0
        /// <summary>
        /// Get distance between waypoints
        /// </summary>
        public async Task <List <RouteSimulatorDetail> > ObtenerDistancia(List <RouteSimulatorDetail> ListRouteDetail, string originLongitude, string originLatitude)
        {
            //DECLARAMOS LAS VARIABLES, EN UNA DE ELLA CONTENDREMOS LA COORDENADA
            //List<RouteSimulatorDetail> ListRouteDetail = new List<RouteSimulatorDetail>();
            if (ListRouteDetail.Count <= 0)
            {
                return(ListRouteDetail);
            }

            MatrixApi ResultOptimizerRoute = new MatrixApi();
            decimal   distanceMin          = 0;
            string    cordInit             = ",";
            string    cordEnd        = "";
            var       numeroDeParada = 0;

            //ALMACENA EL ULTIMO CLIENTE OPTIMIZADO
            RouteSimulatorDetail sourceClient = new RouteSimulatorDetail();


            //LISTA DE LOS PUNTO A RECORRER EN BASE AL PUNTO ORIGEN
            List <RouteSimulatorDetail> ListPointsPending = new List <RouteSimulatorDetail>();
            //LISTA DE LOS PUNTOS SIN ASIGNAR ORDEN
            List <RouteSimulatorDetail> ListRouteDetailWithoutAssigned = new List <RouteSimulatorDetail>();

            //VARIABLE PARA ALMACENAR LA RUTA DE ORIGEN LUEGO DE HABER SIDO ASIGNADO
            RouteSimulatorDetail detailItem = new RouteSimulatorDetail();
            //VARIABLE PARA ALMACENAR LA RUTA CON LA DISTANCIA MAS PEQUEÑA
            RouteSimulatorDetail routeMinDistance = new RouteSimulatorDetail();

            //--FILTRAMOS LOS QUE NO TENGAN UBICACION
            ListRouteDetail = ListRouteDetail.FindAll(x => x.Latitude != 0 && x.Longitude != 0);

            //RECORREMOS LA LISTA, SIN CONTAR LOS QUE NO TIENEN PUNTOS GPS
            for (var i = 0; (ListRouteDetail.Count) > i; i++)
            {
                //REALIZAMOS UNA COPIA DE LA LISTA DE PUNTOS DEL DETALLE, ESTA SERA SOBRE LA CUAL TRABAJAREMOS
                ListPointsPending = ListRouteDetail;

                detailItem = ListRouteDetail[i];

                if (i == 0)
                {
                    //SE CONSTRUYE EL STRING DE LA CORDENADA DE INICIO
                    originLatitude.Replace(",", ".");
                    originLongitude.Replace(",", ".");
                    cordInit = originLongitude + "," + originLatitude;
                }

                //SE TOMAN EN CUENTA SOLAMENTE LAS QUE NO ESTAN ASIGNADAS
                if (detailItem.isAssigned == null)
                {
                    //RECORREMOS TODOS LOS PUNTOS NUEVAMENTE PARA ENCONTRAR EL PUNTO MAS CERCANO AL ACTUAL
                    for (var d = 0; (ListPointsPending.Count - 1) >= d; d++)
                    {
                        //VARIABLE PARA ALMACENAR EL PUNTO PENDIENTE DEL CUAL SE ESTA OBTENINENDO LA DISTANCIA.
                        RouteSimulatorDetail currentRoute = new RouteSimulatorDetail();
                        currentRoute = ListPointsPending[d];

                        //RECOREMOS NUEVAMENTE TODOS LOS PUNTOS RESPECTO AL ACTUAL PARA OBTENER EL DE LA MENOR DISTANCIA Y OMITIMOS EL PROPIO GPS
                        if ((currentRoute.isAssigned == null) && (sourceClient.ClientCode != currentRoute.ClientCode && sourceClient.ManifestId != currentRoute.ManifestId && sourceClient.Order != currentRoute.Order))
                        {
                            //SE CONSTRUYE EL STRING DE LA CORDENADA DE DESTINO
                            cordEnd = currentRoute.Longitude.ToString().Replace(",", ".") + "," + currentRoute.Latitude.ToString().Replace(",", ".");

                            //OBTENEMOS EL RESULTADO DE LA OPTIMIZACION
                            ResultOptimizerRoute = await OptimizeRoute(cordInit, cordEnd);

                            //ACTUALIZAMOS EL ITEM DEL ARREGLO CON LA DISTANCIA Y EL TIEMPO QUE SE TOMARA LA RUTA DE UN PUNTO A OTRO
                            currentRoute.distance = Convert.ToDecimal(ResultOptimizerRoute.trips[0].legs[0].distance);
                            currentRoute.time     = Convert.ToDecimal(ResultOptimizerRoute.trips[0].legs[0].duration);

                            System.Diagnostics.Debug.WriteLine(JsonConvert.SerializeObject(ResultOptimizerRoute));
                        }
                    }

                    //BUSCAMOS EL PUNTO MAS CERCANO AL ACTUAL

                    ListRouteDetailWithoutAssigned = ListPointsPending.FindAll(x => x.isAssigned == null);
                    distanceMin      = ListRouteDetailWithoutAssigned.Min(x => x.distance).Value;
                    routeMinDistance = ListRouteDetailWithoutAssigned.Find(x => x.distance == distanceMin && x.isAssigned == null);

                    //AGREGAMOS UN ORDEN EN LAS PARADAS QUE SE DEBEN DE REALIZAR
                    numeroDeParada += 1;


                    //AGREGA EL NUEVO PUNTO DE INICIO PARA UBICAR EL PUNTO MAS CERCANO
                    cordInit = routeMinDistance.Longitude.ToString().Replace(",", ".") + "," + routeMinDistance.Latitude.ToString().Replace(",", ".");

                    detailItem.distance   = routeMinDistance.distance;
                    detailItem.time       = routeMinDistance.time;
                    detailItem.isAssigned = numeroDeParada;
                }
            }
            //TRAZA LA RUTA DE REGRESO A LA BODEGA CONFIGURADA
            if (ListRouteDetail.Count > 0)
            {
                var ultimoPunto = ListRouteDetail.Count;
                //CONSTRUIMOS LA CORDENADA DE DESTINO - GPS CONFIGURADO EN LOS PARAMETROS
                cordEnd = originLongitude.Replace(",", ".") + "," + originLatitude.Replace(",", ".");

                //CONSTRUIMOS LA CORDENADA DE PARTIDA - ULTIMA EN EL LISTADO
                RouteSimulatorDetail newDetail = new RouteSimulatorDetail();

                detailItem = ListRouteDetail[ultimoPunto - 1];

                //ASIGNAMOS EL CLIENTE A OPTIMIZAR
                sourceClient = detailItem;

                newDetail.Address          = detailItem.Address;
                newDetail.ClientCode       = detailItem.ClientCode;
                newDetail.ClientName       = detailItem.ClientName;
                newDetail.distance         = 0;
                newDetail.DistanceCost     = 0;
                newDetail.DistanceToTravel = 0;
                newDetail.isAssigned       = 0;
                newDetail.ManifestId       = detailItem.ManifestId;
                newDetail.Order            = detailItem.Order;
                newDetail.TotalVolume      = 0;
                newDetail.TotalWeight      = 0;
                newDetail.VehicleId        = detailItem.VehicleId;

                cordInit = detailItem.Longitude.ToString().Replace(",", ".") + "," + detailItem.Latitude.ToString().Replace(",", ".");

                //OBTENEMOS EL RESULTADO DE LA OPTIMIZACION
                ResultOptimizerRoute = await OptimizeRoute(cordInit, cordEnd);

                //ACTUALIZAMOS EL ITEM DEL ARREGLO CON LA DISTANCIA Y EL TIEMPO QUE SE TOMARA LA RUTA DE UN PUNTO A OTRO
                newDetail.distance  = Convert.ToDecimal(ResultOptimizerRoute.trips[0].legs[0].distance);
                newDetail.time      = Convert.ToDecimal(ResultOptimizerRoute.trips[0].legs[0].duration);
                newDetail.Longitude = Convert.ToDecimal(originLongitude);
                newDetail.Latitude  = Convert.ToDecimal(originLatitude);

                newDetail.isAssigned = ultimoPunto + 1;

                ListRouteDetail.Add(newDetail);
            }

            return(ListRouteDetail);
        }
コード例 #12
0
 public RoomDirectoryApi(MatrixApi matrixApi) =>
コード例 #13
0
 public DeviceApi(MatrixApi matrixApi) =>