public Directions getDirectionsFromAddresses(PickUpAddress pickUpAddress, ClientAddress ClientAddress)
        {
            Directions directions = new Directions(getStringFromAddress(pickUpAddress), getStringFromAddress(ClientAddress));

            directions.ApiKey = options.GoogleMapsApiKey;
            return(directions);
        }
Exemple #2
0
        public void testGetClosestDepotLocation()
        {
            var responseMessageOne = new HttpResponseMessage();

            responseMessageOne.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"0.8 mi\",\"value\":2},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}");

            var responseMessageTwo = new HttpResponseMessage();

            responseMessageTwo.Content = new StringContent("{\"destination_addresses\":[\"Village Way, Brighton BN1, United Kingdom\"],\"origin_addresses\":[\"Arts Rd, Falmer, Brighton BN1 9QN, United Kingdom\"],\"rows\":[{\"elements\":[{\"distance\":{\"text\":\"3.6 mi\",\"value\":10},\"duration\":{\"text\":\"4 min\",\"value\":235},\"status\":\"OK\"}]}],\"status\":\"OK\"}");
            List <HttpResponseMessage> responses = new List <HttpResponseMessage>();

            responses.Add(responseMessageOne);
            responses.Add(responseMessageTwo);
            TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses);


            LocationService service = new LocationService(googleMaps);

            IList <PickUpAddress> addressList = new List <PickUpAddress>();
            PickUpAddress         depot1      = new PickUpAddress();

            addressList.Add(depot1);

            PickUpAddress depot2 = new PickUpAddress();

            addressList.Add(depot2);

            Center center = new Center();

            center.lat = 1;
            center.lng = 1;
            var result = service.FindClosestDepotLocationForRoute(addressList, center);

            Assert.Equal(depot1, result.Result);
        }
Exemple #3
0
        public virtual async Task <RouteDetails> getRouteDurationAndOverallDistance(PickUpAddress depot, List <Delivery> deliveries)
        {
            string waypointsUriString = "";

            foreach (Delivery delivery in deliveries)
            {
                waypointsUriString += DirectionsService.getStringFromAddressInLatLngFormat(delivery.Client.Address);
                waypointsUriString += "|";
            }
            waypointsUriString = waypointsUriString.TrimEnd('|');
            string depotUriString        = DirectionsService.getStringFromAddressInLatLngFormat(depot);
            string uri                   = "https://maps.googleapis.com/maps/api/directions/json?origin=" + depotUriString + "&destination=" + depotUriString + "&waypoints=optimize:true|" + waypointsUriString;
            HttpResponseMessage response = await googleMaps.performGoogleMapsRequestAsync(uri);

            var jsonString = response.Content.ReadAsStringAsync().Result;

            JObject json = JObject.Parse(jsonString);

            var distanceObjects     = json["routes"].Children()["legs"].Children()["distance"];
            var distanceValues      = distanceObjects.Select(ds => ds["value"]).Values <double>();
            var overallDistanceInKm = Math.Round(distanceValues.Sum() / 1000, 2);

            var durationObjects        = json["routes"].Children()["legs"].Children()["duration"];
            var durationValues         = durationObjects.Select(ds => ds["value"]).Values <double>();
            var overallDurationInHours = Math.Round(durationValues.Sum() / 3600, 2);

            return(new RouteDetails(overallDistanceInKm, overallDurationInHours));
        }
Exemple #4
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,City,LineOne,LineTwo,PostCode,Default")] PickUpAddress pickUpAddress)
        {
            if (id != pickUpAddress.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var addressEntity = _context.PickUpAddress.SingleOrDefault(a => a.ID == pickUpAddress.ID);
                    addressEntity.LineOne  = pickUpAddress.LineOne;
                    addressEntity.LineTwo  = pickUpAddress.LineTwo;
                    addressEntity.City     = pickUpAddress.City;
                    addressEntity.PostCode = pickUpAddress.PostCode;
                    _context.Update(addressEntity);
                    _context.SaveChanges();
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!PickUpAddressExists(pickUpAddress.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction("Index"));
            }
            return(View(pickUpAddress));
        }
Exemple #5
0
        public static PickUpAddress getDeliveryPickUpAddress()
        {
            PickUpAddress pickUpAddress = new PickUpAddress();

            pickUpAddress.LineOne  = "LineOneData";
            pickUpAddress.LineTwo  = "LineTwoData";
            pickUpAddress.City     = "London";
            pickUpAddress.PostCode = "LN2 3LN";
            return(pickUpAddress);
        }
Exemple #6
0
        public void testGetDirections()
        {
            PickUpAddress     pickUpAddress = new PickUpAddress("23 London Road", "Flat 2", "Brighton", "BN2 4PN");
            ClientAddress     clientAddress = new ClientAddress("25 London Road", "Flat 2", "Brighton", "BN2 4PN");
            DirectionsService service       = new DirectionsService();

            service.options = new AppProperties();
            Directions result = service.getDirectionsFromAddresses(pickUpAddress, clientAddress);

            Assert.Equal("23 London Road Flat 2 Brighton BN2 4PN", result.From);
            Assert.Equal("25 London Road Flat 2 Brighton BN2 4PN", result.To);
        }
Exemple #7
0
        public async Task <IActionResult> Create([Bind("ID,City,LineOne,LineTwo,PostCode,Default")] PickUpAddress pickUpAddress)
        {
            if (ModelState.IsValid)
            {
                await googleMaps.addLocationDataToAddress(pickUpAddress);

                company.PickUpLocations.Add(pickUpAddress);
                _context.Add(pickUpAddress);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(pickUpAddress));
        }
        private Address getAddress(bool driver)
        {
            Address address = null;

            if (driver)
            {
                address = new DriverAddress();
            }
            else
            {
                address = new PickUpAddress();
            }
            address.City     = "City";
            address.LineOne  = "LineOne";
            address.PostCode = "PostCode";
            return(address);
        }
Exemple #9
0
        public async Task testGetRouteDurationAndOverallDistance()
        {
            var    responseMessageOne = new HttpResponseMessage();
            string jsonResult         = "{\"geocoded_waypoints\":[],\"routes\":[{\"legs\":[{\"distance\":{\"text\":\"141 mi\",\"value\":200},\"duration\":{\"text\":\"1 h. 54 min.\",\"value\":3600}},{\"distance\":{\"text\":\"70 m\",\"value\":200},\"duration\":{\"text\":\"1 min.\",\"value\":3600}}]}]}";

            responseMessageOne.Content = new StringContent(jsonResult);

            List <HttpResponseMessage> responses = new List <HttpResponseMessage>();

            responses.Add(responseMessageOne);
            TestGoogleMapsUtil googleMaps = new TestGoogleMapsUtil(responses);

            LocationService service    = new LocationService(googleMaps);
            List <Delivery> deliveries = new List <Delivery>();
            PickUpAddress   depot      = new PickUpAddress();
            RouteDetails    result     = await service.getRouteDurationAndOverallDistance(depot, deliveries);

            Assert.Equal(0.4, result.OverallDistance);
            Assert.Equal(2, result.OverallTimeRequired);
        }
        private async Task  populateContextWithData(ApplicationDbContext context)
        {
            Client client = new Client
            {
                Email     = Constants.DEFAULT_EMAIL,
                FirstName = Constants.DEFAULT_NAME,
                LastName  = Constants.DEFAULT_NAME
            };
            ClientAddress clientAddress = new ClientAddress
            {
                LineOne  = "Village Way",
                LineTwo  = null,
                City     = "Brighton",
                PostCode = "BN1 9BL"
            };

            context.Addresses.Add(clientAddress);
            context.Clients.Add(client);
            client.Address = clientAddress;

            Delivery delivery = new Delivery();

            delivery.DeliveryStatus = new DeliveryStatus
            {
                Status = Status.New
            };

            PickUpAddress address = new PickUpAddress
            {
                LineOne  = "72 Newmarket Street",
                LineTwo  = null,
                City     = "Brighton",
                PostCode = "BN2 3QF"
            };

            context.Addresses.Add(address);
            delivery.Client = client;
            context.Deliveries.Add(delivery);
            await context.SaveChangesAsync();
        }
Exemple #11
0
 public AddressDto(PickUpAddress address) : this(address as IAddress)
 {
     Name = address.Name;
 }