/**
  * Instantiates the MDS Collivery class
  */
 function init_mds_collivery()
 {
     $this->collivery_service = MdsColliveryService::getInstance($this->settings);
     $this->collivery = $this->collivery_service->returnColliveryClass();
     $this->converter = $this->collivery_service->returnConverterClass();
     $this->cache = $this->collivery_service->returnCacheClass();
 }
function generate_suburbs()
{
    // Here so we can auto select the clients state
    if (WC()->session->get_customer_id() > 0 && $_POST['type']) {
        global $wpdb;
        $table_name = $wpdb->prefix . 'usermeta';
        $config = $wpdb->get_results("SELECT * FROM `" . $table_name . "` WHERE user_id=" . WC()->session->get_customer_id() . " and meta_key='" . $_POST['type'] . "city';", OBJECT);
        $selected_suburb = $config[0]->meta_value;
    }
    if (isset($_POST['town']) && $_POST['town'] != '') {
        /** @var \MdsSupportingClasses\MdsColliveryService $mds */
        $mds = MdsColliveryService::getInstance();
        $collivery = $mds->returnColliveryClass();
        $town_id = array_search($_POST['town'], $collivery->getTowns());
        $fields = $collivery->getSuburbs($town_id);
        if (!empty($fields)) {
            if (count($fields) == 1) {
                foreach ($fields as $value) {
                    echo '<option value="' . $value . '">' . $value . '</option>';
                }
            } else {
                if (isset($selected_suburb)) {
                    foreach ($fields as $value) {
                        if ($value != $selected_suburb) {
                            echo '<option value="' . $value . '">' . $value . '</option>';
                        } else {
                            echo '<option value="' . $value . '" selected="selected">' . $value . '</option>';
                        }
                    }
                } else {
                    echo "<option value=\"\" selected=\"selected\">Select Suburb</option>";
                    foreach ($fields as $value) {
                        echo '<option value="' . $value . '">' . $value . '</option>';
                    }
                }
            }
        } else {
            echo '<option value="">Error retrieving data from server. Please try again later...</option>';
        }
    } else {
        echo '<option value="">First Select Town...</option>';
    }
    die;
}
/**
 * Order actions process MDS Shipping
 */
function mds_register_collivery()
{
    $order = new WC_Order($_GET['post_id']);
    $order_id = $_GET['post_id'];
    $custom_fields = $order->order_custom_fields;
    /** @var \MdsSupportingClasses\MdsColliveryService $mds */
    $mds = MdsColliveryService::getInstance();
    $collivery = $mds->returnColliveryClass();
    $settings = $mds->returnPluginSettings();
    $parcels = $mds->getOrderContent($order->get_items());
    $defaults = $mds->returnDefaultAddress();
    $addresses = $collivery->getAddresses();
    $instructions = "Order number: " . $order_id;
    if (isset($settings['include_product_titles']) && $settings['include_product_titles'] == "yes") {
        $count = 1;
        $instructions .= ': ';
        foreach ($parcels as $parcel) {
            if (isset($parcel['description'])) {
                $ending = $count == count($parcels) ? '' : ', ';
                $instructions .= $parcel['quantity'] . ' X ' . $parcel['description'] . $ending;
                $count++;
            }
        }
    }
    include 'Views/order.php';
    // Include our admin page
}
 /**
  * Automatically send MDS Collivery the delivery request when status changes to processing for cod, eft's and cheque
  *
  * @param $order_id
  * @return string
  */
 function automated_add_collivery_status_processing($order_id)
 {
     /** @var \MdsSupportingClasses\MdsColliveryService $mds */
     $mds = MdsColliveryService::getInstance();
     $settings = $mds->returnPluginSettings();
     if ($settings['enabled'] == 'yes' && $settings["toggle_automatic_mds_processing"] == 'yes') {
         $order = new WC_Order($order_id);
         if ($order->payment_method === "cod" || $order->payment_method === "cheque" || $order->payment_method === "bacs") {
             $mds->automatedAddCollivery($order_id, true);
         }
     }
 }