ID); } /** * Apply wiaas custome tranformation on retrieved JSON order object * * @param $response * @param $order * @param $request * * @return mixed */ public static function transform_rest_order($response, $order, $request) { $data = $response->get_data(); $is_customer = wcj_is_user_role('customer'); if ($is_customer || true) { // Format date values. $data['date_created'] = self::_format_order_date($order->get_date_created()); $data['date_modified'] = self::_format_order_date($order->get_date_modified()); $data['date_completed'] = self::_format_order_date($order->get_date_completed()); } # apply overrides $data = self::_append_products_info($data, $order, $request); $data = self::_append_order_process($data, $order, $request); $data = self::_append_customer_info($data, $order, $request); $data = self::_append_commercial_lead_info($data, $order, $request); $response->set_data($data); return $response; } private static function _append_commercial_lead_info($data, $order, $request) { $data['commercial_lead'] = array( 'name' => 'Coor Service Management', 'phone' => '123456789', 'email' => 'rikard@co-ideation.com' ); return $data; } private static function _append_customer_info($data, $order, $request) { $customer_id = $data['customer_id']; $customer_user = get_user_by('id', $customer_id); $data['customer'] = array( 'email' => $customer_user->user_email, 'name' => $customer_user->display_name, 'phone' => get_user_meta($customer_id, 'wiaas_customer_phone', true) ); return $data; } private static function _append_products_info($data, $order, $request) { foreach ($data['line_items'] as $index => $product_line) { # lock all products to `Purchase` payment type $product_line['payment_type'] = 'Purchase'; # lock all products to have no service $product_line['service_price'] = 0; $product_line['service_contract_period'] = 0; $product_line['max_contract_period'] = 36; $product_line['period_unit'] = 'month'; # simplify payment for all products $product_line['recurring_price'] = 0; $product_line['pay_period'] = 0; # collect status from order $product_line['status'] = $data['status']; $product_line['short_desc'] = $product_line['status']; # collect completion data from order $product_line['date_completed'] = $data['date_completed']; $data['line_items'][$index] = $product_line; } return $data; } /** * Append order delivery process info if single order is requested * @param $data * @param $order * @param $request * * @return mixed */ private static function _append_order_process($data, $order, $request) { # if this is response to `/order/[id]` if (isset($request['id'])) { $data['delivery-process'] = Wiaas_Delivery_Process::get_order_delivery_process($order->get_id()); } return $data; } private static function _format_order_date($date) { $date = new WC_DateTime( $date, new DateTimeZone( 'UTC' ) ); $date->setTimezone( new DateTimeZone( wc_timezone_string() ) ); return gmdate('jS F, Y', $date->getTimestamp()); } } Wiaas_Order::init();