From 75b9a65757ab5c6038878ab49d01eaf78da21d71 Mon Sep 17 00:00:00 2001 From: devansh bawari Date: Fri, 15 Jan 2021 11:28:05 +0530 Subject: [PATCH] Squashed All Commits --- .../src/Repositories/OrderRepository.php | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/Webkul/Sales/src/Repositories/OrderRepository.php b/packages/Webkul/Sales/src/Repositories/OrderRepository.php index 3ee08416b..5d63a00ce 100755 --- a/packages/Webkul/Sales/src/Repositories/OrderRepository.php +++ b/packages/Webkul/Sales/src/Repositories/OrderRepository.php @@ -2,13 +2,13 @@ namespace Webkul\Sales\Repositories; -use Illuminate\Container\Container as App; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Event; -use Webkul\Core\Eloquent\Repository; use Webkul\Sales\Contracts\Order; -use Webkul\Sales\Models\Order as OrderModel; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Webkul\Core\Eloquent\Repository; +use Illuminate\Support\Facades\Event; use Webkul\Shop\Generators\Sequencer; +use Illuminate\Container\Container as App; use Webkul\Shop\Generators\OrderNumberIdSequencer; class OrderRepository extends Repository @@ -57,10 +57,11 @@ class OrderRepository extends Repository } /** - * @param array $data + * This method will try attempt to a create order. + * * @return \Webkul\Sales\Contracts\Order */ - public function create(array $data) + public function createOrderIfNotThenRetry(array $data) { DB::beginTransaction(); @@ -114,16 +115,35 @@ class OrderRepository extends Repository Event::dispatch('checkout.order.save.after', $order); } catch (\Exception $e) { + + /* rolling back first */ DB::rollBack(); - throw $e; + /* storing log for errors */ + Log::error('OrderRepository:createOrderIfNotThenRetry: ' . $e->getMessage(), + ['data' => $data]); + + /* recalling */ + $this->createOrderIfNotThenRetry($data); + + } finally { + + /* commit in each case */ + DB::commit(); } - DB::commit(); - return $order; } + /** + * @param array $data + * @return \Webkul\Sales\Contracts\Order + */ + public function create(array $data) + { + return $this->createOrderIfNotThenRetry($data); + } + /** * @param int $orderId * @return \Webkul\Sales\Contracts\Order