/** * @param $result * @return OrderSearchResult */ public function fromApi($result) { $orderFactory = new OrderFactory(); $orders = []; foreach ($result->result as $order) { $orders[] = $orderFactory->fromApi($order); } return new OrderSearchResult($orders, $result->count, $result->search, $result->limit, $result->offset); }
/** * @param $id * @param null $oneTimeToken * @param bool $removeOneTimeToken * @return Order */ public function find($id = null, $oneTimeToken = null, $removeOneTimeToken = true) { $params = ['id' => $id, 'token' => CustomerHelper::checkLoggedinCustomer(), 'remove_one_time_token' => $removeOneTimeToken]; try { $orderFactory = new OrderFactory(); $apiResult = VendirunApi::makeRequest('order/find', $params)->getData(); $order = $orderFactory->fromApi($apiResult); $order->setOneTimeToken($oneTimeToken); return $order; } catch (FailResponseException $e) { return null; } }
/** * @param OrderRequest $request * @param CartRepository $cartRepository * @param OrderRepository $orderRepository * @param CustomerRepository $customerRepository * @param CartValuesTransformer $cartValuesTransformer * @param CartItemValuesTransformer $cartItemValuesTransformer * @return mixed */ public function process(OrderRequest $request, CartRepository $cartRepository, OrderRepository $orderRepository, CustomerRepository $customerRepository, CartValuesTransformer $cartValuesTransformer, CartItemValuesTransformer $cartItemValuesTransformer) { if (Request::has('recalculateShipping')) { return $this->recalculateShipping($customerRepository); } if (Request::has('orderId')) { return $this->processExistingOrder($orderRepository, Request::get('orderId')); } // construct the customer $customerFactory = new CustomerFactory(); try { $customer = $customerRepository->find(); $customer->setName(Name::fromFullName(Request::get('fullName'))); $customer->setPrimaryEmail(Request::get('emailAddress')); } catch (CustomerNotFoundException $e) { $customer = $customerFactory->make(null, Request::get('fullName'), Request::get('emailAddress')); } // get country ID from the shipping address $shippingAddressId = $request->get('shippingaddressId'); $shippingAddress = $customer->getAddressFromAddressId($shippingAddressId); $countryId = $shippingAddress ? $shippingAddress->getCountryId() : $request->get('shippingcountryId'); // construct the cart $cart = $cartRepository->find($countryId, Request::get('shippingType', '')); // if cart is empty go back to main checkout page if ($cart->count() == 0) { return Redirect::back()->with('paymentError', 'No items in your cart')->withInput(); } // convert cart to order $orderFactory = new OrderFactory(); $order = $orderFactory->fromCart($cart, $customer, $cartValuesTransformer, $cartItemValuesTransformer, Request::all()); // persist the order if (!($order = $orderRepository->save($order))) { return Redirect::back()->with('paymentError', 'Payment Has NOT Been Taken - unable to create order, please try again'); } Session::set('orderOneTimeToken', $order->getOneTimeToken()); return $order->getTotalPrice() > 0 ? $this->takePayment($orderRepository, $order) : $this->noPaymentNecessary($order); }