public function update_items($request)
{
$request_body = $request->get_body();
$settings = json_decode($request_body, true, WOOCOMMERCE_CONNECT_MAX_JSON_DECODE_DEPTH);
$order_id = $settings['order_id'];
$settings['payment_method_id'] = $this->settings_store->get_selected_payment_method_id();
$settings['carrier'] = 'usps';
$settings['label_size'] = 'default';
$settings['ship_date'] = date('Y-m-d', time() + 86400);
// tomorrow
$service_names = array();
foreach ($settings['packages'] as $index => $package) {
$service_names[] = $package['service_name'];
unset($package['service_name']);
$settings['packages'][$index] = $package;
}
$response = $this->api_client->send_shipping_label_request($settings);
if (is_wp_error($response)) {
$error = new WP_Error($response->get_error_code(), $response->get_error_message(), array('message' => $response->get_error_message()));
$this->logger->log($error, __CLASS__);
return $error;
}
$labels_order_meta = array();
$labels_data = array();
foreach ($response->labels as $index => $label_data) {
if (isset($label_data->error)) {
$error = new WP_Error($label_data->error->code, $label_data->error->message, array('message' => $label_data->error->message));
$this->logger->log($error, __CLASS__);
return $error;
}
$labels_data[] = $label_data->label;
$labels_order_meta[] = array('label_id' => $label_data->label->label_id, 'tracking' => $label_data->label->tracking_id, 'refundable_amount' => $label_data->label->refundable_amount, 'created' => $label_data->label->created, 'carrier_id' => $settings['carrier'], 'service_name' => $service_names[$index]);
}
update_post_meta($order_id, 'wc_connect_labels', json_encode($labels_order_meta));
return array('labels' => $labels_order_meta, 'success' => true);
}