public WaterContainerResponse ResultWaterContainer(CoordinateDTO request)
        {
            validateLength(request.CoordinateY);
            int length   = this.arrayAreaServices.getLength(request.CoordinateY);
            var response = new WaterContainerResponse();

            response.Result = CalculateResult(length, request.CoordinateY);
            return(response);

            int CalculateResult(int _length, int[] _coordinates)
            {
                int output = 0;

                for (int i = 0; i < _length; i++)
                {
                    for (int j = _length - 1; j > i; j--)
                    {
                        int baser  = (j - i);
                        int height = (_coordinates[i] < _coordinates[j]) ? _coordinates[i] : _coordinates[j];
                        int area   = this.arrayAreaServices.calculateArea(baser, height);
                        output = (area > output) ? area : output;
                    }
                }
                return(output);
            }
        }
        public IHttpActionResult Update([FromBody] CoordinateDTO coordinates)
        {
            var _userWithData = (RegisterUserDTO)HttpContext.Current.Items["user"];

            new LocationServices().UpdatePosition(_userWithData.user_id, coordinates);
            return(Json(new StatusChangeDTO(_userWithData.status)));
        }
        public static DbGeography GenerateDBGeographyFromCoordinates(CoordinateDTO coordinates)
        {
            string conversion = "POINT(" + coordinates.longitude + " " + coordinates.latitude + ")";

            conversion = conversion.Replace(",", ".");
            var myLocation = DbGeography.FromText(conversion);

            return(myLocation);
        }
        public int return_response_correct_with_coordinates(int[] arg)
        {
            CoordinateDTO request = new CoordinateDTO();

            request.CoordinateY = arg;
            int result = waterContainerOperator.Object.ResultWaterContainer(request).Result;

            return(result);
        }
        public void return_error_if_dont_have_coordinates()
        {
            CoordinateDTO request = new CoordinateDTO();

            request.CoordinateY = new int[] { 1 };
            Assert.Throws <WaterContainerException>(
                () =>
            {
                waterContainerOperator.Object.ResultWaterContainer(request);
            });
        }
        public IHttpActionResult NearUntakenServicesCount([FromBody] CoordinateDTO coordinates)
        {
            var _userWithData = (RegisterUserDTO)HttpContext.Current.Items["user"];

            if (_userWithData.is_provider == 1)
            {
                new LocationServices().UpdatePosition(_userWithData.user_id, coordinates);
                return(Json(new NearUntakenServicesCountDTO()
                {
                    count = new LocationServices().GetNearUntakenServices(coordinates).Count
                }));
            }
            return(Conflict());
        }
Esempio n. 7
0
        public string timeLeft(CoordinateDTO origin, CoordinateDTO destination)
        {
            HttpClient clientRequest = new HttpClient();
            //clientRequest.Timeout = TimeSpan.FromSeconds(GlobalData.TimeoutWebRequests);

            var requestWebsite = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=" +
                                 origin.latitude.ToString().Replace(",", ".") + "," + origin.longitude.ToString().Replace(",", ".") + "&destinations=" + destination.latitude.ToString().Replace(",", ".") +
                                 "," + destination.longitude.ToString().Replace(",", ".") + "&key=" + googleApiKey;
            var contents = clientRequest.GetStringAsync(requestWebsite).Result;

            var result = JsonConvert.DeserializeObject <GoogleMapQuery>(contents);

            return(result.Rows.FirstOrDefault().Elements.FirstOrDefault().Duration.Text);
        }
Esempio n. 8
0
        static void Main(string[] args)
        {
            try
            {
                var factory = new ConnectionFactory
                {
                    Uri = new Uri("amqp://*****:*****@localhost:5672"),
                    ConsumerDispatchConcurrency = 32,  // max 32 kanal paralel calisma oalbilsin.
                    DispatchConsumersAsync      = true //Async calisabilme icin
                };

                using var connection = factory.CreateConnection();
                using var channel    = connection.CreateModel();
                channel.QueueDeclare("demo-queue",
                                     durable: true,
                                     exclusive: false,
                                     autoDelete: false,
                                     arguments: null
                                     );

                var consumer = new AsyncEventingBasicConsumer(channel);  // TPL icin..

                logger.Log(NLog.LogLevel.Info, "S_latitude|S_longitude|D_latitude|D_longitude|Distance");
                logger.Log(NLog.LogLevel.Info, " ");
                consumer.Received += async(sender, e) => {
                    var body    = e.Body.ToArray();
                    var message = Encoding.UTF8.GetString(body);

                    CoordinateDTO aa = JsonConvert.DeserializeObject <CoordinateDTO>(message);
                    Console.WriteLine(aa.Source_latitude + " | " + aa.Source_longitude + " | " + aa.Destination_latitude + " | " + aa.Destination_longitude + " | " + aa.Distance);

                    logger.Log(NLog.LogLevel.Info, aa.Source_latitude + " | " + aa.Source_longitude + " | " + aa.Destination_latitude + " | " + aa.Destination_longitude + " | " + aa.Distance);
                    //await WriteTextAsync(aa.Source_latitude + " | " + aa.Source_longitude + " | " + aa.Destination_latitude + " | " + aa.Destination_longitude + " | " + aa.Distance);
                };

                channel.BasicConsume("demo-queue", true, consumer);
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                lock (locker)
                {
                    logger.Error(ex, "ERROR at Main");
                }
            }
        }
        public void TestThatTourGetsStartedCorrectly()
        {
            UserTour activeTour = null;
            POI      nextPOI    = new POI
            {
                Id            = 4,
                Name          = "POIName",
                Description   = "POIDesc",
                VisitDuration = 23,
                Coordinates   = DbGeography.PointFromText("POINT(49 23)", 4326)
            };

            _userTourRepoMock.Setup(m => m.GetActiveTour(1)).Returns((int userId) => activeTour);
            _userTourRepoMock.Setup(m => m.StartUserTour(1, 2)).Callback(() => activeTour = new UserTour {
                Id = 3
            });
            _userPoiRepoMock.Setup(m => m.GetNextPOI(3)).Returns(nextPOI);
            CoordinateDTO coordinate1 = new CoordinateDTO {
                Latitude = 14, Longitude = 39
            };
            CoordinateDTO coordinate2 = new CoordinateDTO {
                Latitude = 16, Longitude = 40
            };

            _geoLocationServiceMock.Setup(m => m.GetRoute(It.IsInRange(7.9, 8.1, Range.Inclusive),
                                                          It.IsInRange(84.9, 85.1, Range.Inclusive), It.IsInRange(22.9, 23.1, Range.Inclusive),
                                                          It.IsInRange(48.9, 49.1, Range.Inclusive)))
            .Returns(new CoordinateDTO[] { coordinate1, coordinate2 });

            RouteToPointOfInterestDTO routeToPointOfInterestDto = _target.StartUserTour(1, 2, 8, 85);

            Assert.IsNotNull(routeToPointOfInterestDto);
            Assert.IsNotNull(routeToPointOfInterestDto.NextPOI);
            Assert.IsNotNull(routeToPointOfInterestDto.RouteToNextPOI);
            Assert.AreEqual(nextPOI.Id, routeToPointOfInterestDto.NextPOI.Id);
            Assert.AreEqual(nextPOI.Description, routeToPointOfInterestDto.NextPOI.Description);
            Assert.AreEqual(nextPOI.VisitDuration, routeToPointOfInterestDto.NextPOI.VisitDuration);
            Assert.AreEqual(23.0, routeToPointOfInterestDto.NextPOI.Latitude, 0.1);
            Assert.AreEqual(49.0, routeToPointOfInterestDto.NextPOI.Longitude, 0.1);
            Assert.AreEqual(2.0, routeToPointOfInterestDto.RouteToNextPOI.Count());
            Assert.AreEqual(14.0, routeToPointOfInterestDto.RouteToNextPOI.ElementAt(0).Latitude, 0.1);
            Assert.AreEqual(39.0, routeToPointOfInterestDto.RouteToNextPOI.ElementAt(0).Longitude, 0.1);
            Assert.AreEqual(16.0, routeToPointOfInterestDto.RouteToNextPOI.ElementAt(1).Latitude, 0.1);
            Assert.AreEqual(40.0, routeToPointOfInterestDto.RouteToNextPOI.ElementAt(1).Longitude, 0.1);
        }
        public List <ServicePinDTO> GetNearUntakenServices(CoordinateDTO coordinates)
        {
            var response        = new List <ServicePinDTO>();
            var currentLocation = GenerateDBGeographyFromCoordinates(coordinates);

            using (var entities = new UCAInvestDBEntities())
            {
                var Services = (from u in entities.user_services
                                where u.taken_timestamp == 0 && u.completed_timestamp == 0 && u.location.Distance(currentLocation) <= CommonConfig.IncidenceRadiusInM
                                orderby u.location.Distance(currentLocation)
                                select u);

                foreach (var service in Services)
                {
                    response.Add(new ServicePinDTO(service.ServiceUser.username, new CoordinateDTO((double)service.location.Latitude, (double)service.location.Longitude), service.ServiceUser.plate, service.description, (long)service.request_timestamp, 2, service.ServiceUser.user_id, service.service_id));
                }
            }
            return(response);
        }
        public List <MapPinDTO> GetNearCranes(CoordinateDTO coordinates)
        {
            var response        = new List <MapPinDTO>();
            var currentLocation = GenerateDBGeographyFromCoordinates(coordinates);

            using (var entities = new UCAInvestDBEntities())
            {
                var Cranes = (from u in entities.user_locations
                              where u.users.is_provider == 1 &&
                              u.location.Distance(currentLocation) <= CommonConfig.IncidenceRadiusInM
                              orderby u.location.Distance(currentLocation)
                              select u);
                foreach (var crane in Cranes)
                {
                    response.Add(new MapPinDTO(crane.users.username,
                                               new CoordinateDTO((double)crane.location.Latitude, (double)crane.location.Longitude),
                                               crane.users.plate, "", (long)crane.timestamp, (int)crane.users.is_provider, crane.user_id));
                }
            }
            return(response);
        }
        public CurrentServicePositionsDTO ServicePosition(int userId)
        {
            CurrentServicePositionsDTO response = null;

            using (var entities = new UCAInvestDBEntities())
            {
                var serviceDbResponse =
                    entities.user_services.SingleOrDefault(t =>
                                                           (t.crane_user_id == userId || t.client_user_id == userId) && t.completed_timestamp == 0);
                if (serviceDbResponse != null)
                {
                    response = new CurrentServicePositionsDTO();
                    var cranePosition = new CoordinateDTO(
                        (double)serviceDbResponse.CraneUser.user_locations.location.Latitude,
                        (double)serviceDbResponse.CraneUser.user_locations.location.Longitude);
                    if (userId == serviceDbResponse.crane_user_id)
                    {
                        response.OtherUser         = new UsersServices().PublicUserById((int)serviceDbResponse.client_user_id);
                        response.OtherUserPosition = new CoordinateDTO((double)serviceDbResponse.ServiceUser.user_locations.location.Latitude,
                                                                       (double)serviceDbResponse.ServiceUser.user_locations.location.Longitude);
                    }
                    else
                    {
                        response.OtherUser         = new UsersServices().PublicUserById((int)serviceDbResponse.crane_user_id);
                        response.OtherUserPosition = cranePosition;
                    }


                    response.RequestedPosition = new CoordinateDTO((double)serviceDbResponse.location.Latitude,
                                                                   (double)serviceDbResponse.location.Longitude);

                    response.ServiceId     = serviceDbResponse.service_id;
                    response.TimeRemaining = new GoogleTimeService().timeLeft(cranePosition, response.RequestedPosition);
                }
            }
            return(response);
        }
 public void UpdatePosition(int userId, CoordinateDTO coordinates)
 {
     using (var entities = new UCAInvestDBEntities())
     {
         var dbResponse       = entities.user_locations.SingleOrDefault(t => t.user_id == userId);
         var currentLocation  = GenerateDBGeographyFromCoordinates(coordinates);
         var currentTimestamp = (long?)TimeFunctions.DateTimeToUnixTimestamp(DateTime.Now);
         if (dbResponse != null)
         {
             dbResponse.location  = currentLocation;
             dbResponse.timestamp = currentTimestamp;
         }
         else
         {
             entities.user_locations.Add(new UserLocation()
             {
                 location  = currentLocation,
                 timestamp = currentTimestamp,
                 user_id   = userId
             });
         }
         entities.SaveChanges();
     }
 }
Esempio n. 14
0
        public void TestThatRouteToNextPOIIsReturnedCorrectly()
        {
            SetupActiveTourAndNextPOI(8, 13, 28);
            var point1 = new CoordinateDTO {
                Latitude = 2.4, Longitude = 33.4
            };
            var point2 = new CoordinateDTO {
                Latitude = 2.7, Longitude = 33.7
            };
            var route = new CoordinateDTO[] { point1, point2 };

            _geoLocationServiceMock.Setup(m => m.GetRoute(It.IsInRange(1.9, 2.1, Range.Inclusive),
                                                          It.IsInRange(32.9, 33.1, Range.Inclusive), It.IsInRange(2.9, 3.1, Range.Inclusive),
                                                          It.IsInRange(33.9, 34.1, Range.Inclusive))).Returns(route);

            IEnumerable <CoordinateDTO> result = _target.GetRouteToNextPOI(8, 2.0, 33.0);

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(2.4, result.ElementAt(0).Latitude, 0.1);
            Assert.AreEqual(33.4, result.ElementAt(0).Longitude, 0.1);
            Assert.AreEqual(2.7, result.ElementAt(1).Latitude, 0.1);
            Assert.AreEqual(33.7, result.ElementAt(1).Longitude, 0.1);
        }
Esempio n. 15
0
        public async Task <ActionResult <string> > Get()
        {
            var res = "";

            try
            {
                // KEY cache te tutulacak unique key uret :
                //string memCacheKey = (geoCoordinateRecord.destination_latitude.ToString() + geoCoordinateRecord.destination_longitude.ToString()
                //    + geoCoordinateRecord.source_latitude.ToString() + geoCoordinateRecord.source_longitude.ToString()).Trim().ToLower();


                var cacheExpOptions = new MemoryCacheEntryOptions
                {
                    AbsoluteExpiration = DateTime.Now.AddMinutes(60), //60dk cachete tut
                    Size = 50
                };

                // 1.KONTROL: Cache e bak
                //if (!_memoryCache.TryGetValue(memCacheKey, out GeoCoordinateRecord cachedWeatherRecord)) //cachte kayit yok ise
                {
                    //var dbRecord = await _geoCoordinateRepository.GetWeatherData(memCacheKey);
                    List <GeoCoordinateRecord> recordList        = new List <GeoCoordinateRecord>();
                    List <CoordinateDTO>       recordListForQueu = new List <CoordinateDTO>();
                    GeoCoordinateRecord        rec;
                    CoordinateDTO Queu;
                    Random        myRandom;

                    { }
                    for (int i = 0; i < 10000; i++)
                    {
                        myRandom = new Random();
                        rec      = new GeoCoordinateRecord();
                        Queu     = new CoordinateDTO();

                        //--------------------  Colelction for DB Insert -----------------------------------
                        rec.gcSource_latitude       = Convert.ToDecimal(String.Format("{0:0.000000}", myRandom.NextDouble(36.000000, 42.000000)));
                        rec.gcSource_longitude      = Convert.ToDecimal(String.Format("{0:0.000000}", myRandom.NextDouble(26.000000, 45.000000)));
                        rec.gcDestination_latitude  = Convert.ToDecimal(String.Format("{0:0.000000}", myRandom.NextDouble(36.000000, 42.000000)));
                        rec.gcDestination_longitude = Convert.ToDecimal(String.Format("{0:0.000000}", myRandom.NextDouble(26.000000, 45.000000)));
                        rec.gcInsertDate            = DateTime.Now;
                        recordList.Add(rec);
                        //-----------------------------------------------------------------------------------

                        //--------------------  Colelction for Log Queu with distance in KM  ----------------
                        Queu.Source_latitude       = rec.gcSource_latitude;
                        Queu.Source_longitude      = rec.gcSource_longitude;
                        Queu.Destination_latitude  = rec.gcDestination_latitude;
                        Queu.Destination_longitude = rec.gcDestination_longitude;
                        //Calculate Distance between 2 points
                        var    locA     = new GeoCoordinate(Convert.ToDouble(rec.gcSource_latitude), Convert.ToDouble(rec.gcSource_longitude));
                        var    locB     = new GeoCoordinate(Convert.ToDouble(rec.gcDestination_latitude), Convert.ToDouble(rec.gcDestination_longitude));
                        double distance = locA.GetDistanceTo(locB) / 1000; // kilometres
                        Queu.Distance = Convert.ToInt32(distance);
                        recordListForQueu.Add(Queu);
                        //-----------------------------------------------------------------------------------
                    }

                    // DB Insert
                    res = await _geoCoordinateRepository.AddRecordsToDB(recordList);

                    // Queu Insert
                    res += await _geoCoordinateRepository.AddRecordsToQueu(recordListForQueu);
                }
                //else // Kayit Cache de mevcut ise bunu kullan..
                {
                }

                return(Ok(res));
            }
            catch (Exception ex)
            {
                return(NotFound("ERROR at Try(GetWeatherData): " + ex.Message));
            }
        }
Esempio n. 16
0
 public WaterContainerResponse GetWaterContainerResult(CoordinateDTO request)
 {
     return(this.waterContainerSolution.ResultWaterContainer(request));
 }