From 941e3a3b72e39831fc5b246141be9bae96fad5ab Mon Sep 17 00:00:00 2001 From: merdan Date: Wed, 9 Mar 2022 11:43:45 +0500 Subject: [PATCH] fixing pickup --- .../Sarga/API/Http/Controllers/Checkout.php | 2 +- packages/Sarga/Shop/src/ShoppingCart.php | 77 +++++++++++++++++++ packages/Webkul/Checkout/src/Cart.php | 8 +- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/packages/Sarga/API/Http/Controllers/Checkout.php b/packages/Sarga/API/Http/Controllers/Checkout.php index d4c7e7d73..db86b8a5f 100644 --- a/packages/Sarga/API/Http/Controllers/Checkout.php +++ b/packages/Sarga/API/Http/Controllers/Checkout.php @@ -56,7 +56,7 @@ class Checkout extends CheckoutController } $shippingMethod = $request->get('shipping_method'); - if (Cart::hasError() || ! Cart::saveCustomerAddress($data) || ! Shipping::collectRates() + if (Cart::hasError() || ! Cart::saveAddress($data) || ! Shipping::collectRates() || ! $shippingMethod || ! Cart::saveShippingMethod($shippingMethod)) { return response(['message'=>'error. wrong shipment method or address'],400); diff --git a/packages/Sarga/Shop/src/ShoppingCart.php b/packages/Sarga/Shop/src/ShoppingCart.php index 9fc28970a..3777bd43a 100644 --- a/packages/Sarga/Shop/src/ShoppingCart.php +++ b/packages/Sarga/Shop/src/ShoppingCart.php @@ -2,9 +2,86 @@ namespace Sarga\Shop; +use Sarga\Shop\Repositories\RecipientRepository; use Webkul\Checkout\Models\CartAddress; class ShoppingCart extends \Webkul\Checkout\Cart { + public function saveAddress($address, $shipment) : bool + { + if (! $cart = $this->getCart()) { + return false; + } + + if($shipment !== 'pickup_pickup'){ + $this->saveMusteriAddress($address,$cart); + } + else + $this->saveRecipientAddress($address,$cart); + + $this->assignCustomerFields($cart); + + return $cart->save(); + } + + /** + * Save customer address. + * + * @param array $data + * @return bool + * @throws \Prettus\Validator\Exceptions\ValidatorException + */ + private function saveMusteriAddress($data,$cart) + { + $billingAddressData = $this->gatherBillingAddress($data, $cart); + + $shippingAddressData = $this->gatherShippingAddress($data, $cart); + + $this->linkAddresses($cart, $billingAddressData, $shippingAddressData); + + } + + public function saveRecipientAddress($data,$cart) + { + + $recipientAddressRepository = app(RecipientRepository::class); + + $customerAddress = []; + + if (isset($data['billing']['address_id']) && $data['billing']['address_id']) + { + $customerAddress = $recipientAddressRepository->findOneWhere(['id' => $data['billing']['address_id']]) + ->toArray(); + } + + $billingAddress = array_merge( + $customerAddress, + $data['billing'], + ['cart_id' => $cart->id], + $this->fillAddressAttributes($data['billing']) + ); + + $this->linkAddresses($cart,$billingAddress,$billingAddress); + + } + /** + * Fill address attributes. + * + * @return array + */ + private function fillAddressAttributes(array $addressAttributes): array + { + $attributes = []; + + $cartAddress = new CartAddress(); + + foreach ($cartAddress->getFillable() as $attribute) { + if (isset($addressAttributes[$attribute])) { + $attributes[$attribute] = $addressAttributes[$attribute]; + } + } + + return $attributes; + } } \ No newline at end of file diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 8c41957cd..4d0de503c 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -786,7 +786,7 @@ class Cart * * @param \Webkul\Checkout\Contracts\Cart $cart */ - private function assignCustomerFields(\Webkul\Checkout\Contracts\Cart $cart): void + public function assignCustomerFields(\Webkul\Checkout\Contracts\Cart $cart): void { if ( auth()->guard()->check() @@ -923,7 +923,7 @@ class Cart * @param $cart * @return array */ - private function gatherBillingAddress($data, \Webkul\Checkout\Models\Cart $cart): array + public function gatherBillingAddress($data, \Webkul\Checkout\Models\Cart $cart): array { $customerAddress = []; @@ -952,7 +952,7 @@ class Cart * @param \Webkul\Checkout\Cart|null $cart * @return array */ - private function gatherShippingAddress($data, \Webkul\Checkout\Models\Cart $cart): array + public function gatherShippingAddress($data, \Webkul\Checkout\Models\Cart $cart): array { $customerAddress = []; @@ -982,7 +982,7 @@ class Cart * @param array $shippingAddressData * @throws \Prettus\Validator\Exceptions\ValidatorException */ - private function linkAddresses( + public function linkAddresses( \Webkul\Checkout\Models\Cart $cart, array $billingAddressData, array $shippingAddressData