Example #1
0
        /// <summary>
        /// Add Order
        /// </summary>
        /// <returns> Added Order </returns>
        public Order AddOrder()
        {
            // Create the manager with the api key
              Route4MeManager route4Me = new Route4MeManager(c_ApiKey);

              Order order = new Order()
              {
            Address1 = "Test Address1 " + (new Random()).Next().ToString(),
            AddressAlias = "Test AddressAlias " + (new Random()).Next().ToString(),
            CachedLatitude = 37.773972,
            CachedLongitude = -122.431297
              };

              // Run the query
              string errorString;
              Order resultOrder = route4Me.AddOrder(order, out errorString);

              Console.WriteLine("");

              if (resultOrder != null)
              {
            Console.WriteLine("AddOrder executed successfully");

            Console.WriteLine("Order ID: {0}", resultOrder.OrderId);

            return resultOrder;
              }
              else
              {
            Console.WriteLine("AddOrder error: {0}", errorString);

            return null;
              }
        }
        /// <summary>
        /// Add Order
        /// </summary>
        /// <returns> Added Order </returns>
        public Order AddOrder()
        {
            // Create the manager with the api key
            Route4MeManager route4Me = new Route4MeManager(c_ApiKey);

            Order order = new Order()
            {
                address_1     = "Test Address1 " + (new Random()).Next().ToString(),
                address_alias = "Test AddressAlias " + (new Random()).Next().ToString(),
                cached_lat    = 37.773972,
                cached_lng    = -122.431297
            };

            // Run the query
            string errorString;
            Order  resultOrder = route4Me.AddOrder(order, out errorString);

            Console.WriteLine("");

            if (resultOrder != null)
            {
                Console.WriteLine("AddOrder executed successfully");

                Console.WriteLine("Order ID: {0}", resultOrder.order_id);

                return(resultOrder);
            }
            else
            {
                Console.WriteLine("AddOrder error: {0}", errorString);

                return(null);
            }
        }
Example #3
0
        /// <summary>
        /// Add Order
        /// </summary>
        /// <returns> Added Order </returns>
        public void AddOrder()
        {
            // Create the manager with the api key
            var route4Me = new Route4MeManager(ActualApiKey);

            var order = new Order()
            {
                address_1     = "Test Address1 " + (new Random()).Next().ToString(),
                address_alias = "Test AddressAlias " + (new Random()).Next().ToString(),
                cached_lat    = 37.773972,
                cached_lng    = -122.431297
            };

            // Run the query
            Order resultOrder = route4Me.AddOrder(order, out string errorString);

            if (resultOrder != null && resultOrder.GetType() == typeof(Order))
            {
                OrdersToRemove.Add(resultOrder.order_id.ToString());
            }

            PrintExampleOrder(resultOrder, errorString);

            RemoveTestOrders();
        }
Example #4
0
        /// <summary>
        /// Add Scheduled Order
        /// </summary>
        /// <returns> Added Order </returns>
        public Order AddScheduledOrder()
        {
            // Create the manager with the api key
            Route4MeManager route4Me = new Route4MeManager(c_ApiKey);

            Order order = new Order()
            {
                address_1             = "318 S 39th St, Louisville, KY 40212, USA",
                cached_lat            = 38.259326,
                cached_lng            = -85.814979,
                curbside_lat          = 38.259326,
                curbside_lng          = -85.814979,
                address_alias         = "318 S 39th St 40212",
                address_city          = "Louisville",
                EXT_FIELD_first_name  = "Lui",
                EXT_FIELD_last_name   = "Carol",
                EXT_FIELD_email       = "*****@*****.**",
                EXT_FIELD_phone       = "897946541",
                EXT_FIELD_custom_data = new Dictionary <string, string>()
                {
                    { "order_type", "scheduled order" }
                },
                day_scheduled_for_YYMMDD  = "2017-12-20",
                local_time_window_end     = 39000,
                local_time_window_end_2   = 46200,
                local_time_window_start   = 37800,
                local_time_window_start_2 = 45000,
                local_timezone_string     = "America/New_York",
                order_icon = "emoji/emoji-bank"
            };

            // Run the query
            string errorString;
            Order  resultOrder = route4Me.AddOrder(order, out errorString);

            Console.WriteLine("");

            if (resultOrder != null)
            {
                Console.WriteLine("AddScheduledOrder executed successfully");

                Console.WriteLine("Order ID: {0}", resultOrder.order_id);

                return(resultOrder);
            }
            else
            {
                Console.WriteLine("AddScheduledOrder error: {0}", errorString);

                return(null);
            }
        }
        /// <summary>
        /// Add Scheduled Order
        /// </summary>
        public void AddScheduledOrder()
        {
            // Create the manager with the api key
            var route4Me = new Route4MeManager(ActualApiKey);

            var orderParams = new Order()
            {
                address_1             = "318 S 39th St, Louisville, KY 40212, USA",
                cached_lat            = 38.259326,
                cached_lng            = -85.814979,
                curbside_lat          = 38.259326,
                curbside_lng          = -85.814979,
                address_alias         = "318 S 39th St 40212",
                address_city          = "Louisville",
                EXT_FIELD_first_name  = "Lui",
                EXT_FIELD_last_name   = "Carol",
                EXT_FIELD_email       = "*****@*****.**",
                EXT_FIELD_phone       = "897946541",
                EXT_FIELD_custom_data = new Dictionary <string, string>()
                {
                    { "order_type", "scheduled order" }
                },
                day_scheduled_for_YYMMDD  = "2017-12-20",
                local_time_window_end     = 39000,
                local_time_window_end_2   = 46200,
                local_time_window_start   = 37800,
                local_time_window_start_2 = 45000,
                local_timezone_string     = "America/New_York",
                order_icon = "emoji/emoji-bank"
            };

            var newOrder = route4Me.AddOrder(orderParams, out string errorString);

            PrintExampleOrder(newOrder, errorString);

            if (newOrder != null && newOrder.GetType() == typeof(Order))
            {
                OrdersToRemove = new List <string>()
                {
                    newOrder.order_id.ToString()
                }
            }
            ;

            RemoveTestOrders();
        }
    }
        /// <summary>
        /// Create an order with custom fields.
        /// </summary>
        public void CreateOrderWithCustomField()
        {
            var route4Me = new Route4MeManager(ActualApiKey);

            var orderParams = new Order()
            {
                address_1  = "1358 E Luzerne St, Philadelphia, PA 19124, US",
                cached_lat = 48.335991,
                cached_lng = 31.18287,
                day_scheduled_for_YYMMDD = "2019-10-11",
                address_alias            = "Auto test address",
                CustomUserFields         = new OrderCustomField[]
                {
                    new OrderCustomField()
                    {
                        OrderCustomFieldId    = 93,
                        OrderCustomFieldValue = "false"
                    }
                }
            };

            var result = route4Me.AddOrder(orderParams, out string errorString);

            PrintExampleOrder(result, errorString);

            if (result != null && result.GetType() == typeof(Order))
            {
                OrdersToRemove = new List <string>()
                {
                    result.order_id.ToString()
                }
            }
            ;

            RemoveTestOrders();
        }
    }
Example #7
0
        public void HybridOptimizationFrom1000Orders()
        {
            // Create the manager with the api key
            Route4MeManager route4Me = new Route4MeManager("11111111111111111111111111111111");

            #region ======= Add scheduled address book locations to an user account ================================
            string sAddressFile = @"Data/orders_1000.csv";

            using (TextReader reader = File.OpenText(sAddressFile))
            {
                var csv = new CsvReader(reader);
                //int iCount = 0;
                while (csv.Read())
                {
                    var lng        = csv.GetField(0);
                    var lat        = csv.GetField(1);
                    var alias      = csv.GetField(2);
                    var address1   = csv.GetField(3);
                    var city       = csv.GetField(4);
                    var state      = csv.GetField(5);
                    var zip        = csv.GetField(6);
                    var phone      = csv.GetField(7);
                    var sched_date = csv.GetField(8);

                    string sAddress = "";

                    if (address1 != null)
                    {
                        sAddress += address1.ToString().Trim();
                    }
                    if (city != null)
                    {
                        sAddress += ", " + city.ToString().Trim();
                    }
                    if (state != null)
                    {
                        sAddress += ", " + state.ToString().Trim();
                    }
                    if (zip != null)
                    {
                        sAddress += ", " + zip.ToString().Trim();
                    }

                    if (sAddress == "")
                    {
                        continue;
                    }

                    Order newOrder = new Order();

                    if (lng != null)
                    {
                        newOrder.cached_lat = Convert.ToDouble(lng);
                    }
                    if (lat != null)
                    {
                        newOrder.cached_lng = Convert.ToDouble(lat);
                    }
                    if (alias != null)
                    {
                        newOrder.address_alias = alias.ToString().Trim();
                    }
                    newOrder.address_1 = sAddress;
                    if (phone != null)
                    {
                        newOrder.EXT_FIELD_phone = phone.ToString().Trim();
                    }

                    DateTime dt = DateTime.Now;

                    if (sched_date != null)
                    {
                        if (DateTime.TryParse(sched_date.ToString(), out dt))
                        {
                            dt = Convert.ToDateTime(sched_date);
                            newOrder.day_scheduled_for_YYMMDD = dt.ToString("yyyy-MM-dd");
                        }
                    }

                    string errorString;

                    Order resultOrder = route4Me.AddOrder(newOrder, out errorString);
                    showResult(resultOrder, errorString);

                    Thread.Sleep(1000);
                    //iCount++;
                    //if (iCount == 60) break;
                }
            };

            #endregion

            Thread.Sleep(2000);

            #region ======= Get Hybrid Optimization ================================
            TimeSpan      tsp1day         = new TimeSpan(1, 0, 0, 0);
            List <string> lsScheduledDays = new List <string>();
            DateTime      curDate         = DateTime.Now;
            for (int i = 0; i < 5; i++)
            {
                curDate += tsp1day;
                lsScheduledDays.Add(curDate.ToString("yyyy-MM-dd"));
            }

            Address[] Depots = new Address[] {
                new Address {
                    AddressString     = "2017 Ambler Ave, Abilene, TX, 79603-2239",
                    IsDepot           = true,
                    Latitude          = 32.474395,
                    Longitude         = -99.7447021,
                    CurbsideLatitude  = 32.474395,
                    CurbsideLongitude = -99.7447021
                },
                new Address {
                    AddressString     = "807 Ridge Rd, Alamo, TX, 78516-9596",
                    IsDepot           = true,
                    Latitude          = 26.170834,
                    Longitude         = -98.116201,
                    CurbsideLatitude  = 26.170834,
                    CurbsideLongitude = -98.116201
                },
                new Address {
                    AddressString     = "1430 W Amarillo Blvd, Amarillo, TX, 79107-5505",
                    IsDepot           = true,
                    Latitude          = 35.221969,
                    Longitude         = -101.835288,
                    CurbsideLatitude  = 35.221969,
                    CurbsideLongitude = -101.835288
                },
                new Address {
                    AddressString     = "3611 Ne 24Th Ave, Amarillo, TX, 79107-7242",
                    IsDepot           = true,
                    Latitude          = 35.236626,
                    Longitude         = -101.795117,
                    CurbsideLatitude  = 35.236626,
                    CurbsideLongitude = -101.795117
                },
                new Address {
                    AddressString     = "1525 New York Ave, Arlington, TX, 76010-4723",
                    IsDepot           = true,
                    Latitude          = 32.720524,
                    Longitude         = -97.080195,
                    CurbsideLatitude  = 32.720524,
                    CurbsideLongitude = -97.080195
                }
            };

            string errorString1;
            string errorString2;
            string errorString3;

            foreach (string ScheduledDay in lsScheduledDays)
            {
                HybridOptimizationParameters hparams = new HybridOptimizationParameters()
                {
                    target_date_string      = ScheduledDay,
                    timezone_offset_minutes = 480
                };

                DataObject resultOptimization = route4Me.GetOHybridptimization(hparams, out errorString1);

                string HybridOptimizationId = "";

                if (resultOptimization != null)
                {
                    HybridOptimizationId = resultOptimization.OptimizationProblemId;
                    Console.WriteLine("Hybrid optimization generating executed successfully");

                    Console.WriteLine("Generated hybrid optimization ID: {0}", HybridOptimizationId);
                }
                else
                {
                    Console.WriteLine("Hybrid optimization generating error: {0}", errorString1);
                    continue;
                }

                //============== Add Depot To Hybrid Optimization ===============
                HybridDepotParameters hDepotParams = new HybridDepotParameters()
                {
                    optimization_problem_id = HybridOptimizationId,
                    delete_old_depots       = true,
                    new_depots = new Address[] { Depots[lsScheduledDays.IndexOf(ScheduledDay)] }
                };

                var addDepotResult = route4Me.AddDepotsToHybridOptimization(hDepotParams, out errorString3);

                Thread.Sleep(5000);

                //============== Reoptimization =================================
                OptimizationParameters optimizationParameters = new OptimizationParameters()
                {
                    OptimizationProblemID = HybridOptimizationId,
                    ReOptimize            = true
                };

                DataObject finalOptimization = route4Me.UpdateOptimization(optimizationParameters, out errorString2);

                Console.WriteLine("");

                if (finalOptimization != null)
                {
                    Console.WriteLine("ReOptimization executed successfully");

                    Console.WriteLine("Optimization Problem ID: {0}", finalOptimization.OptimizationProblemId);
                    Console.WriteLine("State: {0}", finalOptimization.State);
                }
                else
                {
                    Console.WriteLine("ReOptimization error: {0}", errorString2);
                }

                Thread.Sleep(5000);
                //=================================================================
            }

            #endregion
        }